Dela via


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

Om du har befintliga mikrotjänster och .NET webbapp kan du lägga till .NET Aspire till den och få alla inkluderade funktioner och fördelar. I den här artikeln lägger du till .NET 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 .NET.NET Aspire orkestrering.
  • Förstå de ändringar som registreringen gör i projekten.
  • Starta .NET.NET Aspire projektet.

Förutsättningar

Om du vill arbeta med .NET.NET Aspirebehöver du följande installerat lokalt:

Mer information finns i .NET.NET Aspire installation och verktygoch .NET.NET Aspire SDK.

Sätta igång

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.

Ö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.
    • En sida 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.
  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 alternativet för att skapa en lansering.json filen länken.

    Visual Studio Code: Kör och felsök skapa startfiljson 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.
    • En sida 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 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.

Lägga till .NET.NET Aspire i Store-webbappen

Nu ska vi registrera projektet Store, som implementerar webbanvändargränssnittet, i .NET.NET Aspire orkestrering:

  1. I Visual Studioi Solution Explorerhögerklickar du på projektet Store, väljer Lägg tilloch väljer sedan .NET.NET Aspire Orchestrator Support.

  2. I dialogrutan Lägg till .NET.NET Aspire Orchestrator Support väljer du OK.

    Skärmbild av dialogrutan Lägg till .NET.NET Aspire Orchestrator Support.

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 .NET.NET Aspire delat projekt för att hantera konfigurationer som återanvänds i projekt i din lösning som rör motståndskraft, tjänstidentifieringoch telemetri.

Öppna -filen i projektet Program.cs. Observera den här kodraden som registrerar Store-projektet i .NET.NET Aspire orkestrering:

builder.AddProject<Projects.Store>("store");

Mer information finns i AddProject.

Så här lägger du till projektet Products i .NET.NET Aspire:

  1. I Visual Studio, i Solution Explorer, högerklicka på projektet Products, välj Lägg till, och välj sedan .NET.NET Aspire Orchestrator Support.

  2. En dialogruta som anger att .NET.NET Aspire Orchestrator-projektet redan finns. Välj OK.

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

Öppna -filen i projektet Program.cs. Observera den här kodraden som registrerar projektet Products i .NET.NET Aspire orchestration:

builder.AddProject<Projects.Products>("products");

Observera också att projektet eShopLite.AppHost nu är beroende av både Store- och Products-projekt.

Skapa ett appvärdprojekt

För att orkestrera befintliga projekt måste du skapa en ny appvärd projekt. Använd följande CLI-kommando för att skapa ett nytt .NET Aspire från de tillgängliga .NET mallarna.

dotnet new aspire-apphost -o eShopLite.AppHost

Lägg till appvärd projektet till en befintlig lösning:

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

Lägg till projektet Store som en projektreferens till appvärd-projektet med hjälp av följande .NET CLI-kommando:

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

Skapa ett projekt för standardinställningar för tjänster

När appvärdprojektet har skapats måste du skapa ett nytt standardvärden för tjänsten projekt. Om du vill skapa en ny tjänst som standard projekt från de tillgängliga .NET 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 projektet för applikationsvärd för att lägga till en referens till projektet Products:

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 -tjänstens standardvärden i projektet Store, använd följande CLI-kommando för .NET.

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

Samma kommando med något annorlunda sökväg bör användas för att lägga till en referens till standardvärdena för projektet -tjänst 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 appvärdprojektet

Öppna Program.cs-filen för värd-appen i 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 ingår båda projekten i .NET.NET Aspire orkestrering, men Store- måste kunna identifiera Products serverdelsadress via .NET.NET Aspiretjänstidentifiering. Om du vill aktivera tjänstidentifiering öppnar du filen Program.cs i eShopLite.AppHost och uppdaterar koden som Store- 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);

builder.Build().Run();

Föregående kod uttrycker att projektet Store beror på projektet Products. Mer information finns i .NET.NET Aspire appvärd: Referensresurser. Den här referensen används för att identifiera adressen för projektet Products. 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.

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 slutpunkterna använder nu namnet "products" som lades till i orkestratorn i app-värd. 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 beteende som .NET.NET Aspire tillhandahåller.

Notera

Observera att projektet eShopLite.AppHost är det nya startprojektet.

  1. I Visual Studiobörjar du felsöka genom att trycka på F5Visual Studio skapar 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 instrumentpanelen .NET.NET Aspire.
  3. På instrumentpanelen väljer du slutpunkten för -produkter i-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 lanseringen .json-filen som du skapade tidigare tjänar inte längre något syfte. I stället, starta appvärdsprojektet, som samordnar de övriga projekten:

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

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

    Notera

    Om Docker Desktop (eller Podman) inte körs får du ett felmeddelande. Starta den OCI-kompatibla containermotorn och försök igen.

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

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

    Notera

    Om Docker Desktop (eller Podman) inte körs får du ett felmeddelande. Starta den OCI-kompatibla containermotorn och försök igen.

  1. På instrumentpanelen väljer du slutpunkten för -produkter i-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 .NET.NET Aspire orkestrering i din befintliga webbapp. Nu kan du lägga till .NET Aspire integreringar och använda verktyget .NET Aspire för att effektivisera din molnbaserade webbappsutveckling.