Inlet Getting Started
Overview
Use this page when you need the first verified Inlet client startup path.
For full Mississippi Blazor clients, the verified startup pattern is:
- create the Mississippi client builder with
AddMississippiClient() - compose Reservoir-level registrations inside
client.Reservoir(...) - add Inlet client registrations on that Reservoir builder
- optionally add SignalR-based projection synchronization through
AddInletBlazorSignalR(...)
Choose The Right Entry Point
- Full Mississippi client app:
builder.AddMississippiClient(...) - Reservoir-only state-management app:
builder.AddReservoir()
Use AddMississippiClient() when the app is using Mississippi as the full client composition root. Stay with AddReservoir() when the app only wants Reservoir's client-state subsystem without the higher-level Mississippi client builder.
This layering is intentional:
First Working Setup
This example matches the current Spring client startup shape.
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Mississippi.Hosting.Client;
using Mississippi.Inlet.Client;
WebAssemblyHostBuilder builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.AddMississippiClient(client =>
{
client.AddMyDomainClient();
client.Reservoir(reservoir =>
{
reservoir.AddInletClient();
reservoir.AddInletBlazorSignalR(signalR => signalR
.WithHubPath("/hubs/inlet")
.ScanProjectionDtos(typeof(MyProjectionDto).Assembly));
});
});
Migration From The Old Client Root
Before:
IReservoirBuilder reservoir = builder.AddReservoir();
reservoir.AddMyDomainClient();
reservoir.AddInletClient();
After:
builder.AddMississippiClient(client =>
{
client.AddMyDomainClient();
client.Reservoir(reservoir =>
{
reservoir.AddInletClient();
});
});
The builder-based receiver is verified in:
What Inlet Adds To The Reservoir Builder
The verified client-side extensions are:
AddInletClient()to register projection state, projection registry support, and the client store adapterAddProjectionPath<T>(path)to register explicit projection-path mappingsAddInletBlazor()for Blazor-specific client composition pointsAddInletBlazorSignalR(...)to configure SignalR-driven projection refresh
Generated Client Composition
Inlet client generators now emit builder-based registration methods.
Depending on the generated surface for a domain, those methods can include:
Add{Aggregate}AggregateFeature()Add{Saga}SagaFeature()AddProjectionsFeature()Add{Domain}Client()
The feature-level methods extend IReservoirBuilder. The domain-level method extends MississippiClientBuilder and routes its work through client.Reservoir(...).
When To Stay In Inlet
Stay in Inlet when the concern is alignment across client fetch, projection metadata, generated registrations, SignalR notifications, and projection DTO discovery.
Move to Reservoir when the issue is only about client-state composition and not about projection delivery or generated cross-layer alignment.
Summary
Inlet client startup for full Mississippi apps now begins with AddMississippiClient(), then composes Reservoir and Inlet registrations through client.Reservoir(...). Reservoir-only apps should continue to begin with AddReservoir().
Next Steps
- Read Inlet How To for a full builder-composition walkthrough.
- Use Inlet Reference for the exact public and generated registration surface.
- Continue into the Spring Sample for a verified end-to-end client example.