Bild von .NET Aspire revolutioniert die Entwicklung verteilter Anwendungen

27. Mär 2025

.NET Aspire revolutioniert die Entwicklung verteilter Anwendungen

.NET Aspire optimiert die Entwicklung verteilter Anwendungen, indem es komplexe Konfigurationen vereinfacht, die Integration von OpenTelemetry für effektive Überwachung ermöglicht und das Deployment in die Azure-Cloud erleichtert.

Die Entwicklung verteilter Anwendungen kann ohne unterstützende Tools sehr anspruchsvoll sein. Zu den grössten Herausforderungen gehören manuelle Konfiguration, unübersichtliche Abhängigkeiten, aufwendige Setups für lokale Tests sowie hoher Aufwand für Logging, Tracing und Service-Kommunikation. Da setzt .NET Aspire an und vereinfacht den Entwicklungsprozess erheblich.

Wie das im Detail funktioniert, demonstrierten Rainer Stropek, IT-Experte und Microsoft Regional Director, und Simeï Steiner, Software-Engineer bei uns, im Cudos-Webinar mit praktischen Beispielen.

Konfiguration und Orchestrierung

Zuerst wurde demonstriert, wie man eine neue .NET Aspire Anwendung von Grund auf erstellt. Dazu kann mit dem .NET CLI Befehl

`dotnet new aspire`

ein Aspire Template erstellt werden. Nun erscheinen die zwei Hauptprojekte, auf denen die Applikation basiert: AppHost und ServiceDefaults.

AppHost

Das AppHost-Projekt dient als Einstiegspunkt und orchestriert das Zusammenspiel aller anderen Ressourcen der Applikation. Hier werden Ressourcen instanziert und Abhängigkeiten definiert.

ServiceDefaults

Das ServiceDefaults-Projekt definiert Standardkonfigurationen für alle Ressourcen. Beispielsweise können hier Dienste wie OpenTelemetry zur Applikation hinzugefügt werden. Anstatt jede Ressource einzeln zu konfigurieren, kann nun die Standardkonfiguration in ServiceDefaults genutzt werden.

Ressourcen

Eine Ressource ist beispielsweise ein .NET Projekt, ein Container oder eine Datenbank, kurz: alles, was die verteilte Applikation braucht. Neue Ressourcen werden am einfachsten im .NET CLI mit Ressourcenvorlagen erstellt.

Die Einbindung neuer Ressourcen in die Applikation unterscheidet sich je nach Ressourcentyp, aber ist in allen Fällen relativ simpel. Kompilierte Ressourcen wie .NET Projekte benötigen dafür etwa Projektreferenzen und müssen dem AppHost hinzugefügt werden. Ein paar .NET CLI-Befehle und einige Zeilen Code ist alles, was es dafür braucht.

Architektur

Aspire generiert im Hintergrund C# Klassen, mit welchen die gesamte Applikationsarchitektur deklarativ beschrieben wird. Konfiguration, Orchestrierung, Service Discovery und Observability werden automatisch von Aspire gewährleistet, Entwickler müssen kein .csproj, appsettings.json oder docker-compose anfassen. Auch Debugging funktioniert über Projektgrenzen hinweg problemlos.

Das Besondere daran ist, dass dazu standardmässige ASP.NET Core Funktionalitäten wie die .NET CLI und .csproj Files genutzt werden. Aspire bleibt also vollständig im .NET Ökosystem und baut auf bestehendem auf. Entwickler, welche mit .NET vertraut sind, haben dadurch einen leichten Einstieg und können sich auf die Business-Logik konzentrieren. Ausserdem ist die Architektur viel durchsichtiger, da sie zentral definiert ist und nicht auf verschiedene Files, Sprachen und Tools verteilt ist.

OpenTelemetry

OpenTelemetry ist ein Open-Source-Projekt, das eine einheitliche Möglichkeit bietet, Telemetriedaten wie Logs, Traces und Metriken aus Softwareanwendungen zu generieren, zu exportieren und zu sammeln. Dies geschieht über Sprachspezifische Frameworks, im Fall von Aspire das C# OpenTelemetry Framework. Aspire unterstützt OpenTelemetry standardmässig und schickt die generierten Telemetriedaten an ein Dashboard, wo sie visualisiert werden.

Aspire-Dashboard

Das Aspire-Dashboard kam während des Seminars immer wieder zum Einsatz. Hier erhalten Entwickler einen Einblick in alle Ressourcen, Konsolen, Structured Logs, Traces und Metriken der Applikation. Um dieses starke Werkzeug zur Überwachung und Problembehebung zu nutzen, müssen lediglich die Ressourcen korrekt eingebunden werden, das Dashboard an sich funktioniert einfach „out of the box“. Es steht sowohl während der lokalen Entwicklung als auch während des Produktivbetriebs in der Cloud zur Verfügung. In Azure wird dies mittels Microsoft Entra ID abgesichert. Das Dashboard ist kein vollumfängliches Observability Backend wie z.B. Jaeger oder Grafana, aber Aspire vereinfacht den Export von Telemetriedaten an solche Backends ebenfalls sehr.

Containerisierte Ressourcen

Externe Ressourcen wie z. B. eine PostgreSQL-Datenbank oder ein Redis-Cache können in Aspire ganz einfach per C#-Code hinzugefügt werden. Eine manuelle Installation oder Docker-Konfiguration ist nicht nötig: Aspire startet automatisch einen passenden Container und bindet ihn in die Anwendung ein. Falls das benötigte Docker-Image noch nicht lokal vorhanden ist, wird es beim ersten Start automatisch heruntergeladen.

Deployment mit Azure

Gegen Ende des Webinars demonstrierte Simeï noch das Deployment einer Aspire-App in die Cloud. Hierfür verwendete er die Azure Developer CLI verwendet. Es ist beeindruckend, wie Aspire die Applikation automatisch in Container-Strukturen übersetzt und so das Deployment stark vereinfacht. Aspire ersetzt dabei keine Infrastruktur-Tools wie Terraform oder Bicep, aber es generiert anhand der Applikationsstruktur automatisch Bicep Files, welche die nötigen Ressourcen in der Azure Cloud bereitstellen.

Es gibt Ansätze, welche die Integration von Aspire mit Terraform automatisieren. Jedoch befinden sich diese noch unter Entwicklung und das Aspire-Entwicklungsteam ist sich noch unschlüssig, ob Funktionalitäten wie diese von ihnen unterstützt werden sollten, oder ob dies vollständig in den Händen der Community liegen soll.

Fazit

Zusammenfassend lässt sich sagen, dass .NET Aspire die lokale Entwicklung von Verteilten Anwendungen enorm vereinfacht. Besonders die Integration von OpenTelemetry und das eingebaute Aspire Dashboard bieten starke Werkzeuge zur Fehlerbehebung und Leistungsüberwachung. Ausserdem bietet Aspire auch eine einfache und schnelle Lösung für das Deployment in der Cloud mittels Azure. Jedoch fehlt es noch an gewissen Cloud Komponenten wie beispielsweise Azure Frontdoor um als vollständiges Infrastructure-as-Code-Tool eingesetzt werden zu können. Zu beachten ist dabei, dass .NET Aspire, wenn man die Preview Version nicht beachtet, noch nicht mal ein Jahr alt ist. Wir sind gespannt, wo die Reise von .NET Aspire hinführt.


Schliessen
Stamp Icon-Print Icon-Clear
S
M
L
XL
XXL