Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du har befintliga mikrotjänster och .NET webbapp kan du lägga till Aspire till den och få alla inkluderade funktioner och fördelar. I den här artikeln lägger du till Aspire orkestrering i ett enkelt, befintligt .NET 9-projekt. Du lär dig att:
- Förstå strukturen för den befintliga mikrotjänstappen.
- Registrera befintliga projekt i Aspire orkestrering.
- Förstå de ändringar som registreringen gör i projekten.
- Aspire Starta projektet.
Prerequisites
För att arbeta med Aspirebehöver du följande installerat lokalt:
-
.NET 8.0 eller .NET 9.0.
- Från och med Aspire 9.4 .NET stöds 10 Förhandsversion 5 eller senare .
- En OCI-kompatibel containerkörtid, till exempel:
- Docker Desktop eller Podman. Mer information finns i Container Runtime.
- En IDE (Integrated Developer Environment) eller kodredigerare, till exempel:
- Visual Studio 2022 version 17.9 eller senare (valfritt)
-
Visual Studio Code (valfritt)
- C# Dev Kit: Tillägg (valfritt)
- JetBrains Rider med Aspire plugin (valfritt)
För mer information, se Aspire konfiguration och verktyg och Aspire SDK.
Get started
Vi börjar med att hämta koden för lösningen:
Öppna en kommandotolk och byt katalog till den där du vill lagra koden.
Om du vill klona till .NET 9 exempellösning använder du följande
git clonekommando:git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
Utforska exempelappen
Den här artikeln använder en .NET 9-lösning med tre projekt:
-
dataentiteter: Det här projektet är ett exempel på ett klassbibliotek. Den definierar den
Product-klass som används i webbappen och webb-API:et. - Products: I det här exemplet returnerar webb-API:et en lista över produkter i katalogen och deras egenskaper.
- Store: Det här exemplet Blazor Web App visar produktkatalogen för webbplatsbesökare.
Exempel på apparkitektur
För att bättre förstå strukturen för exempelappen bör du överväga följande diagram, som illustrerar dess enkla arkitektur på tre nivåer:
Den här lagerdesignen säkerställer en tydlig uppdelning av problem, vilket gör appen enklare att underhålla och skala.
Kör exempelappen
Öppna och börja felsöka projektet för att undersöka dess standardbeteende:
Starta Visual Studio och välj sedan File>Open>Project/Solution.
Gå till mappen på den översta nivån för den lösning som du klonade, välj eShopLite.slnoch välj sedan Öppna.
Högerklicka på lösningen eShopLite i Solution Exploreroch välj sedan Konfigurera startprojekt.
Välj Flera startprojekt.
I kolumnen Åtgärd väljer du Starta för både projekten Products och Store.
Välj OK.
Börja felsöka lösningen genom att trycka på F5 eller välja Starta.
Två sidor öppnas i webbläsaren:
- En sida visar produkter i JSON format från ett anrop till produktwebb-API:et.
- På en sida visas hemsidans startsida. I menyn till vänster väljer du Produkter för att se katalogen som hämtats från webb-API:et.
Stäng webbläsaren om du vill sluta felsöka.
Starta Visual Studio Code och öppna mappen som du klonade. Kör följande kommando från terminalen där du klonade lagringsplatsen:
code .Välj menyalternativet Kör och felsök eller tryck på Ctrl+Skift+D.
Välj länken för att skapa en launch.json-fil.
Kopiera och klistra in följande JSON i den här filen och Spara:
{ "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" } ] }Börja felsöka lösningen genom att trycka på F5 eller välja Starta.
Två sidor öppnas i webbläsaren:
- En sida visar produkter i JSON format från ett anrop till produktwebb-API:et.
- På en sida visas hemsidans startsida. I menyn till vänster väljer du Produkter för att se katalogen som hämtats från webb-API:et.
Om du vill sluta felsöka stänger du webbläsaren och väljer sedan knappen Stoppa två gånger (en gång för varje felsökningsinstans som körs).
Öppna ett terminalfönster och ändra kataloger till den nyligen klonade lagringsplatsen.
Starta appen Products genom att köra följande kommando:
dotnet run --project ./Products/Products.csprojEn webbläsarsida öppnas och visar JSON för produkterna.
I ett separat terminalfönster ändrar du kataloger till klonad lagringsplats igen.
Starta Store-appen genom att köra följande kommando:
dotnet run --project ./Store/Store.csprojWebbläsaren öppnar en sida som visar webbplatsens startsida. I menyn till vänster väljer du Produkter för att se katalogen som hämtats från webb-API:et.
Om du vill sluta felsöka stänger du webbläsaren och trycker på Ctrl+C i båda terminalerna.
Oavsett vilket verktyg du använder är det tråkigt att starta flera projekt manuellt eller konfigurera anslutningar mellan dem. Dessutom kräver Store-projektet explicit slutpunktskonfiguration för products-API :et, vilket är både besvärligt och felbenäget. Det är här Aspire som förenklar och effektiviserar processen!
Kontrollera att Aspire mallar är installerade
Om du har arbetat med Aspire på den aktuella datorn tidigare har du förmodligen de nödvändiga .NET projektmallarna redan installerade. Du kan kontrollera med hjälp av följande kommando:
dotnet new list aspire
Om mallarna Aspire installeras liknar utdata:
These templates matched your input: 'Aspire'
Template Name Short Name Language Tags
------------------ ---------------------- -------- -------------------------------------------------------------------------------
Aspire App... aspire-apphost [C#] Common/Aspire/Cloud
Aspire Emp... aspire [C#] Common/Aspire/Cloud/Web/Web API/API/Service
Aspire Ser... aspire-servicedefaults [C#] Common/Aspire/Cloud/Web/Web API/API/Service
Aspire Sta... aspire-starter [C#] Common/Aspire/Blazor/Web/Web API/API/Service/Cloud/Test/MSTest/NUnit/xUnit
Aspire Tes... aspire-mstest [C#] Common/Aspire/Cloud/Web/Web API/API/Service/Test/MSTest
Aspire Tes... aspire-nunit [C#] Common/Aspire/Cloud/Web/Web API/API/Service/Test/NUnit
Aspire Tes... aspire-xunit [C#] Common/Aspire/Cloud/Web/Web API/API/Service/Test/xUnit
I den här självstudien lägger du till ett AppHost-projekt och ett servicestandardprojekt.
Om föregående kommando inte hittade några mallar måste du installera dem. Kör det här kommandot:
dotnet new install Aspire.ProjectTemplates
Mer information om Aspire-mallarna finns i Aspire-mallar
Lägg till Aspire i Store-webbappen
Nu kommer vi att registrera Store-projektet, som implementerar webbanvändargränssnittet, i Aspire orkestrering.
Högerklicka Visual Studiopå Store-projektet i Solution Explorer, välj Lägg till och välj Aspire sedan Orchestrator Support.
I dialogrutan Lägg till Aspire Orchestrator-stöd väljer du OK.
Du bör nu ha två nya projekt, som båda har lagts till i lösningen:
- eShopLite.AppHost: Ett orchestrator-projekt som är utformat för att ansluta och konfigurera de olika projekten och tjänsterna i din app. Orchestrator anges som Startprojekt, och det är beroende av eShopLite.Store projektet.
- eShopLite.ServiceDefaults: Ett Aspire delat projekt för att hantera konfigurationer som återanvänds i projekt i din lösning som rör motståndskraft, tjänstidentifiering och telemetri.
Öppna -filen i projektet AppHost.cs. Observera den här kodraden som registrerar Store-projektet i Aspire orkestreringen:
builder.AddProject<Projects.Store>("store");
Mer information finns i AddProject.
Så här lägger du till projektet Produkter i Aspire:
I Visual Studioi Solution Explorer högerklickar du på projektet Produkter , väljer Lägg till och väljer Aspire sedan Orchestrator Support.
En dialogruta som anger att Aspire Orchestrator-projektet redan finns väljer du OK.
Öppna -filen i projektet AppHost.cs. Observera den här kodraden som registrerar products-projektet i Aspire orkestreringen:
builder.AddProject<Projects.Products>("products");
Observera också att projektet eShopLite.AppHost nu är beroende av både Store- och Products-projekt.
Skapa ett AppHost-projekt
För att orkestrera befintliga projekt måste du skapa ett nytt AppHost-projekt . Om du vill skapa ett nytt AppHost-projekt från de tillgängliga Aspire mallarna använder du följande .NET CLI-kommando:
dotnet new aspire-apphost -o eShopLite.AppHost
Lägg till AppHost-projektet i den befintliga lösningen:
Lägg till Store-projektet som en projektreferens till AppHost-projektet med följande .NET CLI-kommando:
Mer information om tillgängliga mallar finns i Aspire mallar.
Skapa ett projekt för standardinställningar för tjänster
När AppHost-projektet har skapats måste du skapa ett nytt standardprojekt för tjänsten . Om du vill skapa en ny tjänst som standard projekt från de tillgängliga Aspire mallarna använder du följande .NET CLI-kommando:
dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults
Om du vill lägga till projektet i lösningen använder du följande .NET CLI-kommando:
dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Uppdatera AppHost-projektet för att lägga till en projektreferens till products-projektet :
dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj
Både Store- och Products-projekt måste referera till standardinställningarna för -tjänsten projektet så att de enkelt kan inkludera tjänstidentifiering. För att lägga till en referens till projektet servicestandardvärden i projektet Store, använd följande CLI-kommando .NET.
dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Samma kommando med något annorlunda sökvägar bör användas för att lägga till en referens till projektet service defaults i projektet Products.
dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
I både Store- och Products-projekt uppdaterar du deras Program.cs filer och lägger till följande rad direkt efter deras var builder = WebApplication.CreateBuilder(args); rad:
builder.AddServiceDefaults();
Uppdatera AppHost-projektet
Öppna filen för AppHost.csAppHost-projektet och ersätt dess innehåll med följande C#-kod:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.Store>("store");
builder.AddProject<Projects.Products>("products");
builder.Build().Run();
Föregående kod:
- Skapar en ny DistributedApplicationBuilder instans.
- Lägger till projektet Store till orkestratorn.
- Lägger till projektet Products till orchestrator.
- Bygger och kör orkestreraren.
Tjänsteupptäckt
I det här läget är båda projekten en del av Aspire orkestreringen, men Store-projektet måste förlita sig på Products-bakändadressen via Aspiretjänstupptäckning. Om du vill aktivera tjänstidentifiering öppnar du filen AppHost.cs i eShopLite.AppHost- projekt och uppdaterar koden så att builder lägger till en referens till projektet Products:
var builder = DistributedApplication.CreateBuilder(args);
var products = builder.AddProject<Projects.Products>("products");
builder.AddProject<Projects.Store>("store")
.WithExternalHttpEndpoints()
.WithReference(products)
.WaitFor(products);
builder.Build().Run();
Föregående kod uttrycker att projektet Store beror på projektet Products. Mer information finns i Aspire AppHost: Referensresurser. Den här referensen används för att upptäcka adressen till projektet Products vid körningstid. Dessutom är projektet Store konfigurerat att använda externa HTTP-slutpunkter. Om du senare väljer att distribuera den här appen, behöver du anropet till WithExternalHttpEndpoints för att säkerställa att den är offentlig till omvärlden. Slutligen ser API:et WaitFor till att Store-appen väntar på att appen Products ska vara redo att hantera begäranden.
Uppdatera sedan appsettings.json i projektet Store med följande JSON:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ProductEndpoint": "http://products",
"ProductEndpointHttps": "https://products"
}
Adresserna för båda slutpunkterna använder nu namnet "products" som lades till i orchestrator i AppHost. Dessa namn används för att identifiera adressen för projektet Products.
Utforska den registrerade appen
Nu ska vi starta lösningen och undersöka det nya beteendet som Aspire ger.
Note
Observera att projektet eShopLite.AppHost är det nya startprojektet.
- För att starta felsökningen i Visual Studio, tryck på F5, Visual Studio som bygger projekten.
- Om dialogrutan Starta Docker Desktop visas väljer du Ja. Visual Studio startar Docker motorn och skapar nödvändiga containrar. När distributionen är klar visas Aspire-instrumentpanelen.
- På instrumentpanelen väljer du slutpunkten för produkter-projektet. En ny webbläsarflik visas och visar produktkatalogen i JSON format.
- På instrumentpanelen väljer du endpointen för projektet store. En ny webbläsarflik visas och visar webbappens startsida.
- I menyn till vänster väljer du Produkter. Produktkatalogen visas.
- Stäng webbläsaren om du vill sluta felsöka.
Ta bort den launch.json fil som du skapade tidigare. Den tjänar inte längre något syfte. Starta i stället AppHost-projektet , som samordnar de andra projekten:
Starta AppHost-projektet genom att köra följande kommando:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csprojNote
Om Docker Desktop (eller Podman) inte körs får du ett fel. Starta containerkörningen och försök igen.
- På instrumentpanelen väljer du slutpunkten för produkter-projektet. En ny webbläsarflik visas och visar produktkatalogen i JSON format.
- På instrumentpanelen väljer du endpointen för projektet store. En ny webbläsarflik visas och visar webbappens startsida.
- I menyn till vänster väljer du Produkter. Produktkatalogen visas.
- Stäng webbläsaren om du vill sluta felsöka.
Grattis, du har lagt till orkestrering till din befintliga webbapp Aspire. Nu kan du lägga till Aspire integreringar och använda verktyget Aspire för att effektivisera din molnbaserade webbappsutveckling.