Udostępnij za pośrednictwem


Samouczek: dodawanie .NET Aspire do istniejącej aplikacji .NET

Jeśli masz istniejące mikrousługi i .NET aplikację internetową, możesz dodać do niej .NET Aspire i uzyskać wszystkie dołączone funkcje i korzyści. W tym artykule dodasz .NET Aspire orkiestrację do prostego, istniejącego projektu typu .NET 9. Dowiesz się, jak wykonywać następujące działania:

  • Omówienie struktury istniejącej aplikacji mikrousług.
  • Dodaj istniejące projekty do orkiestracji .NET.NET Aspire.
  • Zrozum, jak rejestracja wpływa na projekty.
  • Uruchom projekt .NET.NET Aspire.

Warunki wstępne

Aby pracować z .NET.NET Aspire, musisz mieć lokalnie zainstalowane następujące elementy:

Aby uzyskać więcej informacji, zobacz .NET.NET Aspire setup and toolingi .NET.NET Aspire SDK.

Zacznij

Zacznijmy od uzyskania kodu dla rozwiązania:

  1. Otwórz wiersz polecenia i zmień katalogi na miejsce, w którym chcesz przechowywać kod.

  2. Aby skopiować przykładowe rozwiązanie do .NET, użyj następującego polecenia git clone:

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

Eksplorowanie przykładowej aplikacji

W tym artykule użyto rozwiązania .NET 9 z trzema projektami:

  • Jednostki danych: ten projekt jest przykładową biblioteką klas. Definiuje klasę Product używaną w aplikacji internetowej i internetowym interfejsie API.
  • Produkty: Ten przykładowy webowy interfejs API zwraca listę produktów w katalogu oraz ich właściwości.
  • Store: w tym przykładzie Blazor Aplikacja internetowa wyświetla katalog produktów odwiedzającym witrynę internetową.

Otwórz i rozpocznij debugowanie projektu, aby sprawdzić jego domyślne zachowanie:

  1. Uruchom Visual Studio, a następnie wybierz Plik>Otwórz>Projekt/Rozwiązanie.

  2. Przejdź do folderu najwyższego poziomu sklonowanego rozwiązania, wybierz eShopLite.sln, a następnie wybierz Otwórz.

  3. W eksploratorze rozwiązań kliknij prawym przyciskiem myszy rozwiązanie eShopLite, a następnie wybierz pozycję Konfiguruj projekty startowe.

  4. Wybierz pozycję Wiele projektów startowych.

  5. W kolumnie Akcja wybierz Rozpocznij dla projektów Products i Store.

  6. Wybierz pozycję OK.

  7. Aby rozpocząć debugowanie rozwiązania, naciśnij F5 lub wybierz pozycję Rozpocznij.

  8. Dwie strony są otwierane w przeglądarce:

    • Na stronie są wyświetlane produkty w formacie JSON z wywołania API produktów.
    • Strona wyświetla główną stronę witryny internetowej. W menu po lewej stronie wybierz pozycję Products, aby wyświetlić wykaz uzyskany z internetowego interfejsu API.
  9. Aby zatrzymać debugowanie, zamknij przeglądarkę.

  1. Uruchom Visual Studio Code i otwórz sklonowany folder. W terminalu, w którym sklonujesz repozytorium, uruchom następujące polecenie:

    code .
    
  2. Wybierz pozycję menu Uruchom i Debuguj lub naciśnij Ctrl+Shift+D.

  3. Wybierz link utwórz plik launch.json.

    Visual Studio Code: Uruchom i debuguj, aby utworzyć plik launch.json.

  4. Skopiuj i wklej następujący JSON do tego pliku, a następnie zapisz:

    {
        "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. Aby rozpocząć debugowanie rozwiązania, naciśnij F5 lub wybierz pozycję Rozpocznij.

  6. Dwie strony są otwierane w przeglądarce:

    • Na stronie są wyświetlane produkty w formacie JSON z wywołania API produktów.
    • Strona wyświetla stronę główną witryny internetowej. W menu po lewej stronie wybierz pozycję Products, aby wyświetlić wykaz uzyskany z internetowego interfejsu API.
  7. Aby zatrzymać debugowanie, zamknij przeglądarkę, a następnie dwukrotnie wybierz przycisk Zatrzymaj (raz dla każdego uruchomionego wystąpienia debugowania).


  1. Otwórz okno terminalu i zmień katalogi na nowo sklonowane repozytorium.

  2. Aby uruchomić aplikację Products, uruchom następujące polecenie:

    dotnet run --project ./Products/Products.csproj
    
  3. Zostanie otwarta strona przeglądarki, na której wyświetli się JSON dotyczące produktów.

  4. W osobnym oknie terminalu ponownie zmień katalog na sklonowane repozytorium.

  5. Uruchom aplikację Store, uruchamiając następujące polecenie:

    dotnet run --project ./Store/Store.csproj
    
  6. Przeglądarka otwiera stronę wyświetlającą stronę główną witryny internetowej. W menu po lewej stronie wybierz pozycję Products, aby wyświetlić wykaz uzyskany z internetowego interfejsu API.

  7. Aby zatrzymać debugowanie, zamknij przeglądarkę i naciśnij Ctrl+C w obu terminalach.

Dodaj .NET.NET Aspire do aplikacji internetowej Sklepu

Teraz zarejestrujmy projekt Store, który implementuje interfejs użytkownika sieci Web, w .NET.NET Aspire orkiestracji:

  1. W Visual Studio, w Eksploratorze rozwiązań, kliknij prawym przyciskiem myszy projekt Store, wybierz pozycję Dodaj, a następnie wybierz pozycję .NET.NET Aspire Orchestrator Support.

  2. W dialogu Dodaj .NETobsługę.NET Aspire Orchestratora wybierz pozycję OK.

    Zrzut ekranu przedstawia okno dialogowe Dodaj obsługę Orchestratora .NET.NET Aspire.

Teraz powinny istnieć dwa nowe projekty, które zostały dodane do rozwiązania:

  • eShopLite.AppHost: projekt orkiestratora zaprojektowany pod kątem łączenia i konfigurowania różnych projektów i usług aplikacji. Orkiestrator jest ustawiony jako projekt startowy, i zależy od projektu eShopLite.Store.
  • pl-PL: eShopLite.ServiceDefaults: wspólny projekt .NET.NET Aspire do zarządzania konfiguracjami używanymi ponownie w projektach w ramach rozwiązania, związanymi z odpornością , wykrywaniem usług i telemetrią .

W projekcie eShopLite.AppHost otwórz plik . Zwróć uwagę na ten wiersz kodu, który rejestruje projekt Store w orkiestracji .NET.NET Aspire.

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

Aby uzyskać więcej informacji, zobacz AddProject.

Aby dodać projekt Products do .NET.NET Aspire:

  1. W Visual Studio, w Eksploratorze rozwiązań , kliknij prawym przyciskiem myszy projekt Products, wybierz pozycję Dodaj, a następnie wybierz pozycję .NET.NET Aspire Orchestrator Support.

  2. Komunikat wskazujący, że projekt .NET.NET Aspire Orchestrator już istnieje, wybierz OK.

    Zrzut ekranu wskazujący, że program.NET.NET Aspire Orchestrator został już dodany.

W projekcie eShopLite.AppHost otwórz plik . Zwróć uwagę na ten wiersz kodu, który rejestruje projekt Products w aranżacji .NET.NET Aspire:

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

Zwróć również uwagę, że projekt eShopLite.AppHost teraz zależy zarówno od projektów Store, jak i Products.

Tworzenie projektu hosta aplikacji

Aby zorganizować istniejące projekty, należy utworzyć nowy projekt host aplikacji. Aby utworzyć nowy projekt hosta aplikacji z dostępnych szablonów .NET Aspire, użyj następującej komendy CLI .NET:

dotnet new aspire-apphost -o eShopLite.AppHost

Dodaj projekt hosta aplikacji do istniejącego rozwiązania:

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

Dodaj projekt Store jako odwołanie do projektu hosta aplikacji przy użyciu następującego polecenia CLI .NET:

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

Tworzenie projektu domyślnych ustawień usługi

Po utworzeniu projektu hosta aplikacji, należy utworzyć nowy projekt domyślnych usług . Aby utworzyć nowy projekt z ustawieniami domyślnymi usługi z dostępnych szablonów .NET Aspire, użyj następującego polecenia CLI .NET:

dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults

Aby dodać projekt do rozwiązania, użyj następującego polecenia CLI .NET:

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

Zaktualizuj projekt hosta aplikacji , aby dodać odwołanie do projektu Products:

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

Zarówno projekty Store, jak i Products, muszą odwoływać się do projektu domyślnych ustawień usługi , aby można było łatwo uwzględnić odkrywanie usług. Aby dodać odwołanie do projektu domyślnych ustawień usługi w projekcie Store, użyj następującego polecenia CLI .NET:

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

To samo polecenie, używane z nieco różnymi ścieżkami, powinno zostać użyte, aby dodać referencję do projektu domyślnych ustawień usługi w projekcie Products.

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

W projektach Store i Products zaktualizuj pliki Program.cs, dodając następujący wiersz bezpośrednio po wierszu var builder = WebApplication.CreateBuilder(args);:

builder.AddServiceDefaults();

Aktualizowanie projektu hosta aplikacji

Otwórz plik Program.cs hosta aplikacji i zastąp jego zawartość następującym kodem c#:

var builder = DistributedApplication.CreateBuilder(args);

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

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

builder.Build().Run();

Powyższy kod:

  • Tworzy nową instancję DistributedApplicationBuilder.
  • Dodaje projekt Store do orkiestratora.
  • Dodaje do orkiestratora projekt Products.
  • Buduje i uruchamia orkiestratora.

Odnajdywanie usług

W tym momencie oba projekty są częścią orkiestracji .NET.NET Aspire, ale projekt Store musi polegać na adresie zaplecza Products poprzez odnajdywanie usług w .NET.NET Aspire. Aby włączyć odnajdywanie usług, otwórz plik Program.cs w projekcie eShopLite.AppHost i zaktualizuj kod, aby builder dodał odwołanie do projektu Products.

var builder = DistributedApplication.CreateBuilder(args);

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

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

builder.Build().Run();

Powyższy kod oznacza, że projekt Store zależy od projektu Products. Więcej informacji można znaleźć w .NET.NET Aspire hosta aplikacji: Zasoby referencyjne. To odniesienie służy do odnajdywania adresu projektu produkty podczas wykonywania programu. Ponadto projekt Store jest skonfigurowany do używania zewnętrznych punktów końcowych HTTP. Jeśli później zdecydujesz się wdrożyć tę aplikację, konieczne będzie wywołanie WithExternalHttpEndpoints, aby upewnić się, że jest ona publiczna na zewnątrz.

Następnie zaktualizuj appsettings.json w projekcie Store, wykonując następujące JSON:

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

Adresy dla obu końcowych punktów obecnie używają nazwy "products", która została dodana do orkiestratora w host aplikacji. Te nazwy służą do odnajdywania adresu projektu Products.

Eksplorowanie zarejestrowanej aplikacji

Rozpocznijmy rozwiązanie i przeanalizujmy nowe zachowanie, które .NET.NET Aspire oferuje.

Notatka

Zwróć uwagę, że projekt eShopLite.AppHost jest nowym projektem startowym.

  1. W Visual Studio aby rozpocząć debugowanie i zbudować projekty, naciśnij F5Visual Studio.
  2. Jeśli zostanie wyświetlone okno dialogowe Start Docker Desktop, wybierz Tak. Visual Studio uruchamia aparat Docker i tworzy niezbędne kontenery. Po zakończeniu wdrażania zostanie wyświetlony pulpit nawigacyjny .NET.NET Aspire.
  3. Na panelu sterowania wybierz punkt końcowy dla projektu produktów. Zostanie wyświetlona nowa karta przeglądarki i zostanie wyświetlony katalog produktów w formacie JSON.
  4. Na pulpicie nawigacyjnym wybierz punkt końcowy dla projektu store. Zostanie wyświetlona nowa karta przeglądarki i zostanie wyświetlona strona główna aplikacji internetowej.
  5. W menu po lewej stronie wybierz pozycję Products. Zostanie wyświetlony katalog produktów.
  6. Aby zatrzymać debugowanie, zamknij przeglądarkę.

Usuń utworzony wcześniej plik launch.json, który nie służy już celowi. Zamiast tego uruchom projekt host aplikacji , który organizuje inne projekty:

  1. Uruchom projekt hosta aplikacji, klikając prawym przyciskiem myszy projekt eShopLite.AppHost w Eksploratorze rozwiązań i wybierając Debug>Uruchom nowe wystąpienie:

    Visual Studio Code: Eksplorator rozwiązań wybierz pozycję Debuguj > Uruchom nowe wystąpienie.

    Notatka

    Jeśli program Docker Desktop (lub Podman) nie jest uruchomiony, wystąpi błąd. Uruchom silnik kontenera zgodny ze standardem OCI i spróbuj ponownie.

  1. Uruchom projekt hosta aplikacji , uruchamiając następujące polecenie:

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

    Notatka

    Jeśli program Docker Desktop (lub Podman) nie jest uruchomiony, wystąpi błąd. Uruchom silnik kontenera zgodny ze standardem OCI i spróbuj ponownie.

  1. W pulpicie wybierz punkt końcowy dla projektu products. Zostanie wyświetlona nowa karta przeglądarki i zostanie wyświetlony katalog produktów w formacie JSON.
  2. Na pulpicie nawigacyjnym wybierz punkt końcowy dla projektu store. Zostanie wyświetlona nowa karta przeglądarki i zostanie wyświetlona strona główna aplikacji internetowej.
  3. W menu po lewej stronie wybierz pozycję Products. Zostanie wyświetlony katalog produktów.
  4. Aby zatrzymać debugowanie, zamknij przeglądarkę.

Gratulacje, dodaliście orkiestrację .NET.NET Aspire do istniejącej aplikacji internetowej. Teraz możesz dodać integrację .NET Aspire i użyć narzędzia .NET Aspire, aby usprawnić tworzenie aplikacji internetowych natywnych dla chmury.