Sdílet prostřednictvím


Kurz: Přidání Aspire do existující aplikace .NET

Pokud máte existující mikroslužby a .NET webovou aplikaci, můžete do ní přidat Aspire a získat všechny zahrnuté funkce a výhody. V tomto článku přidáte Aspire orchestraci do jednoduchého, již existujícího projektu .NET 9. Naučíte se:

  • Seznamte se se strukturou existující aplikace mikroslužeb.
  • Zapojte existující projekty do Aspire orchestrace.
  • Pochopte změny, které zápis způsobuje v projektech.
  • Aspire Spusťte projekt.

Prerequisites

Pokud chcete pracovat s Aspire, potřebujete místně nainstalovat následující:

Další informace najdete v tématu Aspire nastavení a nástroje a Aspire SDK.

Začínáme

Začněme získáním kódu pro řešení:

  1. Otevřete příkazový řádek a změňte adresáře na místo, kam chcete kód uložit.

  2. Pokud chcete klonovat do ukázkového řešení .NET 9, použijte následující příkaz git clone:

    git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
    

Prozkoumání ukázkové aplikace

Tento článek používá řešení .NET 9 se třemi projekty:

  • Data Entities: Tento projekt je ukázkovou knihovnou tříd. Definuje Product třídu použitou ve webové aplikaci a webovém rozhraní API.
  • Produkty: Toto ukázkové webové rozhraní API vrátí seznam produktů v katalogu a jejich vlastnosti.
  • store: Tento příklad Blazor Web App zobrazí katalog produktů návštěvníkům webu.

Architektura ukázkové aplikace

Pokud chcete lépe porozumět struktuře ukázkové aplikace, zvažte následující diagram, který znázorňuje jeho jednoduchou třívrstvou architekturu:

Jednoduchý diagram třívrstvé architektury zobrazující produktovou databázi, rozhraní API produktu a webovou aplikaci pro Store

Tento vrstvený návrh zajišťuje jasné oddělení obav, což usnadňuje údržbu a škálování aplikace.

Spuštění ukázkové aplikace

Otevřete a spusťte ladění projektu, abyste prozkoumali jeho výchozí chování:

  1. Spusťte Visual Studio a pak vyberte Soubor>Otevřít>Projekt/Řešení.

  2. Přejděte do složky nejvyšší úrovně naklonovaného řešení, vyberte eShopLite.slna pak vyberte Otevřít.

  3. V Průzkumníku řešeníklikněte pravým tlačítkem na řešení eShopLite a pak vyberte Konfigurovat spouštěcí projekty.

  4. Zvolte více startovacích projektů.

  5. Ve sloupci Akce vyberte Spustit pro projekty Products i Store.

  6. Vyberte OK.

  7. Pokud chcete spustit ladění řešení, stiskněte F5 nebo vyberte Spustit.

  8. V prohlížeči se otevřou dvě stránky:

    • Na stránce se zobrazují produkty ve formátu JSON z volání Web API Produktů.
    • Na stránce se zobrazuje domovská stránka webu. V nabídce vlevo vyberte Products a zobrazte katalog získaný z webového rozhraní API.
  9. Pro zastavení ladění zavřete prohlížeč.

  1. Spusťte Visual Studio Code a otevřete složku, kterou jste naklonovali. V terminálu, kde jste naklonovali úložiště, spusťte následující příkaz:

    code .
    
  2. Vyberte položku nabídky Spustit a ladit nebo stiskněte Ctrl+Shift+D.

  3. Vyberte odkaz vytvořit soubor launch.json.

    Visual Studio Code: Spuštění a ladění souboru launch.json.

  4. Zkopírujte a vložte následující JSON do tohoto souboru a uložte:

    {
        "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. Pokud chcete spustit ladění řešení, stiskněte F5 nebo vyberte Spustit.

  6. V prohlížeči se otevřou dvě stránky:

    • Na stránce se zobrazují produkty ve formátu JSON z volání Web API Produktů.
    • Na stránce se zobrazuje domovská stránka webu. V nabídce vlevo vyberte Products a zobrazte katalog získaný z webového rozhraní API.
  7. Pokud chcete ladění zastavit, zavřete prohlížeč a pak dvakrát vyberte tlačítko Zastavit (jednou pro každou spuštěnou instanci ladění).

  1. Otevřete okno terminálu a změňte adresáře do nově naklonovaného úložiště.

  2. Spuštěním následujícího příkazu spusťte aplikaci Products:

    dotnet run --project ./Products/Products.csproj
    
  3. Otevře se stránka prohlížeče zobrazující JSON pro produkty.

  4. V samostatném okně terminálu znovu změňte adresáře na klonované úložiště.

  5. Spusťte aplikaci Store spuštěním následujícího příkazu:

    dotnet run --project ./Store/Store.csproj
    
  6. Prohlížeč otevře stránku, která zobrazuje domovskou stránku webu. V nabídce vlevo vyberte Products a zobrazte katalog získaný z webového rozhraní API.

  7. Ladění zastavíte tak, že zavřete prohlížeč a v obou terminálech stisknete Ctrl+C.

Bez ohledu na to, který nástroj použijete – ruční spuštění více projektů nebo konfigurace připojení mezi nimi je zdlouhavé. Kromě toho projekt Store vyžaduje explicitní konfiguraci koncového bodu pro rozhraní API produktů , což je náročné i náchylné k chybám. Tady Aspire zjednodušuje a urychluje proces!

Ujistěte se, že šablony Aspire jsou nainstalované.

Pokud jste dříve pracovali na Aspire svém aktuálním počítači, pravděpodobně už máte nainstalované potřebné .NET šablony projektů. Kontrolu můžete provést pomocí následujícího příkazu:

dotnet new list aspire

Aspire Pokud jsou šablony nainstalované, výstup bude vypadat přibližně takto:

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

V tomto kurzu přidáte projekt AppHost a projekt Výchozí služby.

Pokud předchozí příkaz nenalezl žádné šablony, musíte je nainstalovat. Spusťte tento příkaz:

dotnet new install Aspire.ProjectTemplates

Další informace o Aspire šablonách najdete v tématu Aspire šablony.

Přidejte Aspire do webové aplikace obchodu

Nyní zaregistrujeme projekt Store, který implementuje webové uživatelské rozhraní v Aspire orchestraci:

  1. V Visual Studioprůzkumníku řešení klikněte pravým tlačítkem myši na projekt Store , vyberte Přidat a pak vyberte Aspire Podpora orchestrátoru.

  2. V dialogovém okně Přidat Aspire podporu nástroje Orchestrator vyberte OK.

    Snímek obrazovky s dialogovým oknem Přidat Aspire podporu orchestrátoru

Teď byste měli mít dva nové projekty, oba přidané do řešení:

  • eShopLite.AppHost: Projekt orchestrátoru navržený pro připojení a konfiguraci různých projektů a služeb vaší aplikace. Orchestrátor je nastavený jako spouštěcí projekta závisí na projektu eShopLite.Store.
  • eShopLite.ServiceDefaults: Aspire Sdílený projekt pro správu konfigurací, které se opakovaně používají napříč projekty ve vašem řešení související s odolností, zjišťováním služeb a telemetrií.

V projektu eShopLite.AppHost otevřete soubor AppHost.cs. Všimněte si tohoto řádku kódu, který zaregistruje projekt Store v Aspire orchestraci:

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

Další informace najdete v tématu AddProject.

Přidání projektu Products do Aspire:

  1. V Visual Studioprůzkumníku řešení klikněte pravým tlačítkem myši na projekt Produkty , vyberte Přidat a pak vyberte Aspire Podpora orchestrátoru.

  2. Dialogové okno označující, že Aspire projekt Orchestrator již existuje, vyberte OK.

    Snímek obrazovky s oznámením, že už byl přidán orchestrátor TheAspire

V projektu eShopLite.AppHost otevřete soubor AppHost.cs. Všimněte si tohoto řádku kódu, který zaregistruje projekt Products v Aspire orchestraci:

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

Všimněte si také, že projekt eShopLite.AppHost teď závisí na projektech Store a Products.

Vytvoření projektu AppHost

Pokud chcete orchestrovat existující projekty, musíte vytvořit nový projekt AppHost . Pokud chcete vytvořit nový projekt AppHost z dostupných Aspire šablon, použijte následující .NET příkaz rozhraní příkazového řádku:

dotnet new aspire-apphost -o eShopLite.AppHost

Přidejte projekt AppHost do existujícího řešení:

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

Pomocí následujícího příkazu rozhraní příkazového řádku přidejte projekt Store jako odkaz na projekt .NET:

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

Další informace o dostupných šablonách najdete v šablonáchAspire.

Vytvoření výchozího projektu služby

Po vytvoření projektu AppHost je potřeba vytvořit nový projekt výchozí služby . Pokud chcete vytvořit nové výchozí nastavení služby pro projekt z dostupných šablon Aspire, použijte následující příkaz v příkazovém řádku .NET:

dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults

Pokud chcete přidat projekt do řešení, použijte následující příkaz .NET rozhraní příkazového řádku:

dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj

Aktualizujte projekt AppHost tak, aby se přidal odkaz na projekt Products :

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

Projekty Store a Products musí odkazovat na projekt výchozích služeb , aby mohly snadno zahrnovat zjišťování služeb . Pokud chcete přidat odkaz na projekt výchozí nastavení služby do projektu Store, použijte následující příkaz CLI .NET:

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

Stejný příkaz se stejnými mírně odlišnými cestami by se měl použít k přidání odkazu na projekt výchozích služeb do projektu Products.

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

V projektech Store i Products aktualizujte soubory Program.cs a hned za řádek var builder = WebApplication.CreateBuilder(args); přidejte následující řádek:

builder.AddServiceDefaults();

Aktualizace projektu AppHost

AppHost.cs Otevřete soubor projektu AppHost a nahraďte jeho obsah následujícím kódem jazyka C#:

var builder = DistributedApplication.CreateBuilder(args);

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

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

builder.Build().Run();

Předchozí kód:

  • Vytvoří novou instanci DistributedApplicationBuilder.
  • Přidá projekt Store do orchestrátoru.
  • Přidá projekt Products do orchestrátoru.
  • Sestaví a spustí orchestrátor.

Zjišťování služeb

V tuto chvíli jsou oba projekty součástí orchestrace, ale projekt Store musí využívat back-endovou adresu Products prostřednictvím vyhledávání služeb . Pokud chcete povolit zjišťování služeb, otevřete soubor AppHost.cs v projektu eShopLite.App Host a aktualizujte kód tak, aby builder přidal odkaz na projekt 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();

Předchozí kód vyjadřuje, že projekt Store závisí na projektu Products. Další informace naleznete v tématu Aspire AppHost: Referenční zdroje. Tento odkaz slouží ke zjištění adresy projektu Products za běhu. Kromě toho je projekt Store nakonfigurovaný tak, aby používal externí koncové body HTTP. Pokud se později rozhodnete tuto aplikaci nasadit, budete potřebovat volání WithExternalHttpEndpoints, abyste zajistili, že bude veřejná pro vnější svět. Rozhraní WaitFor API nakonec zajistí, že aplikace Store čeká, až bude aplikace Products připravena obsluhovat požadavky.

Dále aktualizujte appsettings.json v projektu Store následujícím JSON:

{
  "DetailedErrors": true,
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ProductEndpoint": "http://products",
  "ProductEndpointHttps": "https://products"
}

Adresy obou koncových bodů teď používají název "products", který byl přidán do orchestrátoru v AppHost. Tyto názvy slouží ke zjištění adresy projektu Products.

Prozkoumejte přihlášenou aplikaci

Začněme řešení a prozkoumáme nové chování, které Aspire poskytuje.

Note

Všimněte si, že projekt eShopLite.AppHost je nový spouštěný projekt.

  1. V Visual Studiospustíte ladění stisknutím klávesy F5Visual Studio sestaví projekty.
  2. Pokud se zobrazí dialogové okno Start Docker Desktop, vyberte Ano. Visual Studio spustí modul Docker a vytvoří potřebné kontejnery. Po dokončení nasazení se zobrazí Aspire řídicí panel.
  3. Na řídicím panelu vyberte koncový bod pro produkty projektu. Zobrazí se nová karta prohlížeče a zobrazí katalog produktů ve formátu JSON.
  4. Na řídicím panelu vyberte koncový bod projektu obchodu. Zobrazí se nová karta prohlížeče a zobrazí domovskou stránku webové aplikace.
  5. V nabídce vlevo vyberte Produkty. Zobrazí se katalog produktů.
  6. Pro zastavení ladění zavřete prohlížeč.

Odstraňte soubor launch.json, který jste vytvořili dříve, už neslouží k účelu. Místo toho spusťte projekt AppHost , který orchestruje ostatní projekty:

  1. Spusťte projekt AppHost tak, že v Průzkumníku řešení kliknete pravým tlačítkem na projekt eShopLite.AppHost a vybereteSpustit novou instanci>:

    Visual Studio Code: Výběr Debug v Průzkumníku řešení, > Spustit novou instanci.

    Note

    Pokud Docker desktop (nebo Podman) není spuštěný, dojde k chybě. Spusťte modul runtime kontejneru a zkuste to znovu.

  1. Spusťte projekt AppHost spuštěním následujícího příkazu:

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

    Note

    Pokud Docker desktop (nebo Podman) není spuštěný, dojde k chybě. Spusťte modul runtime kontejneru a zkuste to znovu.

  1. Na řídicím panelu vyberte koncový bod pro produkty projektu. Zobrazí se nová karta prohlížeče a zobrazí katalog produktů ve formátu JSON.
  2. Na řídicím panelu vyberte koncový bod projektu obchodu. Zobrazí se nová karta prohlížeče a zobrazí domovskou stránku webové aplikace.
  3. V nabídce vlevo vyberte Produkty. Zobrazí se katalog produktů.
  4. Pro zastavení ladění zavřete prohlížeč.

Blahopřejeme, do své existující webové aplikace jste přidali orchestraci Aspire. Teď můžete přidat Aspire integrace a pomocí nástrojů Aspire zjednodušit vývoj nativních cloudových webových aplikací.