Delen via


Zelfstudie: Aspire toevoegen aan een bestaande .NET-app

Als u bestaande microservices en .NET web-app hebt, kunt u er Aspire aan toevoegen en alle inbegrepen functies en voordelen krijgen. In dit artikel voegt u 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 bij Aspire orchestratie.
  • Begrijp hoe inschrijving veranderingen in de projecten aanbrengt.
  • Start het Aspire project.

Prerequisites

Om met Aspire te werken, moet u het volgende lokaal geïnstalleerd hebben:

Zie setup en hulpprogramma's en SDK voor meer informatieAspire.Aspire

Get started

Laten we beginnen met het verkrijgen van de code voor de oplossing:

  1. Open een opdrachtprompt en wijzig mappen in de locatie waar u de code wilt opslaan.

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

Voorbeeld-app-architectuur

Als u meer inzicht wilt krijgen in de structuur van de voorbeeld-app, bekijkt u het volgende diagram, dat de eenvoudige architectuur met drie lagen illustreert:

Eenvoudig architectuurdiagram met drie lagen met een productdatabase, product-API en store-web-app.

Dit gelaagde ontwerp zorgt voor een duidelijke scheiding van zorgen, waardoor de app gemakkelijker te onderhouden en te schalen is.

De voorbeeld-app uitvoeren

Open en start de foutopsporing van het project om het standaardgedrag ervan te onderzoeken:

  1. Start Visual Studio en selecteer Bestand>Open>Project/Oplossing.

  2. Navigeer naar de map op het hoogste niveau van de oplossing die u hebt gekloond, selecteer eShopLite.slnen selecteer vervolgens openen.

  3. Klik in Solution Explorermet de rechtermuisknop op de eShopLite-oplossing en selecteer Opstartprojecten configureren.

  4. Selecteer Meerdere opstartprojecten.

  5. Selecteer in de kolom Actie de optie Start voor zowel de projecten Producten als Winkel.

  6. Kies OK.

  7. Als u de oplossing wilt opsporen, drukt u op F5- of selecteert u Start.

  8. 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.
  9. Sluit de browser om de foutopsporing te stoppen.

  1. 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 .
    
  2. Selecteer het menu-item Uitvoeren en fouten opsporen of druk op Ctrl+Shift+D.

  3. Selecteer de een launch.json bestand maken koppeling.

    Visual Studio Code: launch.json bestand uitvoeren en fouten opsporen.

  4. 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"
            }
        ]
    }
    
  5. Als u de oplossing wilt opsporen, drukt u op F5- of selecteert u Start.

  6. 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.
  7. Als u de foutopsporing wilt stoppen, sluit u de browser en selecteert u vervolgens tweemaal de knop Stop (eenmaal voor elk actieve foutopsporingsexemplaren).

  1. Open een terminalvenster en wijzig mappen in de zojuist gekloonde opslagplaats.

  2. Voer de volgende opdracht uit om de Products-app te starten:

    dotnet run --project ./Products/Products.csproj
    
  3. Er wordt een browserpagina geopend, die de JSON toont voor de producten.

  4. Open een nieuw terminalvenster en navigeer opnieuw naar de gekloneerde opslagplaats.

  5. Start de Store-app door de volgende opdracht uit te voeren:

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

  7. Als u de foutopsporing wilt stoppen, sluit u de browser en drukt u op Ctrl+C- in beide terminals.

Ongeacht welk hulpprogramma u gebruikt: het handmatig starten van meerdere projecten of het configureren van verbindingen tussen deze projecten is tijdrovend. Daarnaast vereist het Store-project expliciete eindpuntconfiguratie voor de Products-API , wat zowel omslachtig als gevoelig is voor fouten. Dit is waar Aspire het proces wordt vereenvoudigd en gestroomlijnd!

Controleren of Aspire sjablonen zijn geïnstalleerd

Als u eerder met Aspire op deze computer hebt gewerkt, hebt u waarschijnlijk de benodigde .NET projectsjablonen al geïnstalleerd. U kunt dit controleren met behulp van de volgende opdracht:

dotnet new list aspire

Als de Aspire sjablonen zijn geïnstalleerd, lijkt de uitvoer op:

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

In deze zelfstudie voegt u een AppHost-project en een Service Defaults-project toe.

Als de vorige opdracht geen sjablonen heeft gevonden, moet u deze installeren. Voer deze opdracht uit:

dotnet new install Aspire.ProjectTemplates

Voor meer informatie over de Aspire sjablonen, zie Aspire sjablonen

Toevoegen Aspire aan de Store-web-app

Laten we nu het Store-project registreren, waarmee de webgebruikersinterface wordt geïmplementeerd, in het Aspire orkestratieproces:

  1. Klik Visual Studioin Solution Explorer met de rechtermuisknop op het Store-project , selecteer Toevoegen en selecteer Aspire Vervolgens Orchestrator-ondersteuning.

  2. Selecteer Aspire in het dialoogvenster Orchestrator-ondersteuning toevoegen.

    Schermopname van het dialoogvenster Orchestrator-ondersteuning toevoegen Aspire .

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 Aspire gedeeld project voor het beheren van configuraties die opnieuw worden gebruikt in de projecten in uw oplossing met betrekking tot tolerantie, servicedetectie en telemetrie.

Open in het project eShopLite.AppHost het bestand AppHost.cs. Let op deze coderegel, waarmee het Store-project wordt geregistreerd in de Aspire indeling:

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

Zie AddProjectvoor meer informatie.

Het project Producten toevoegen aan Aspire:

  1. Klik Visual Studioin Solution Explorer met de rechtermuisknop op het project Producten , selecteer Toevoegen en selecteer Aspire Orchestrator-ondersteuning.

  2. Een dialoogvenster dat aangeeft dat Aspire het Orchestrator-project al bestaat, selecteert u OK.

    Schermopname die aangeeft dat de Aspire Orchestrator al is toegevoegd.

Open in het project eShopLite.AppHost het bestand AppHost.cs. Let op deze coderegel, waarmee het Products project wordt geregistreerd in de Aspire orchestratie.

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

U ziet ook dat het project eShopLite.AppHost nu afhankelijk is van zowel de Store als Products projecten.

Een AppHost-project maken

Als u de bestaande projecten wilt organiseren, moet u een nieuw AppHost-project maken. Als u een nieuw AppHost-project wilt maken op basis van de beschikbare Aspire sjablonen, gebruikt u de volgende .NET CLI-opdracht:

dotnet new aspire-apphost -o eShopLite.AppHost

Voeg het AppHost-project toe aan een bestaande oplossing:

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

Voeg het Store-project toe als een projectreferentie aan het AppHost-project met behulp van de volgende .NET CLI-opdracht:

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

Zie Aspire sjablonen voor meer informatie over de beschikbare sjablonen.

Een 'service defaults' project maken

Nadat het AppHost-project is gemaakt, moet u een nieuw standaardproject voor de service 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 het AppHost-project bij om een projectreferentie toe te voegen aan het project Producten :

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 AppHost-project bijwerken

Open het AppHost.cs bestand van het AppHost-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.
  • Bouwt en voert de orchestrator uit.

Serviceontdekking

Op dit moment maken beide projecten deel uit van orkestratie, maar het Store-project moet vertrouwen op het back-endadres van producten via Aspirede service-ontdekking. Als u servicedetectie wilt inschakelen, opent u het AppHost.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)
       .WaitFor(products);

builder.Build().Run();

De voorgaande code geeft aan dat het project Store afhankelijk is van het project Producten. Zie Aspire AppHost: Referentieresources voor meer informatie. 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. Ten slotte zorgt de API ervoor dat de WaitForStore-app wacht totdat de app Producten gereed is voor het verwerken van aanvragen.

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 AppHost. 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 Aspire biedt.

Note

U ziet dat het eShopLite.AppHost project het nieuwe opstartproject is.

  1. In Visual Studio, druk op F5om te beginnen met foutopsporing,Visual Studio bouwt de projecten.
  2. 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 Aspire dashboard weergegeven.
  3. Selecteer in het dashboard het eindpunt voor de producten project. Er wordt een nieuw browsertabblad weergegeven en de productcatalogus wordt weergegeven in JSON indeling.
  4. 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.
  5. In het menu aan de linkerkant, selecteer Producten. De productcatalogus wordt weergegeven.
  6. 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 het AppHost-project , waarmee de andere projecten worden ingedeeld:

  1. Start het AppHost-project door met de rechtermuisknop te klikken op het project eShopLite.AppHost in Solution Explorer en de foutopsporing>Start New Instance te selecteren:

    Visual Studio Code: Foutopsporing selecteren in de Solution Explorer, > Nieuwe instantie starten.

    Note

    Als Docker Desktop (of Podman) niet wordt uitgevoerd, treedt er een fout op. Start de containerruntime en probeer het opnieuw.

  1. Start het AppHost-project door de volgende opdracht uit te voeren:

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

    Note

    Als Docker Desktop (of Podman) niet wordt uitgevoerd, treedt er een fout op. Start de containerruntime en probeer het opnieuw.

  1. Selecteer in het dashboard het eindpunt voor de producten project. Er wordt een nieuw browsertabblad weergegeven en de productcatalogus wordt weergegeven in JSON indeling.
  2. 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.
  3. In het menu aan de linkerkant, selecteer Producten. De productcatalogus wordt weergegeven.
  4. Sluit de browser om de foutopsporing te stoppen.

Gefeliciteerd, u hebt de orkestratie toegevoegd aan uw bestaande web-app. U kunt nu Aspire integraties toevoegen en de Aspire hulpprogramma's gebruiken om de ontwikkeling van uw cloudeigen web-app te stroomlijnen.