NuGet ยท nuget

Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions

Neutral Eltheon contracts shared by Core, feature packages, WebUi, hosts, and plugin infrastructure.

Install

Install-Kommandos

dotnet add package Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions --version 0.9.2
<PackageReference Include="Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions" Version="0.9.2" />
paket add Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions --version 0.9.2
Install-Package Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions -Version 0.9.2

README

Vorschau

Redeon.SuperSiteEngineCore.Web.Eltheon.Core.Abstractions

Stable, dependency-light contract package for Eltheon core infrastructure, feature packages, Razor UI packages, templates, hosts, and future PluginSDK alignment.

This package contains shared framework language only. It intentionally has no dependencies on concrete feature packages, WebUi, templates, hosts, PluginSDK projects, EF Core, Razor, MVC, or concrete runtime services.

Purpose

Use Core.Abstractions when multiple Eltheon packages need the same stable concept but must remain independently upgradeable NuGet packages.

Typical examples:

  • navigation contributions
  • permission declarations
  • event bus contracts and event metadata
  • metrics and tracing facades
  • notification and realtime publishing ports
  • permission cache invalidation ports

Core.Abstractions is not an implementation package. Implementations remain in the owning feature package, host, or WebUi package.

Included Contract Areas

  • EltheonNavigationEntry
  • EltheonNavigationEntryType
  • IEltheonNavigationProvider
  • IEltheonNavigationRegistry

Feature packages use these types to contribute Admin/User/Docs navigation without referencing Core.WebUi or the template shell.

Permissions

  • EltheonPermissionDefinition
  • EltheonPermissionDefinitionFactory
  • IEltheonPermissionProvider
  • IEltheonPermission
  • EltheonPermissionSet
  • EltheonPermissionGrant
  • EltheonPermissionRiskLevel
  • IEltheonPermissionCacheInvalidator

Feature packages declare permissions here. Concrete storage, synchronization, admin UI, and role integration remain owned by the Permissions and Identity features.

Events

  • IEvent
  • IChangeSetEvent
  • IEventBus
  • IEventProvider
  • IEventEnvelopeProvider
  • IEventEnvelopeFactory
  • IEventRegistry
  • IEventTransport
  • IEventContextAccessor
  • EltheonEventEnvelope
  • EventMetadata
  • event classification enums such as EventScope, EventDurability, EventVisibility, EventSeverity, EventPriority, EventResult, and EventActorType

The Events feature provides the concrete EventBus implementation. Other features can publish or consume event contracts through Core.Abstractions without referencing the Events package only for interfaces.

Metrics

  • IMetrics
  • ITracer
  • IMetricsExporterState

The Metrik feature provides OpenTelemetry and exporter wiring. Features that only record counters, gauges, histograms, or spans should depend on Core.Abstractions.

Notifications and Realtime

  • IEltheonNotificationPublisher
  • EltheonNotificationScope
  • EltheonNotificationSeverity
  • EltheonNotificationCategoryKeys
  • IEltheonAdminRealtimePublisher
  • IEltheonRealtimeNotificationPublisher
  • EltheonRealtimeNotification

These ports let features emit admin updates or notifications without referencing Notifications, SignalR, or any concrete UI transport package.

Usage

public sealed class MyFeatureNavigationProvider : IEltheonNavigationProvider
{
    public IEnumerable<EltheonNavigationEntry> GetEntries()
    {
        yield return new EltheonNavigationEntry
        {
            Key = "my-feature.admin",
            Area = "Admin",
            LabelKey = "Navigation.MyFeature",
            FallbackLabel = "My feature",
            Page = "/MyFeature/Index",
            Icon = "box"
        };
    }
}
public sealed class MyService
{
    private readonly IEventBus? _eventBus;
    private readonly IEltheonNotificationPublisher? _notifications;

    public MyService(IEventBus? eventBus = null, IEltheonNotificationPublisher? notifications = null)
    {
        _eventBus = eventBus;
        _notifications = notifications;
    }
}

Boundary Rules

  • Do not place EF models, Razor Pages, TagHelpers, database contexts, host configuration, plugin implementation types, or feature services in this package.
  • Do not add references from Core.Abstractions to feature packages, WebUi, templates, hosts, or PluginSDK.
  • Add only the smallest stable contract needed to remove concrete package coupling.
  • If a type is only useful inside one feature implementation, it belongs in that feature package.

For governance rules, see docs/Eltheon_Core_Abstractions_Rulebook.md.