Intropy.Topology.Aspire
1.0.1
dotnet add package Intropy.Topology.Aspire --version 1.0.1
NuGet\Install-Package Intropy.Topology.Aspire -Version 1.0.1
<PackageReference Include="Intropy.Topology.Aspire" Version="1.0.1" />
<PackageVersion Include="Intropy.Topology.Aspire" Version="1.0.1" />
<PackageReference Include="Intropy.Topology.Aspire" />
paket add Intropy.Topology.Aspire --version 1.0.1
#r "nuget: Intropy.Topology.Aspire, 1.0.1"
#:package Intropy.Topology.Aspire@1.0.1
#addin nuget:?package=Intropy.Topology.Aspire&version=1.0.1
#tool nuget:?package=Intropy.Topology.Aspire&version=1.0.1
Intropy.Topology.Aspire
The .NET Aspire run backend for Intropy.Topology.
It turns a validated SystemTopology into a local, F5-able Aspire application with Dapr. At AppHost startup it:
- discovers the validated system definition from the supplied assembly;
- generates Dapr components and per-component runtime configuration into a temporary directory; and
- translates the topology to Aspire resources: one Redis container for pub/sub and one sibling .NET project plus Dapr sidecar for each topology component.
The adapter is deliberately one-way: Aspire receives ordinary resources; it does not need to understand the topology model.
Usage
One SystemHost entry point selects the run or generation backend from the same discovered system definition:
using System.Reflection;
using Intropy.Topology.Aspire;
using Intropy.Topology.Generation;
var assembly = Assembly.GetExecutingAssembly();
return args is ["run", ..] or []
? await IntropyAspire.RunAsync(assembly, args) // Aspire + DCP
: await IntropyGenerate.RunAsync(assembly, args); // generate | check | graph
Project convention
Each topology component is resolved to a sibling project relative to the SystemHost:
order-extractorresolves to../order-extractor/src/*.csprojwhensrccontains exactly one project;- otherwise it resolves to
../order-extractor/order-extractor.csproj.
A component's standalone Dapr resources live at ../<component>/local/dapr-components/. For Aspire runs, they are staged with generated resources at the stable, inspectable path obj/dapr-components/<component>/; generated resources replace local resources with the same Dapr metadata.name.
Runtime behavior
- Redis backs development pub/sub. It is published at host port
6380because generated Dapr resources targetlocalhost:6380;dapr initcommonly reserves Redis's default6379. - Components receive
INTROPY__COMPONENTandINTROPY__CONFIGenvironment variables. The latter points to that component's generated.intropy.jsonfile. - A publisher waits for its subscribers during startup when the topic graph is acyclic. Dapr sidecars also wait for Redis readiness before they start.
- Extractors and transactional integrations run to completion: the framework runners (
RunToCompletionRunner,TransactionalIntegrationRunner) shut the Dapr sidecar down when the run ends, so a Finished/Exited resource state is a completed run, not a failure. Their sidecars are exempt from the host's sidecar-recovery restarts; a resident component's (a loader's) early sidecar exit is still recovered. - A transactional integration's internal hop — its receive pipeline publishing to a component-owned topic and its send pipeline subscribing to it — is minted by the topology as the component's
InternalQueue(internal-<component>pubsub,hoptopic). It is workload shape, not an inter-component edge, so it never appears inPublishes/SubscribesorSystemTopology.Topics, and the topic completeness rules neither see nor warn about it. Generation emits its pubsub component (Redis, scoped to exactly the owning component) and carries the names in the component's.intropy.json; the framework runner defaultsTransactionalIntegrationOptions.DaprPubSubName/DaprTopicNamefrom that config. Nolocal/dapr-components/entry is required.
Prerequisites
- An AppHost project using the .NET Aspire SDK.
- Docker.
- The Dapr CLI initialized locally:
dapr init.
Scope
This package implements the repository's minimal topology model. Development overrides, external-system mocks, Microcks, API mocking, and additional transport/runtime backends remain on the full-topology branch; they are not supported here.
| 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
- Aspire.Hosting (>= 13.5.3)
- CommunityToolkit.Aspire.Hosting.Dapr (>= 13.0.0)
- Intropy.Topology (>= 1.0.1)
- Intropy.Topology.Generation (>= 1.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.1 | 108 | 9/9/2026 |
| 1.0.1-beta.1 | 64 | 9/9/2026 |
| 1.0.0 | 97 | 9/8/2026 |
| 0.4.6 | 114 | 8/23/2026 |
| 0.4.5 | 104 | 8/21/2026 |
| 0.4.4 | 102 | 8/21/2026 |
| 0.4.2 | 113 | 8/18/2026 |
| 0.4.1 | 110 | 8/14/2026 |
| 0.4.0 | 109 | 8/14/2026 |
| 0.3.0 | 105 | 8/14/2026 |
| 0.3.0-beta.2 | 84 | 8/12/2026 |
| 0.3.0-beta.1 | 71 | 8/12/2026 |
| 0.2.1 | 112 | 8/11/2026 |
| 0.2.0 | 109 | 8/11/2026 |