Cirreum.InvocationProvider 1.3.0

dotnet add package Cirreum.InvocationProvider --version 1.3.0
                    
NuGet\Install-Package Cirreum.InvocationProvider -Version 1.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cirreum.InvocationProvider" Version="1.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cirreum.InvocationProvider" Version="1.3.0" />
                    
Directory.Packages.props
<PackageReference Include="Cirreum.InvocationProvider" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cirreum.InvocationProvider --version 1.3.0
                    
#r "nuget: Cirreum.InvocationProvider, 1.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cirreum.InvocationProvider@1.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cirreum.InvocationProvider&version=1.3.0
                    
Install as a Cake Addin
#tool nuget:?package=Cirreum.InvocationProvider&version=1.3.0
                    
Install as a Cake Tool

Cirreum.InvocationProvider

NuGet Version NuGet Downloads GitHub Release License .NET

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

  1. Foundational L2 abstractions for the inbound seamIInvocationContext, IInvocationContextAccessor, InvocationContextAccessor (default AsyncLocal impl), InvocationSources in the root Cirreum.Invocation namespace. The persistent-connection sub-types (IInvocationConnection, IConnectionLifecycle, DisconnectInfo) live in the Cirreum.Invocation.Connections sub-namespace because they apply only to long-lived invocation sources. These are referenced by Cirreum.Services.Server and the spine — non-pluggable, always-on framework foundation.

  2. Provider-track abstractions for pluggable invocation sourcesInvocationProviderRegistrar abstract 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) — UserAccessor injects IInvocationContextAccessor; HTTP middleware constructs IInvocationContext per request.
  • Cirreum.Runtime.InvocationProvider (L4) — implements IInvocationBuilder; consumes InvocationProviderRegistrar machinery to compose L3 per-source impls.
  • Cirreum.Invocation.{Source} (L3, Phase 5) — per-source concrete registrars derive from InvocationProviderRegistrar.

App code does not normally reference this package directly — it shows up transitively through the runtime.

Contribution Guidelines

  1. Be conservative with new abstractions — the API surface must remain stable and meaningful.
  2. Limit dependency expansion — only add foundational, version-stable dependencies.
  3. Favor additive, non-breaking changes — breaking changes ripple through the entire ecosystem.
  4. Include thorough unit tests — all primitives and patterns should be independently testable.
  5. Document architectural decisions — context and reasoning should be clear for future maintainers.
  6. 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.

Version Downloads Last Updated
1.3.0 247 5/10/2026
1.2.0 138 5/9/2026
1.1.0 122 5/8/2026
1.0.1 83 5/7/2026
1.0.0 52 5/7/2026