Skip to main content

OPEN SOURCE / THE .NET FLOW ENGINE

Control
the flow.

Make intent explicit.

A focused family of .NET packages for request dispatch, object mapping, diagnostics and testing. Compose only what your application needs.

MIT LICENSED · MODULAR PACKAGES · DOCUMENTED APIS

FIGURE 01 / REQUEST TO RESULTLIVE SIGNAL · CONTINUOUS
REQUESTPIPELINEHANDLERRESULT ↗
01 / DECLARE02 / COMPOSE03 / EXECUTE04 / VERIFY
THE SIGNAL MOVES. THE SYSTEM STAYS PUT.SEE HOW IT WORKS
01
Explicit by design.Declare behavior without guessing.
02
Composable by default.Choose the packages you need.
03
Predictable behavior.Verify handlers, mappings, and projections up front.

02 / FOLLOW THE ENGINE

The whole path.
In plain sight.

Walk through a documented AstraFlow capability. Switch flows, select any stage plinth, and inspect the synchronized C# lines. Conceptual shapes grounded in verified 2.3.0 packages.

Guided API illustration — conceptual source shapes, not live runtime telemetry
AstraFlow.Mediator · 2.3.0SIGNAL LIVE

A request, intentionally routed.

Read Mediator guide
01020304
01 OF 04CONTRACT

Declare the request and response contract

A typed IRequest<OrderCreated> record states the input and single response type up front without coupling domain contracts to a DI container.

AstraFlow.Mediator2.3.0IRequest<OrderCreated>
Orders/CreateOrderFlow.csLines 3–4
  1. using AstraFlow.Mediator;
  2. public sealed record CreateOrder(string Number) : IRequest<OrderCreated>;
  3. public sealed record OrderCreated(Guid Id, string Number);
  4. services.AddAstraFlowMediator(
  5. validateRequestCoverage: true,
  6. assemblyMarkerTypes: typeof(CreateOrderHandler));
  7. services.AddScoped(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>));
  8. public sealed class CreateOrderHandler : IRequestHandler<CreateOrder, OrderCreated>
  9. {
  10. public Task<OrderCreated> Handle(CreateOrder request, CancellationToken ct)
  11. => Task.FromResult(new OrderCreated(Guid.NewGuid(), request.Number));
  12. }
  13. // Inject ISender where code only dispatches requests
  14. OrderCreated created = await sender.Send(new CreateOrder("ORD-1042"), ct);

Every stage represents a documented responsibility, not measured execution timing.

Read the getting started guide

03 / ENGINEERED TO CONNECT

Three layers. One contract spine.

Every package occupies an explicit plane: shared abstractions sit above dispatch and mapping, grounded by static analyzers and deterministic test harnesses.

NuGet Suite · 2.3.0Browse package matrix ->
HAIRLINE ISOMETRIC STACK · AUTO-CYCLING
ACTIVE: 01 / INPUT — Declare intentClick any tier to elevate
  • Input contracts
  • Execution core
  • Verification base
  • Active conduit
Exploded z-axis spacing

Select Architectural Tier

Up / Down arrows or click

01 / INPUT · OWNING BOUNDARY

Exploded view

Declare intent

Application boundaries start with light, serializable request and notification interfaces. Projects share AstraFlow.Contracts across domain, client, and worker assemblies without pulling in mediator or runtime engines.

Key Type Contracts

  • IRequest<T>
  • IRequest
  • INotification
  • IStreamRequest<T>
  • IRequestContext

05 / THE DETAILS MATTER

Geometry with meaning.

Isometric relationships, connected systems, and precise motion — quietly supporting the engineering architecture, never replacing it.

LAYER 01 · CONTRACT SURFACEAstraFlow.Contracts

Isolates IRequest<T> and INotification DTO boundaries so shared assemblies remain dependency-free.

Figure caption: Exploded isometric architecture ready — move pointer across figure to inspect strata.

FIGURE 05 / EXPLODED STRATA STUDYCONTINUOUS CAD LOOP
FOCUS: 01 CONTRACTS PLANEPOINTER INTERACTIVE · WARM FOREST PLATE TOKENS

06 / READY WHEN YOU ARE

Begin with one
responsibility.

Read the guide. Choose the smallest useful dependency. Stay in control.