Dela via


Självstudie: Lägga till Aspire i en befintlig .NET-app

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:

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:

  1. Öppna en kommandotolk och byt katalog till den där du vill lagra koden.

  2. Om du vill klona till .NET 9 exempellösning använder du följande git clone kommando:

    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:

Enkelt arkitekturdiagram med tre nivåer som visar en produktdatabas, ett produkt-API och en butikswebbapp.

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:

  1. Starta Visual Studio och välj sedan File>Open>Project/Solution.

  2. Gå till mappen på den översta nivån för den lösning som du klonade, välj eShopLite.slnoch välj sedan Öppna.

  3. Högerklicka på lösningen eShopLite i Solution Exploreroch välj sedan Konfigurera startprojekt.

  4. Välj Flera startprojekt.

  5. I kolumnen Åtgärd väljer du Starta för både projekten Products och Store.

  6. Välj OK.

  7. Börja felsöka lösningen genom att trycka på F5 eller välja Starta.

  8. 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.
  9. Stäng webbläsaren om du vill sluta felsöka.

  1. Starta Visual Studio Code och öppna mappen som du klonade. Kör följande kommando från terminalen där du klonade lagringsplatsen:

    code .
    
  2. Välj menyalternativet Kör och felsök eller tryck på Ctrl+Skift+D.

  3. Välj länken för att skapa en launch.json-fil.

    Visual Studio Code: Kör och felsök skapa launch.json fil.

  4. 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"
            }
        ]
    }
    
  5. Börja felsöka lösningen genom att trycka på F5 eller välja Starta.

  6. 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.
  7. 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).

  1. Öppna ett terminalfönster och ändra kataloger till den nyligen klonade lagringsplatsen.

  2. Starta appen Products genom att köra följande kommando:

    dotnet run --project ./Products/Products.csproj
    
  3. En webbläsarsida öppnas och visar JSON för produkterna.

  4. I ett separat terminalfönster ändrar du kataloger till klonad lagringsplats igen.

  5. Starta Store-appen genom att köra följande kommando:

    dotnet run --project ./Store/Store.csproj
    
  6. Webblä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.

  7. 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.

  1. Högerklicka Visual Studiopå Store-projektet i Solution Explorer, välj Lägg till och välj Aspire sedan Orchestrator Support.

  2. I dialogrutan Lägg till Aspire Orchestrator-stöd väljer du OK.

    Skärmbild av dialogrutan Lägg till Aspire Orchestrator-stöd.

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:

  1. I Visual Studioi Solution Explorer högerklickar du på projektet Produkter , väljer Lägg till och väljer Aspire sedan Orchestrator Support.

  2. En dialogruta som anger att Aspire Orchestrator-projektet redan finns väljer du OK.

    Skärmbild som anger att Aspire Orchestrator redan har lagts till.

Ö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:

dotnet sln ./eShopLite.sln add ./eShopLite.AppHost/eShopLite.AppHost.csproj

Lägg till Store-projektet som en projektreferens till AppHost-projektet med följande .NET CLI-kommando:

dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Store/Store.csproj

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.

  1. För att starta felsökningen i Visual Studio, tryck på F5, Visual Studio som bygger projekten.
  2. 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.
  3. På instrumentpanelen väljer du slutpunkten för produkter-projektet. En ny webbläsarflik visas och visar produktkatalogen i JSON format.
  4. På instrumentpanelen väljer du endpointen för projektet store. En ny webbläsarflik visas och visar webbappens startsida.
  5. I menyn till vänster väljer du Produkter. Produktkatalogen visas.
  6. 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:

  1. Starta AppHost-projektet genom att högerklicka på projektet eShopLite.AppHost i Solution Explorer och välja Felsöka>Starta ny instans:

    Visual Studio Code: Solution Explorer väljer Felsöka > Starta ny instans.

    Note

    Om Docker Desktop (eller Podman) inte körs får du ett fel. Starta containerkörningen och försök igen.

  1. Starta AppHost-projektet genom att köra följande kommando:

    dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
    

    Note

    Om Docker Desktop (eller Podman) inte körs får du ett fel. Starta containerkörningen och försök igen.

  1. På instrumentpanelen väljer du slutpunkten för produkter-projektet. En ny webbläsarflik visas och visar produktkatalogen i JSON format.
  2. På instrumentpanelen väljer du endpointen för projektet store. En ny webbläsarflik visas och visar webbappens startsida.
  3. I menyn till vänster väljer du Produkter. Produktkatalogen visas.
  4. 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.