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.
  • Zarejestruj istniejące projekty w orkiestracji .NET.NET Aspire.
  • Zrozumienie zmian wynikających z rejestracji w projektach.
  • 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 pozycję 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 do 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.
  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 , aby utworzyć uruchamianie.json link do pliku.

    Visual Studio Code: Tworzenie uruchamiania i debugowanie.json pliku.

  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 do 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 sklepu Store, który implementuje interfejs użytkownika sieci Web w orkiestracji:

  1. W w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt Store Store, wybierz pozycję Dodaj, a następnie wybierz pozycję 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 zależy teraz 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 interfejsu wiersza polecenia :

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

Tworzenie projektu domyślnego usługi

Po utworzeniu projektu hosta aplikacji, należy utworzyć nowy projekt domyślnych usług . Aby utworzyć nowe ustawienia domyślne usługi projektu z dostępnych szablonów .NET Aspire, użyj następującego polecenia interfejsu wiersza polecenia .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 domyślnych ustawień usługi projektu Store, użyj następującego polecenia interfejsu wiersza polecenia .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ć odwołanie do domyślnych ustawień usługi w projekcie 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ą koordynacji , ale Store musi mieć możliwość odkrywania adresu zaplecza systemu Products za pośrednictwem usługi odkrywania. Aby włączyć odnajdywanie usług, otwórz plik Program.cs w eShopLite.AppHost i zaktualizuj kod, który Store dodaje 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 wyraża, że projekt Store Store zależy od projektu Products. Więcej informacji można znaleźć w host aplikacji .NET.NET Aspire: Zasoby referencyjne. To odniesienie służy do odnalezienia adresu projektu Products. 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 punktów końcowych aktualnie używają nazwy "products", która została dodana do orkiestratora w hostie 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, naciśnij F5, aVisual Studio buduje projekty.
  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 pulpicie wybierz punkt końcowy projektu dla 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ń wykonanie . Plikjson, który utworzyłeś wcześniej, nie ma już żadnego zastosowania. 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. Na pulpicie wybierz punkt końcowy projektu dla produktów . 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.