FluxFlow.Composition
6.0.0
See the version list below for details.
dotnet add package FluxFlow.Composition --version 6.0.0
NuGet\Install-Package FluxFlow.Composition -Version 6.0.0
<PackageReference Include="FluxFlow.Composition" Version="6.0.0" />
<PackageVersion Include="FluxFlow.Composition" Version="6.0.0" />
<PackageReference Include="FluxFlow.Composition" />
paket add FluxFlow.Composition --version 6.0.0
#r "nuget: FluxFlow.Composition, 6.0.0"
#:package FluxFlow.Composition@6.0.0
#addin nuget:?package=FluxFlow.Composition&version=6.0.0
#tool nuget:?package=FluxFlow.Composition&version=6.0.0
FluxFlow.Composition
Canonical application definitions, explicit component registration, addressing, validation, link compilation, and code-first runtime ownership. The package is Engine-independent.
Application Shape
{
"Resources": {},
"Workflows": {
"Orders": {
"Receive": { "Type": "source" },
"Handle": {
"Type": "handler",
"Input": "Receive.Output"
}
}
}
}
Resources, workflows, and components are named by object keys. Components are flat; there are no maintained Composition, Nodes, or root Links wrappers. Addresses are ordinal and case-sensitive. Links support fan-in, fan-out, conditions, cross-workflow addresses, and explicit bounded signal feedback. Ordinary data-processing cycles are rejected.
Code-First Authoring
The canonical builders support either direct handle capture or chain-first capture without introducing another model:
var application = new ApplicationDefinitionBuilder()
.AddResourceGroup("Messaging", out var messaging)
.AddWorkflow("Orders", out var orders);
messaging.AddResource<object>("Client", "host.external", out var client);
orders
.AddComponent("Source", "orders.source", out var source)
.AddComponent("Sink", "orders.sink", out var sink)
.Connect(
source.Output<int>("Output"),
sink.Input<int>("Input"));
var definition = application.Build();
Each fluent add delegates to the corresponding handle-returning method,
captures the committed typed handle, and returns the same parent builder.
Handles remain ordinary definition references. Component order does not imply
topology: links stay explicit, workflow links stay local, resource groups stay
resource-only, and Build() returns and freezes the same immutable
ApplicationDefinition used by JSON configuration.
ApplicationLinkCompiler owns parsing, address resolution, validation,
normalization, and deterministic ordering. Its result exposes executable
Links plus resolved Declarations for persistence. Serialize edited
ApplicationLinkDeclarationProjection values with
ApplicationLinkCompiler.SerializeDeclarations(...) so hosts and Designer use
the same exact Port / Condition grammar. Composition grants no production
friend access to Designer or Engine.
ComponentDescriptor declares one canonical type, typed
FlowMessage<T> ports, link cardinality, processing capabilities, and an
activation delegate. Author runtime-only descriptors through the flat
AddRuntimeComponent(...) callback.
DI builds one immutable ComponentCatalog; application validation, link
compilation, Engine activation, and Designer metadata all consume that catalog.
Errors travel on normal outputs. Application revisions own component and link
lifecycle but do not own external resources supplied by the host.
services.AddFluxFlowComponents().AddRuntimeComponent(
"orders.handle",
component =>
{
component.UseFactory(CreateHandlerAsync);
component.AddInput<Order>("Input");
component.AddOutput<OrderResult>("Output");
});
Composition adapters that materialize application resources implement
IApplicationResourceRegistrar. Its context exposes the complete definition,
revision identity, host services, and revision-owned IServiceCollection.
Canonical keyed DI helpers live in
FluxFlow.Composition.DependencyInjection; Engine consumes these low-level
contracts without making adapters depend on a hosting package.
Canonical workflow JSON selects an optional semantic Processing profile.
Composition maps that profile centrally to capacity, parallelism, and ordering.
Direct C# callers may still provide the technical options explicitly; those
compatibility settings are not primary workflow or Designer concepts.
ApplicationRuntime waits for all upstreams before completing a shared input,
faults fan-in once on the first upstream fault, and attempts all cleanup before
aggregating teardown failures.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- FluxFlow.Mapping (>= 1.0.3)
- FluxFlow.Nodes (>= 4.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
-
net8.0
- FluxFlow.Mapping (>= 1.0.3)
- FluxFlow.Nodes (>= 4.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- System.Threading.Tasks.Dataflow (>= 9.0.4)
NuGet packages (24)
Showing the top 5 NuGet packages that depend on FluxFlow.Composition:
| Package | Downloads |
|---|---|
|
FluxFlow.Engine
Canonical FluxFlow application runtime assembler with transactional revisions, stable addressable ports, conditional routing, system events, and diagnostics. |
|
|
FluxFlow.Components.Designer
Reusable component metadata and canonical application editing contracts for FluxFlow. |
|
|
FluxFlow.Composition.Hosting
Optional hosting bridge for FluxFlow.Composition that builds standalone compositions from DI/configuration, starts them with host lifecycle, and resolves adapter-owned keyed resources. |
|
|
FluxFlow.Fluent
Type-safe, code-first fluent DSL for composing FluxFlow standalone nodes into a runnable graph — Flow.From(source).Then(node).To(sink) with compile-time-checked wiring, branching, and fan-in. Reuses the FluxFlow.Composition runtime. |
|
|
FluxFlow.Components.Mqtt.Composition
Canonical FluxFlow Composition resources and nodes for provider-neutral MQTT client control, publication, subscriptions, and client events. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 7.0.0-rc.1 | 295 | 8/9/2026 |
| 6.0.0 | 890 | 8/3/2026 |
| 1.2.0 | 204 | 7/3/2026 |
| 1.1.0 | 546 | 7/3/2026 |
| 1.0.9 | 626 | 7/2/2026 |
Requires canonical definitions and exact identities; adds canonical link declaration projections and serialization; removes production friend access.