Zelfstudie: .NET Aspire toevoegen aan een bestaande .NET-app
Als u bestaande microservices en .NET web-app hebt, kunt u er .NET Aspire aan toevoegen en alle inbegrepen functies en voordelen krijgen. In dit artikel voegt u .NET Aspire orkestratie toe aan een eenvoudig, bestaand .NET 9-project. U leert het volgende:
- Inzicht in de structuur van de bestaande microservices-app.
- Schrijf bestaande projecten in voor .NET.NET Aspire orkestratie.
- Begrijp hoe inschrijving veranderingen in de projecten aanbrengt.
- Start het .NET.NET Aspire project.
Voorwaarden
Als u met .NET.NET Aspirewilt werken, hebt u het volgende lokaal geïnstalleerd:
- .NET 8,0 of .NET 9,0
- Een OCI-compatibele containerruntime, zoals:
- Docker Desktop of Podman. Voor meer informatie, zie Container runtime.
- Een IDE (Integrated Developer Environment) of code-editor, zoals:
- Visual Studio 2022 versie 17.9 of hoger (optioneel)
-
Visual Studio Code (optioneel)
- C# Dev Kit: extensie- (optioneel)
- JetBrains Rider met .NET.NET Aspire plugin (optioneel)
Zie .NET.NET Aspire setup en hulpprogramma'sen .NET.NET Aspire SDK-voor meer informatie.
Aan de slag
Laten we beginnen met het verkrijgen van de code voor de oplossing:
Open een opdrachtprompt en wijzig mappen in de locatie waar u de code wilt opslaan.
Als u wilt klonen naar .NET 9-voorbeeldoplossing, gebruikt u de volgende
git clone
opdracht:git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
De voorbeeld-app verkennen
In dit artikel wordt een .NET 9-oplossing met drie projecten gebruikt:
-
Gegevensentiteiten: dit project is een voorbeeld van een klassebibliotheek. Hiermee definieert u de
Product
-klasse die wordt gebruikt in de web-app en de web-API. - Producten: in dit voorbeeld retourneert web-API een lijst met producten in de catalogus en de bijbehorende eigenschappen.
- Store: in dit voorbeeld Blazor web-app wordt de productcatalogus weergegeven aan websitebezoekers.
Open en start de foutopsporing van het project om het standaardgedrag ervan te onderzoeken:
Start Visual Studio en selecteer Bestand>Open>Project/Oplossing.
Navigeer naar de map op het hoogste niveau van de oplossing die u hebt gekloond, selecteer eShopLite.slnen selecteer vervolgens openen.
Klik in Solution Explorermet de rechtermuisknop op de eShopLite-oplossing en selecteer Opstartprojecten configureren.
Selecteer Meerdere opstartprojecten.
Selecteer in de kolom Actie de optie Start voor zowel de projecten Producten als Winkel.
Selecteer OK.
Als u de oplossing wilt opsporen, drukt u op F5- of selecteert u Start.
Er worden twee pagina's geopend in de browser:
- Een pagina toont producten in JSON-formaat van een aanroep naar de Producten Web-API.
- Op een pagina wordt de startpagina van de website weergegeven. Selecteer in het menu aan de linkerkant Producten om de catalogus te bekijken die u hebt verkregen via de web-API.
Sluit de browser om de foutopsporing te stoppen.
Start Visual Studio Code en open de map die je hebt gekloond. Voer vanuit de terminal waar u de opslagplaats hebt gekloond de volgende opdracht uit:
code .
Selecteer het menu-item Uitvoeren en fouten opsporen of druk op Ctrl+Shift+D.
Selecteer de een launch.json bestand maken koppeling.
Kopieer en plak de volgende JSON in dit bestand en opslaan.
{ "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" } ] }
Als u de oplossing wilt opsporen, drukt u op F5- of selecteert u Start.
Er worden twee pagina's geopend in de browser:
- Een pagina toont producten in JSON-formaat van een aanroep naar de Producten Web-API.
- Op een pagina wordt de startpagina van de website weergegeven. Selecteer in het menu aan de linkerkant Producten om de catalogus te bekijken die u hebt verkregen via de web-API.
Als u de foutopsporing wilt stoppen, sluit u de browser en selecteert u vervolgens tweemaal de knop Stop (eenmaal voor elk actieve foutopsporingsexemplaren).
Open een terminalvenster en wijzig mappen in de zojuist gekloonde opslagplaats.
Voer de volgende opdracht uit om de Products-app te starten:
dotnet run --project ./Products/Products.csproj
Er wordt een browserpagina geopend, die de JSON toont voor de producten.
Open een nieuw terminalvenster en navigeer opnieuw naar de gekloneerde opslagplaats.
Start de Store-app door de volgende opdracht uit te voeren:
dotnet run --project ./Store/Store.csproj
De browser opent een pagina waarop de startpagina van de website wordt weergegeven. Selecteer in het menu aan de linkerkant Producten om de catalogus te bekijken die u hebt verkregen via de web-API.
Als u de foutopsporing wilt stoppen, sluit u de browser en drukt u op Ctrl+C- in beide terminals.
.NET .NET Aspire toevoegen aan de Store-web-app
Nu gaan we het Store project, waarmee de webgebruikersinterface wordt geïmplementeerd, inschrijven in .NET.NET Aspire orchestratie.
Klik in Visual Studioin Solution Explorermet de rechtermuisknop op het project Store, selecteer Toevoegenen selecteer .NET.NET Aspire Orchestrator-ondersteuning.
Selecteer in het dialoogvenster Toevoegen .NET.NET Aspire Orchestrator SupportOK.
U hebt nu twee nieuwe projecten, beide toegevoegd aan de oplossing:
- eShopLite.AppHost: een orchestratorproject dat is ontworpen om de verschillende projecten en services van uw app te verbinden en te configureren. De orchestrator is ingesteld als het opstartprojecten is afhankelijk van het eShopLite.Store project.
- eShopLite.ServiceDefaults: een .NET.NET Aspire gedeeld project voor het beheren van configuraties die opnieuw worden gebruikt in de projecten in uw oplossing met betrekking tot tolerantie, servicedetectieen telemetrie.
Open in het project eShopLite.AppHost het bestand Program.cs. Let op deze coderegel, waarmee het Store-project wordt geregistreerd in de .NET.NET Aspire-orchestratie.
builder.AddProject<Projects.Store>("store");
Zie AddProjectvoor meer informatie.
Het project Products toevoegen aan .NET.NET Aspire:
Klik in Visual Studioin de Solution Explorer-met de rechtermuisknop op het project Producten, selecteer toevoegen en selecteer vervolgens .NET.NET Aspire Orchestrator-ondersteuning.
Een dialoogvenster dat aangeeft dat het .NET.NET Aspire Orchestrator-project al bestaat, klik op OK.
Open in het project eShopLite.AppHost het bestand Program.cs. Let op deze coderegel, waarmee het project Products wordt geregistreerd in de .NET.NET Aspire indeling:
builder.AddProject<Projects.Products>("products");
U ziet ook dat het project eShopLite.AppHost nu afhankelijk is van zowel de Store als Products projecten.
Een app-hostproject maken
Om de bestaande projecten te orkestreren, moet u een nieuw project voor een app-host aanmaken. Als u een nieuwe -app-host wilt maken project uit de beschikbare .NET Aspire-sjablonen, gebruikt u de volgende .NET CLI-opdracht:
dotnet new aspire-apphost -o eShopLite.AppHost
Voeg het app-hostproject toe aan een bestaande oplossing:
Voeg het Store-project toe als projectreferentie naar het app-hostproject project met behulp van de volgende .NET CLI-opdracht:
Een 'service defaults' project maken
Nadat het app host-project is gemaakt, moet u een nieuw -servicestandaardenproject maken. Gebruik de volgende CLI-opdracht om een nieuw project met standaardservices te maken op basis van de beschikbare sjablonen:
dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults
Gebruik de volgende .NET CLI-opdracht om het project toe te voegen aan de oplossing:
dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Werk de app-host project bij om een projectreferentie toe te voegen aan het project Products:
dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj
Zowel de projecten Store als Products moeten verwijzen naar de standaardinstellingen van de -service project, zodat ze eenvoudig servicedetectiekunnen bevatten. Gebruik de volgende CLI-opdracht om een verwijzing naar het service defaults project toe te voegen in het Store project:
dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Gebruik dezelfde opdracht met enigszins andere paden om een verwijzing toe te voegen aan het service defaults project in het Products project.
dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Werk in de projecten Store en Products hun Program.cs-bestanden bij en voeg de volgende regel toe direct na de var builder = WebApplication.CreateBuilder(args);
regel:
builder.AddServiceDefaults();
Het app-hostproject bijwerken
Open het Program.cs bestand van de app-host project en vervang de inhoud door de volgende C#-code:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.Store>("store");
builder.AddProject<Projects.Products>("products");
builder.Build().Run();
De voorgaande code:
- Hiermee maakt u een nieuw
DistributedApplicationBuilder
-exemplaar. - Hiermee voegt u het Store-project toe aan de orchestrator.
- Hiermee voegt u het project Products toe aan de orchestrator.
- Hiermee wordt de orchestrator gebouwd en uitgevoerd.
Serviceontdekking
Op dit moment maken beide projecten deel uit van .NET.NET Aspire orkestratie, maar het Store-project moet vertrouwen op het Producten back-endadres via .NET.NET Aspire's servicedetectie. Als u servicedetectie wilt inschakelen, opent u het Program.cs-bestand in project eShopLite.AppHost en werkt u de code bij zodat de builder
een verwijzing naar het Products-project toevoegt:
var builder = DistributedApplication.CreateBuilder(args);
var products = builder.AddProject<Projects.Products>("products");
builder.AddProject<Projects.Store>("store")
.WithExternalHttpEndpoints()
.WithReference(products);
builder.Build().Run();
De voorgaande code geeft aan dat het project Store afhankelijk is van het project Producten. Zie .NET.NET Aspire app-host voor meer informatie: Referentieresources. Deze verwijzing wordt gebruikt om het adres van het Products project tijdens runtime te detecteren. Daarnaast is het Store--project geconfigureerd voor het gebruik van externe HTTP-eindpunten. Als u ervoor kiest om deze app later te implementeren, hebt u de aanroep naar WithExternalHttpEndpoints nodig om ervoor te zorgen dat deze publiek toegankelijk is voor de buitenwereld.
Werk vervolgens de appsettings.json in het project Store bij met de volgende JSON:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ProductEndpoint": "http://products",
"ProductEndpointHttps": "https://products"
}
De adressen voor beide eindpunten gebruiken nu de naam 'producten' die is toegevoegd aan de orchestrator in de app-host. Deze namen worden gebruikt om het adres van het Products project te ontdekken.
De ingeschreven app verkennen
Laten we de oplossing starten en het nieuwe gedrag onderzoeken dat .NET.NET Aspire biedt.
Notitie
U ziet dat het eShopLite.AppHost project het nieuwe opstartproject is.
- In Visual Studio, druk op F5om te beginnen met foutopsporing,Visual Studio bouwt de projecten.
- Als het Start Docker Bureaublad dialoogvenster verschijnt, selecteert u Ja. Visual Studio start de Docker-engine en maakt de benodigde containers. Wanneer de implementatie is voltooid, wordt het .NET.NET Aspire dashboard weergegeven.
- Selecteer in het dashboard het eindpunt voor de producten project. Er wordt een nieuw browsertabblad weergegeven en de productcatalogus wordt weergegeven in JSON indeling.
- Selecteer in het dashboard het eindpunt voor het winkel project. Er wordt een nieuw browsertabblad weergegeven en de startpagina voor de web-app wordt weergegeven.
- In het menu aan de linkerkant, selecteer Producten. De productcatalogus wordt weergegeven.
- Sluit de browser om de foutopsporing te stoppen.
Verwijder het launch.json bestand dat u eerder hebt gemaakt. Het is niet langer bedoeld. Start in plaats daarvan de app-host project, waarmee de andere projecten worden georganiseerd:
Start het app-host project door met de rechtermuisknop te klikken op het eShopLite.AppHost project in de Solution Explorer en Debuggen>Nieuwe instantie startente selecteren.
Notitie
Als Docker Desktop (of Podman) niet actief is, treedt er een fout op. Start de containerengine die compatibel is met OCI en probeer het opnieuw.
Start de app-host project door de volgende opdracht uit te voeren:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
Notitie
Als Docker Desktop (of Podman) niet actief is, treedt er een fout op. Start de containerengine die compatibel is met OCI en probeer het opnieuw.
- Selecteer in het dashboard het eindpunt voor de producten project. Er wordt een nieuw browsertabblad weergegeven en de productcatalogus wordt weergegeven in JSON indeling.
- Selecteer in het dashboard het eindpunt voor het winkel project. Er wordt een nieuw browsertabblad weergegeven en de startpagina voor de web-app wordt weergegeven.
- In het menu aan de linkerkant, selecteer Producten. De productcatalogus wordt weergegeven.
- Sluit de browser om de foutopsporing te stoppen.
Gefeliciteerd, u hebt .NET.NET Aspire orkestratie toegevoegd aan uw bestaande webapp. U kunt nu .NET Aspire integraties toevoegen en de .NET Aspire hulpprogramma's gebruiken om de ontwikkeling van uw cloudeigen web-app te stroomlijnen.