Steeds vaker is .NET Aspire onderwerp van het gesprek. Het wordt vaak vergeleken met Docker Compose, een vergelijkbare oplossing die al jarenlang trouw wordt toegepast door ontwikkelaars. Maar wat zijn kenmerken van .NET Aspire, de grootste voordelen voor ontwikkelaars en tegen welke uitdagingen loop je mogelijk aan met de toepassing van het framework?
Nog even terug: wat is .NET Aspire?
.NET Aspire is als het ware een toolchain, waarmee je makkelijk Cloud-native applicaties lokaal kunt ontwikkelen, draaien én uiteindelijk deployen richting de Cloud. Het ontwikkelmodel voor distributed applications heeft als doel om de ontwikkelcyclus soepeler en makkelijker te laten verlopen. .NET Aspire is daarnaast open-source, wat betekent dat iedereen buiten Microsoft contributer kan zijn en waarde kan toevoegen aan deze oplossing.
Als je start in een nieuw team, zoals bij een klant of opdrachtgever, moet je altijd eerst de code lokaal werkend krijgen. Dat is in veel gevallen een flinke klus, want je moet de code downloaden, veel dingen installeren en vaak zijn er veel afhankelijkheden. Dat kost veel tijd en dat is zonde: je wil immers snel aan de slag. Aspire maakt het makkelijker om de code lokaal werkend te krijgen. Vaak werkt het al met één druk op de knop, omdat je tegenwoordig heel veel met containers werkt. Hier wordt met name Docker veel voor gebruikt. Heel veel belangrijke dingen, zoals databases, kunnen tegenwoordig ook in containers draaien. Maar ook jouw .NET-applicatie. Sterker nog, er zit zelfs native support in .NET om jouw applicatie in een Docker-Container te kunnen draaien zonder een hele Docker-configuratie te moeten schrijven. Over efficiëntie gesproken!
Lokaal draaien
Aspire maakt vaak gebruik van containers voor lokale orchestration, maar ondersteunt ook andere resource-typen zoals lokale processen en externe services. Dus stel: jij hebt een applicatie die een database aanroept, dan geef je dit aan in de Aspire orchestrator code - gewoon in het vertrouwde .NET. Wanneer je de orchestrator start, zal Aspire (in samenwerking met Docker) de juiste container voor de database provider downloaden en opstarten. Aspire zal daarnaast de connection string in je applicatie aanpassen naar de connectie van de database, zodat dit direct werkt. Immers: Aspire weet welke database draait en kan zo het werk voor jou als developer versimpelen.
Met recente updates is de Aspire CLI beschikbaar gekomen, waarmee developers applicaties kunnen maken, configureren en draaien via commando’s zoals aspire new en aspire run.
Deployen naar de Cloud
.NET Aspire speelt ook een grote rol in het deployen naar de Cloud. Voor deployment naar Azure wordt vaak gebruikgemaakt van Azure Developer CLI, die templates genereert voor infrastructuur (zoals Bicep) en deploy workflows ondersteunt. CI/CD pipelines worden doorgaans ingericht via Azure DevOps of GitHub Actions.
Vanuit Azure Developer CLI kan je een base template genereren voor je Aspire project, zodat je pipelines makkelijk kan draaien. In Azure zullen jouw applicaties als Azure Container Apps (ACA) gedeployed worden, inclusief de benodigde resources eromheen.
Wat zijn de grootste voordelen van .NET Aspire?
Dat zijn er best wel wat. Nog even praktisch: Aspire is een opiniated toolchain. Dit betekent dat er een aantal slimme mensen zijn die hier goed over hebben nagedacht en best practices hebben uitgezocht. Iedereen heeft er een eigen mening over, dus dit kan ook betekenen dat je er als ontwikkelaar soms anders over denkt. Geen zorgen: je kan een hoop aanpassen naar je eigen wensen!
Maar wat zijn volgens ons de grootste voordelen van de toolchain?
- Telemetry. .NET Aspire gebruikt telemetry om te bepalen hoe snel een service werkt en de applicatie draait. Hoelang duurt een request? Hoeveel request komen er binnen? Dit gaat om bepaalde endpoints, logs, traces en metrics. Dit maakt dat applicaties makkelijker en sneller te debuggen zijn. Telemetry zit standaard in je Aspire-project ingebouwd, dus je hoeft er helemaal niks voor te doen. Nog beter: de telemetry gebruikt de OpenTelemetry-standard, waardoor je deze gegevens ook kunt verbinden met andere dashboards buiten Aspire, zoals Prometheus;
- Dashboard voor lokaal ontwikkelwerk. Alle telemetry en traces kan je inzien in een volledig dashboard. Dit geldt ook voor logging, wat erg goed geïntegreerd is. Wel belangrijk: het dashboard is primair bedoeld voor lokale development en debugging. Telemetry wordt standaard tijdelijk beschikbaar gesteld en is niet bedoeld als langdurige opslag. Die goede integratie van logging is één van de redenen waarom Aspire steeds vaker gebruikt wordt. Tot voor kort werd Docker Compose heel veel toegepast, want daarbinnen kan je meerdere containers in één keer starten. Aspire lijkt daar echter heel veel op, behalve dat Compose een YAML-bestand gebruikt, terwijl Aspire het vertrouwde .NET toepast;
- Breed toepassingsgebied. .NET Aspire is niet alleen toepasbaar op .NET-applicaties. Je kunt het ook gebruiken voor bijvoorbeeld Python- of Java-applicaties, Als je dus als organisatie een groot systeem hebt waar niet alles in .NET draait, kan je alsnog .NET Aspire gebruiken.
Support
Als we het hebben over de ondersteuning rondom .NET in het algemeen, kan je dat opdelen in twee typen:
- Long Term Support (LTS);
- Short Term Support (STS).
Aspire volgt momenteel een snelle releasecyclus waarbij de focus ligt op de meest recente versie. Hierdoor is het belangrijk om up-to-date te blijven met nieuwe releases.
.NET Aspire 9.0 is nóg stabieler en beter dan de voorganger, met meer functionaliteit. Hierdoor is het steeds interessanter voor ontwikkelaars, bijvoorbeeld ten opzichte van Docker Compose. Echter willen veel organisaties die met .NET werken alleen in de Long Term Support-versies gebruiken. Het Aspire-team heeft daarom Aspire 9.0 óók compatible gemaakt met .NET 8, waardoor ontwikkelaars die graag Aspire willen gebruiken, dit gewoon kunnen doen.
Waarom was niet iedereen direct fan van .NET Aspire?
In het begin was .NET Aspire nog niet zo stabiel. En sowieso is er sprake van een mindset change als je overgaat van Docker Compose naar een nieuwe toolchain als .NET Aspire. Maar uiteindelijk merk je dat een nieuw ontwikkelmodel als dit ook steeds stabieler wordt en op de langere termijn zie je de competitieve voordelen. Een krachtige feature van .NET Aspire is de mogelijkheid om te zeggen “start applicaties Y pas op wanneer database X is opgestart”. De goede integratie met Aspire, Visual Studio, .NET en de Azure Cloud is erg krachtig en stelt developers in staat om productief te zijn en snel lokale Cloud-native applicaties te ontwikkelen.
Wat zijn grootste uitdagingen voor ontwikkelaars met het gebruik van .NET Aspire?
De grootste uitdaging is vooral dat .NET Aspire anders is, zeker als je gewend bent om met Docker Compose te werken. Echter, als je eenmaal gewend bent aan Aspire, wil je ook niet meer anders. Daarnaast is de ondersteuning soms nog een struikelpunt. Hoewel Aspire lokaal draait en het STS/LTS-verhaal niet érg belangrijk is hier (Aspire 9.0 draait immers ook op .NET 8 LTS), is momenteel support gefocust op de laatste versie. Hierdoor zal een team regelmatig de lokale Aspire orchestrator moeten updaten.
Microsoft probeert echter zo min mogelijk breaking changes door te voeren, waardoor een update naar een nieuwe versie in veel gevallen vaak pijnloos is en snel gaat. Erg fijn nieuws natuurlijk!
Conclusie
Al met al zorgt .NET Aspire voor meer structuur in het ontwikkelen en deployen richting de Cloud. En doordat het makkelijker gaat, kun je ook weer sneller aan de slag. Dit maakt het een fijn en stabiele toolchain voor ontwikkelaars, die veel voordelen met zich meebrengt.
Hoewel .NET Aspire functioneel overlap heeft met Docker Compose (zoals het opstarten en verbinden van meerdere services), is het geen directe vervanger. Waar Docker Compose zich richt op container orchestration, focust Aspire zich op de volledige developer experience, inclusief configuratie, observability en applicatiemodellering.
Meer weten over .NET Aspire, de toepassingen voor jouw organisatie of ontwikkelaars, of gewoon even sparren? Neem contact met ons op!

About the author
Niels is data engineer bij Innvolve en zet ruwe data om in waardevolle inzichten die organisaties helpen betere beslissingen te nemen.

