Tutorial: Hinzufügen von .NET Aspire zu einer vorhandenen .NET-App
Wenn Sie über vorhandene Microservices und eine .NET-Webanwendung verfügen, können Sie .NET Aspire hinzufügen und alle enthaltenen Funktionen und Vorteile nutzen. In diesem Artikel fügen Sie die Orchestrierung von .NET Aspire zu einem einfachen, bereits vorhandenen .NET-9-Projekt hinzu. Hier erfahren Sie, wie Sie:
- Verstehen Sie die Struktur der vorhandenen Microservices-App.
- Melden Sie vorhandene Projekte im .NET.NET Aspire-Orchestrierungssystem an.
- Verstehen Sie die Auswirkungen der Einschreibung auf die Projekte.
- Starten Sie das .NET.NET Aspire Projekt.
Voraussetzungen
Um mit .NET.NET Aspirezu arbeiten, benötigen Sie folgendes lokal installiert:
- .NET 8.0 oder .NET 9,0
- Eine OCI-kompatible Containerlaufzeit, z. B.:
- Docker Desktop oder Podman. Weitere Informationen finden Sie unter container runtime.
- Eine integrierte Entwicklerumgebung (Integrated Developer Environment, IDE) oder ein Code-Editor, z. B.:
- Visual Studio 2022 Version 17.9 oder höher (optional)
-
Visual Studio Code (optional)
- C# Dev Kit: Erweiterung (Optional)
- JetBrains Rider mit .NET.NET Aspire Plugin (Optional)
Weitere Informationen finden Sie unter .NET.NET Aspire Setup und Toolingund .NET.NET Aspire SDK-.
Loslegen
Beginnen wir mit dem Abrufen des Codes für die Lösung:
Öffnen Sie eine Eingabeaufforderung und wechseln Sie das Verzeichnis zu dem Ort, an dem Sie den Code speichern möchten.
Um die .NET 9-Beispiellösung zu klonen, verwenden Sie den folgenden
git clone
-Befehl:git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
Erkunden der Beispiel-App
In diesem Artikel wird eine .NET 9-Lösung mit drei Projekten verwendet:
-
Datenentitäten: Dieses Projekt ist eine Beispiel-Klassenbibliothek. Sie definiert die
Product
Klasse, die in der Web App und Web-API verwendet wird. - Produkte: Diese Beispielweb-API gibt eine Liste der Produkte im Katalog und deren Eigenschaften zurück.
- Store-: In der beispielhaften Blazor Web-App wird der Produktkatalog Besuchern der Webseite angezeigt.
Öffnen Sie das Projekt, und starten Sie das Debuggen, um das Standardverhalten zu untersuchen:
Starten Sie Visual Studio und wählen Sie dann Datei>Öffnen>Projekt/Lösung aus.
Navigieren Sie zum Ordner der obersten Ordnerebene der Lösung, die Sie geklont haben, wählen Sie eShopLite.slnaus, und wählen Sie dann Öffnenaus.
Klicken Sie im Lösungs-Explorermit der rechten Maustaste auf die eShopLite Lösung, und wählen Sie dann Startprojekte konfigurierenaus.
Wählen Sie mehrere Startprojekteaus.
Wählen Sie in der Spalte Aktion für beide Produkte und Store Projekte Start aus.
Wählen Sie OKaus.
Um mit dem Debuggen der Lösung zu beginnen, drücken Sie F5-, oder wählen Sie Start-aus.
Zwei Seiten werden im Browser geöffnet:
- Auf einer Seite werden Produkte im JSON-Format durch einen Aufruf der Products-Web-API angezeigt.
- Auf einer Seite wird die Homepage der Website angezeigt. Wählen Sie im Menü auf der linken Seite Produkte aus, um den Katalog anzuzeigen, der über die Web-API bezogen wurde.
Um das Debuggen zu beenden, schließen Sie den Browser.
Starten Sie Visual Studio Code, und öffnen Sie den Ordner, den Sie geklont haben. Führen Sie vom Terminal aus, in dem Sie das Repository geklont haben, den folgenden Befehl aus:
code .
Wählen Sie das Menüelement Ausführen und Debuggen aus, oder drücken Sie Strg+Shift+D.
Wählen Sie den Link create a launch.json file aus.
Kopieren Sie den folgenden JSON in diese Datei und speichern Sie.
{ "version": "0.2.0", "compounds": [ { "name": "Run all", "configurations": [ "Run products", "Run store", ] } ], "configurations": [ { "name": "Run products", "type": "dotnet", "request": "launch", "projectPath": "${workspaceFolder}/Products/Products.csproj" }, { "name": "Run store", "type": "dotnet", "request": "launch", "projectPath": "${workspaceFolder}/Store/Store.csproj" } ] }
Um mit dem Debuggen der Lösung zu beginnen, drücken Sie F5-, oder wählen Sie Start-aus.
Zwei Seiten werden im Browser geöffnet:
- Auf einer Seite werden Produkte im JSON-Format aus einem Aufruf der Products-Web-API angezeigt.
- Auf einer Seite wird die Homepage der Website angezeigt. Wählen Sie im Menü auf der linken Seite Produkte aus, um den Katalog anzuzeigen, der über die Web-API bezogen wurde.
Um das Debuggen zu beenden, schließen Sie den Browser, und wählen Sie dann zweimal die Schaltfläche beenden aus (einmal für jede ausgeführte Debuginstanz).
Öffnen Sie ein Terminalfenster, und ändern Sie Verzeichnisse in das neu geklonte Repository.
Führen Sie den folgenden Befehl aus, um die Products-App zu starten:
dotnet run --project ./Products/Products.csproj
Eine Browserseite wird geöffnet, die die JSON für die Produkte anzeigt.
Wechseln Sie in einem separaten Terminalfenster erneut in das Verzeichnis des geklonten Repositories.
Starten Sie die Store App, indem Sie den folgenden Befehl ausführen:
dotnet run --project ./Store/Store.csproj
Der Browser öffnet eine Seite, auf der die Homepage der Website angezeigt wird. Wählen Sie im Menü auf der linken Seite Produkte aus, um den Katalog anzuzeigen, der über die Web-API bezogen wurde.
Um das Debuggen zu beenden, schließen Sie den Browser, und drücken Sie STRG+C- in beiden Terminals.
Füge .NET.NET Aspire zur Store-Web-App hinzu
Registrieren wir jetzt das Store--Projekt, das die Web-Benutzeroberfläche implementiert, in die .NET.NET Aspire Orchestrierung:
Klicken Sie in Visual Studioim Projekt-Explorermit der rechten Maustaste auf das Store--Projekt, wählen Sie Hinzufügenaus, und wählen Sie dann .NET.NET Aspire Orchestrator-Supportaus.
Wählen Sie im Dialogfeld Hinzufügen .NET.NET Aspire OrchestratorunterstützungOKaus.
Sie sollten jetzt zwei neue Projekte haben, die der Lösung hinzugefügt wurden.
- eShopLite.AppHost-: Ein Orchestratorprojekt, das entwickelt wurde, um die verschiedenen Projekte und Dienste Ihrer App zu verbinden und zu konfigurieren. Der Orchestrator wird als Startprojektfestgelegt und hängt vom Projekt eShopLite.Store ab.
- eShopLite.ServiceDefaults-: Ein .NET.NET Aspire gemeinsam genutztes Projekt zum Verwalten von Konfigurationen, die in den Projekten Ihrer Lösung im Zusammenhang mit Resilienz, Dienstermittlungund Telemetriewiederverwendet werden.
Öffnen Sie die Datei im Projekt Program.cs. Beachten Sie diese Codezeile, die das Store--Projekt im .NET.NET Aspire-Orchestrierungsschema registriert.
builder.AddProject<Projects.Store>("store");
Weitere Informationen finden Sie unter AddProject.
So fügen Sie das projekt Products zu .NET.NET Aspirehinzu:
Klicken Sie in Visual Studioim Lösungs-Explorermit der rechten Maustaste auf das Projekt Produkte, wählen Sie Hinzufügenaus, und wählen Sie dann .NET.NET Aspire Orchestrator-Supportaus.
Ein Dialogfeld zeigt an, dass das Orchestrator-Projekt .NET.NET Aspire bereits vorhanden ist. Wählen Sie OKaus.
Öffnen Sie die Datei im Projekt Program.cs. Beachten Sie diese Codezeile, die das Projekt Products im Orchestrierungsschema .NET.NET Aspire registriert.
builder.AddProject<Projects.Products>("products");
Beachten Sie außerdem, dass das eShopLite.AppHost--Projekt jetzt sowohl von den Store-- als auch von den Products--Projekten abhängt.
Erstellen eines App-Hostprojekts
Um die vorhandenen Projekte zu koordinieren, müssen Sie ein neues -App-Host--Projekt erstellen. Um ein neues App-Host-Projekt aus den verfügbaren .NET Aspire Vorlagen zu erstellen, verwenden Sie den folgenden .NET CLI-Befehl:
dotnet new aspire-apphost -o eShopLite.AppHost
Fügen Sie das App-Host Projekt zur vorhandenen Lösung hinzu:
Fügen Sie das Store- Projekt als Projektverweis zum App-Host Projekt hinzu, indem Sie den folgenden befehl .NET CLI verwenden:
Erstellen eines Service-Standardeinstellungsprojekts
Nachdem das App-Hostprojekt erstellt wurde, müssen Sie ein neues Dienststandards Projekt erstellen. Verwenden Sie den folgenden CLI-Befehl, um ein neues Standarddienstprojekt aus den verfügbaren .NET Aspire Vorlagen zu erstellen:
dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults
Um das Projekt zur Lösung hinzuzufügen, verwenden Sie den folgenden .NET CLI-Befehl:
dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Aktualisieren Sie das App-Host-Projekt, um einen Projektverweis zum Products-Projekt hinzuzufügen.
dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj
Sowohl die Store- als auch die Produkte-Projekte müssen auf das Servicestandards-Projekt verweisen, damit sie problemlos Diensterkennung einschließen können. Verwenden Sie zum Hinzufügen eines Verweises auf das -Dienststandardprojekt im Store-Projekt den folgenden .NET CLI-Befehl:
dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Derselbe Befehl mit leicht unterschiedlichen Pfaden sollte verwendet werden, um einen Verweis auf das Projekt Dienststandards im Projekt Products hinzuzufügen.
dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Aktualisieren Sie in den Store und Produkte Projekten ihre Program.cs Dateien und fügen Sie die folgende Zeile unmittelbar nach der var builder = WebApplication.CreateBuilder(args);
Zeile hinzu:
builder.AddServiceDefaults();
Aktualisieren des App-Hostprojekts
Öffnen Sie die Datei Program.cs des App-Hosts des -Projekts, und ersetzen Sie deren Inhalt durch den folgenden C#-Code:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.Store>("store");
builder.AddProject<Projects.Products>("products");
builder.Build().Run();
Der vorangehende Code:
- Erstellt eine neue
DistributedApplicationBuilder
Instanz. - Fügt das Store- Projekt dem Orchestrator hinzu.
- Fügt das Projekt Products dem Orchestrator hinzu.
- Erstellt und führt den Orchestrator aus.
Serviceerkennung
Zu diesem Zeitpunkt sind beide Projekte Teil der .NET.NET Aspire-Orchestrierung, aber das Store-Projekt muss sich auf die Produkte Backend-Adresse über .NET.NET Aspire's Service Discoveryverlassen. Um die Dienstermittlung zu aktivieren, öffnen Sie die Datei Program.cs im Projekt eShopLite.AppHost, und aktualisieren Sie den Code so, dass builder
einen Verweis auf das Projekt Products hinzufügt.
var builder = DistributedApplication.CreateBuilder(args);
var products = builder.AddProject<Projects.Products>("products");
builder.AddProject<Projects.Store>("store")
.WithExternalHttpEndpoints()
.WithReference(products);
builder.Build().Run();
Der vorangehende Code gibt an, dass das Store--Projekt vom -Projekt "Products" abhängt. Weitere Informationen finden Sie unter .NET.NET Aspire App-Host: Referenzressourcen. Dieser Verweis wird verwendet, um die Adresse des Products-Projekts zur Laufzeit zu ermitteln. Darüber hinaus ist das Store- Projekt für die Verwendung externer HTTP-Endpunkte konfiguriert. Wenn Sie sich später für die Bereitstellung dieser App entscheiden, benötigen Sie den Aufruf von WithExternalHttpEndpoints, sodass sie für die Außenwelt öffentlich zugänglich ist.
Aktualisieren Sie als Nächstes das appsettings.json im Store--Projekt mit dem folgenden JSON:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ProductEndpoint": "http://products",
"ProductEndpointHttps": "https://products"
}
Die Adressen für beide Endpunkte verwenden nun den Namen "Produkte", der dem Orchestrator im App-Hosthinzugefügt wurde. Diese Namen werden verwendet, um die Adresse des projekts Produkte zu ermitteln.
Erkunden der registrierten App
Lassen Sie uns die Lösung starten und das neue Verhalten untersuchen, das .NET.NET Aspire bereitstellt.
Anmerkung
Beachten Sie, dass das eShopLite.AppHost Projekt das neue Startprojekt ist.
- Um das Debuggen in Visual Studiozu starten, drücken Sie F5, undVisual Studio erstellt die Projekte.
- Wenn das Start-Docker-Desktop--Dialogfeld angezeigt wird, wählen Sie Jaaus. Visual Studio startet den Docker-Motor und erstellt die notwendigen Container. Nach Abschluss der Bereitstellung wird das .NET.NET Aspire Dashboard angezeigt.
- Wählen Sie im Dashboard den Endpunkt für die Produkte Projekt aus. Eine neue Browserregisterkarte wird angezeigt und zeigt den Produktkatalog im JSON-Format an.
- Wählen Sie im Dashboard den Endpunkt für das Store-Projekt aus. Eine neue Browserregisterkarte wird geöffnet, um die Startseite der Webanwendung anzuzeigen.
- Wählen Sie im Menü auf der linken Seite Produkteaus. Der Produktkatalog wird angezeigt.
- Um das Debuggen zu beenden, schließen Sie den Browser.
Löschen Sie die zuvor erstellte launch.json Datei, sie dient nicht mehr einem Zweck. Starten Sie stattdessen das App-Host Projekt, das die anderen Projekte orchestriert:
Starten Sie das App-Host--Projekt, indem Sie mit der rechten Maustaste auf das eShopLite.AppHost--Projekt im Projektmappen-Explorer klicken und Debug>Neue Instanz startenauswählen.
Anmerkung
Wenn Docker Desktop (oder Podman) nicht ausgeführt wird, erhalten Sie eine Fehlermeldung. Starten Sie die OCI-kompatible Container-Engine, und versuchen Sie es erneut.
Starten Sie das App-Host-Projekt, indem Sie den folgenden Befehl ausführen:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
Anmerkung
Wenn Docker Desktop (oder Podman) nicht läuft, kommt es zu einem Fehler. Starten Sie die OCI-kompatible Container-Engine, und versuchen Sie es erneut.
- Wählen Sie im Dashboard den Endpunkt für die Produkte Projekt aus. Eine neue Registerkarte im Browser wird geöffnet und zeigt den Produktkatalog im JSON-Format an.
- Wählen Sie im Dashboard den Endpunkt für das Store-Projekt aus. Eine neue Browserregisterkarte wird geöffnet und zeigt die Startseite der Webanwendung an.
- Wählen Sie im Menü auf der linken Seite Produkteaus. Der Produktkatalog wird angezeigt.
- Um das Debuggen zu beenden, schließen Sie den Browser.
Herzlichen Glückwunsch, Sie haben die Orchestrierung .NET.NET Aspire zu Ihrer bereits bestehenden Webanwendung hinzugefügt. Sie können jetzt .NET Aspire-Integrationen hinzufügen und die .NET Aspire-Tools verwenden, um Ihre cloud-native Web-App-Entwicklung zu optimieren.