Intropy.Topology.Aspire
0.4.6
dotnet add package Intropy.Topology.Aspire --version 0.4.6
NuGet\Install-Package Intropy.Topology.Aspire -Version 0.4.6
<PackageReference Include="Intropy.Topology.Aspire" Version="0.4.6" />
<PackageVersion Include="Intropy.Topology.Aspire" Version="0.4.6" />
<PackageReference Include="Intropy.Topology.Aspire" />
paket add Intropy.Topology.Aspire --version 0.4.6
#r "nuget: Intropy.Topology.Aspire, 0.4.6"
#:package Intropy.Topology.Aspire@0.4.6
#addin nuget:?package=Intropy.Topology.Aspire&version=0.4.6
#tool nuget:?package=Intropy.Topology.Aspire&version=0.4.6
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.4.6)
- CommunityToolkit.Aspire.Hosting.Dapr (>= 13.0.0)
- Intropy.Topology (>= 0.4.6)
- Intropy.Topology.Generation (>= 0.4.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.