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 der 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/Projektmappeaus.
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:
- Produkte im JSON-Format werden von einem Aufruf der Products-Web-API auf einer Seite 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 die Option, um einen Start zu erstellen.json Datei Link.
Kopieren Sie die folgenden JSON in diese Datei, und speichern Sie sie dann .
{ "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:
- Produkte im JSON-Format werden von einem Aufruf der Products-Web-API auf einer Seite 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.
Ändern Sie in einem separaten Terminalfenster erneut das Verzeichnis zum geklonten Repository.
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 Projektmappe 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. Verwenden Sie den folgenden CLI-Befehl, um einen neuen .NET Aspire aus den verfügbaren .NET-Vorlagen zu erstellen:
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 Dienststandardprojekts
Nachdem das App-Hostprojekt erstellt wurde, müssen Sie ein neues Dienststandards Projekt erstellen. Verwenden Sie zum Erstellen eines neuen -Diensts standardmäßig Projekt aus den verfügbaren .NET Aspire-Vorlagen den folgenden .NET CLI-Befehl:
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 Dienststandardwerte--Projekt verweisen, damit sie problemlos Dienstermittlungeinschließ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 Store-- und -Produkten 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
An diesem Punkt sind beide Projekte Teil der .NET.NET Aspire Orchestrierung, aber der Store muss die Produkte Back-End-Adresse über den .NET.NET Aspire-Service-Discoveryentdecken können. Um die Dienstermittlung zu aktivieren, öffnen Sie die Program.cs-Datei in eShopLite.AppHost, und aktualisieren Sie den Code, den der Store dem 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 projekts Produkte 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 die Filiale des Projekts 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 Startdateijson, die Sie zuvor erstellt haben, da sie nicht mehr einem Zweck dient. 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, tritt ein Fehler auf. 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 ausgeführt wird, tritt ein Fehler auf. 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 Browserregisterkarte wird angezeigt und zeigt den Produktkatalog im JSON-Format an.
- Wählen Sie im Dashboard den Endpunkt für die Filiale des Projekts 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.
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.