Cirreum.InvocationProvider
1.3.0
dotnet add package Cirreum.InvocationProvider --version 1.3.0
NuGet\Install-Package Cirreum.InvocationProvider -Version 1.3.0
<PackageReference Include="Cirreum.InvocationProvider" Version="1.3.0" />
<PackageVersion Include="Cirreum.InvocationProvider" Version="1.3.0" />
<PackageReference Include="Cirreum.InvocationProvider" />
paket add Cirreum.InvocationProvider --version 1.3.0
#r "nuget: Cirreum.InvocationProvider, 1.3.0"
#:package Cirreum.InvocationProvider@1.3.0
#addin nuget:?package=Cirreum.InvocationProvider&version=1.3.0
#tool nuget:?package=Cirreum.InvocationProvider&version=1.3.0
Cirreum.InvocationProvider
Core abstractions library for the Cirreum Invocation framework.
Mental model
Cirreum.InvocationProvider is the server-side foundational peer to Cirreum.Core:
Cirreum.Core— cross-host foundation (identity, operation, conductor — works in Server, Wasm, Serverless).Cirreum.InvocationProvider— server-side foundation (inbound invocation seam — only meaningful where the framework receives invocations).
Both are L2 packages. Both are always-present in their applicable hosts. Neither references the other. Together they form the L2 Core layer that the spine and provider tracks build upon.
You can think of Cirreum.InvocationProvider as Cirreum.Core.Server in spirit (though we keep its actual name aligned with the Provider-track convention because it also serves the second role below).
Two roles in one package
Foundational L2 abstractions for the inbound seam —
IInvocationContext,IInvocationContextAccessor,InvocationContextAccessor(default AsyncLocal impl),InvocationSourcesin the rootCirreum.Invocationnamespace. The persistent-connection sub-types (IInvocationConnection,IConnectionLifecycle,DisconnectInfo) live in theCirreum.Invocation.Connectionssub-namespace because they apply only to long-lived invocation sources. These are referenced byCirreum.Services.Serverand the spine — non-pluggable, always-on framework foundation.Provider-track abstractions for pluggable invocation sources —
InvocationProviderRegistrarabstract base + settings hierarchy. L3 per-source packages (Cirreum.Invocation.SignalR,.WebSockets, future.gRPC) derive from these to plug new invocation sources in alongside the framework default (HTTP).
What's in the box
| Type | Role |
|---|---|
IInvocationContext |
Per-invocation ambient context |
IInvocationContextAccessor / InvocationContextAccessor |
AsyncLocal-backed singleton accessor (matches IHttpContextAccessor convention) |
InvocationSources |
Const class with framework-known source values |
InvocationProviderRegistrar<,> |
Abstract base for L3 per-source registrars (two-phase: Register + Map) |
InvocationProviderSettings<> / InvocationProviderInstanceSettings |
Settings hierarchy bound from Cirreum:Invocation:Providers:{Source}:Instances:{key} |
IInvocationConnection (Cirreum.Invocation.Connections) |
Per-connection state for long-lived sources; exposes Abort() and typed SendAsync<T> for server-initiated push |
IConnectionLifecycle (Cirreum.Invocation.Connections) |
App-side OnConnectedAsync / OnDisconnectedAsync hook |
DisconnectInfo (Cirreum.Invocation.Connections) |
Adapter-populated disconnect circumstances passed to OnDisconnectedAsync |
What lives elsewhere
| Type | Lives in |
|---|---|
IInvocationBuilder + impl + AddInvocation() extension |
Cirreum.Runtime.InvocationProvider (L4) |
Typed Items-slot extensions (Get/SetAuthenticatedScheme, etc.) |
Cirreum.Runtime.InvocationProvider (L4) |
Upgrade-time Items-slot copy helper |
Cirreum.Runtime.InvocationProvider (L4) |
HTTP→IInvocationContext middleware + UserAccessor refactor |
Cirreum.Services.Server (L3) |
| Per-source concrete registrars (SignalR, WebSocket, …) | Cirreum.Invocation.{Source} (L3, Phase 5) |
App-facing Add{Source}<T>(key) extensions |
Cirreum.Runtime.Invocation.{Source} (L5, Phase 5) |
Who consumes it
Cirreum.Services.Server(L3) —UserAccessorinjectsIInvocationContextAccessor; HTTP middleware constructsIInvocationContextper request.Cirreum.Runtime.InvocationProvider(L4) — implementsIInvocationBuilder; consumesInvocationProviderRegistrarmachinery to compose L3 per-source impls.Cirreum.Invocation.{Source}(L3, Phase 5) — per-source concrete registrars derive fromInvocationProviderRegistrar.
App code does not normally reference this package directly — it shows up transitively through the runtime.
Contribution Guidelines
- Be conservative with new abstractions — the API surface must remain stable and meaningful.
- Limit dependency expansion — only add foundational, version-stable dependencies.
- Favor additive, non-breaking changes — breaking changes ripple through the entire ecosystem.
- Include thorough unit tests — all primitives and patterns should be independently testable.
- Document architectural decisions — context and reasoning should be clear for future maintainers.
- Follow .NET conventions — use established patterns from
Microsoft.Extensions.*libraries.
Versioning
Follows Semantic Versioning. Given its foundational role, major bumps are rare and carefully considered.
License
MIT — see LICENSE.
Cirreum Foundation Framework
Layered simplicity for modern .NET
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Cirreum.Providers (>= 1.1.1)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on Cirreum.InvocationProvider:
| Package | Downloads |
|---|---|
|
Cirreum.Services.Server
The Service Library for Servers (Web Api or Web App). |
|
|
Cirreum.Runtime.InvocationProvider
The Cirreum Invocation Provider runtime helper — config-driven registration that bootstraps any InvocationProviderRegistrar from Cirreum:Invocation:Providers:{ProviderName}, plus the IInvocationBuilder scope object, the InvocationProviderMapping deferred-mapping record, and typed Items-slot extensions on IInvocationContext. App-facing entry points (AddSignalRInvocation, AddInvocation, etc.) live in the L5 Runtime Extensions packages. |
|
|
Cirreum.Invocation.SignalR
SignalR invocation source for the Cirreum Invocation family — concrete InvocationProviderRegistrar that maps SignalR Hubs from Cirreum:Invocation:Providers:SignalR configuration and surfaces a HubFilter that publishes IInvocationContext per Hub method invocation. |
|
|
Cirreum.Invocation.WebSockets
WebSocket invocation source for the Cirreum framework — transport adapter that publishes IInvocationContext per WebSocket frame, materializes IWebSocketConnection per connection, dispatches IConnectionLifecycle callbacks, and exposes typed-payload server push through IInvocationConnection.SendAsync (or raw frame writes through IWebSocketConnection.SendBytesAsync). |
GitHub repositories
This package is not used by any popular GitHub repositories.