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:
- .NET 8.0 lub .NET 9.0
- Środowisko uruchomieniowe kontenera zgodne ze standardem OCI, takie jak:
- Docker Desktop lub Podman. Aby uzyskać więcej informacji, zobacz Container Runtime.
- Zintegrowane środowisko deweloperskie (IDE) lub edytor kodu, takie jak:
- Visual Studio 2022 w wersji 17.9 lub nowszej (opcjonalnie)
-
Visual Studio Code (opcjonalnie)
- C# Dev Kit: rozszerzenie (opcjonalnie)
- JetBrains Rider z wtyczką .NET.NET Aspire (opcjonalnie)
Aby uzyskać więcej informacji, zobacz .NET.NET Aspire setup and toolingi .NET.NET Aspire SDK.
Zacznij
Zacznijmy od uzyskania kodu dla rozwiązania:
Otwórz wiersz polecenia i zmień katalogi na miejsce, w którym chcesz przechowywać kod.
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:
Uruchom Visual Studio, a następnie wybierz Plik>Otwórz>Projekt/Rozwiązanie.
Przejdź do folderu najwyższego poziomu sklonowanego rozwiązania, wybierz eShopLite.sln, a następnie wybierz Otwórz.
W eksploratorze rozwiązań kliknij prawym przyciskiem myszy rozwiązanie eShopLite, a następnie wybierz pozycję Konfiguruj projekty startowe.
Wybierz pozycję Wiele projektów startowych.
W kolumnie Akcja wybierz Rozpocznij dla projektów Products i Store.
Wybierz pozycję OK.
Aby rozpocząć debugowanie rozwiązania, naciśnij F5 lub wybierz pozycję Rozpocznij.
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.
Aby zatrzymać debugowanie, zamknij przeglądarkę.
Uruchom Visual Studio Code i otwórz sklonowany folder. W terminalu, w którym sklonujesz repozytorium, uruchom następujące polecenie:
code .
Wybierz pozycję menu Uruchom i Debuguj lub naciśnij Ctrl+Shift+D.
Wybierz link utwórz plik launch.json.
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" } ] }
Aby rozpocząć debugowanie rozwiązania, naciśnij F5 lub wybierz pozycję Rozpocznij.
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.
Aby zatrzymać debugowanie, zamknij przeglądarkę, a następnie dwukrotnie wybierz przycisk Zatrzymaj (raz dla każdego uruchomionego wystąpienia debugowania).
Otwórz okno terminalu i zmień katalogi na nowo sklonowane repozytorium.
Aby uruchomić aplikację Products, uruchom następujące polecenie:
dotnet run --project ./Products/Products.csproj
Zostanie otwarta strona przeglądarki, na której wyświetli się JSON dotyczące produktów.
W osobnym oknie terminalu ponownie zmień katalog na sklonowane repozytorium.
Uruchom aplikację Store, uruchamiając następujące polecenie:
dotnet run --project ./Store/Store.csproj
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.
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:
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.
W dialogu Dodaj .NETobsługę.NET Aspire Orchestratora wybierz pozycję OK.
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
builder.AddProject<Projects.Store>("store");
Aby uzyskać więcej informacji, zobacz AddProject.
Aby dodać projekt Products do .NET.NET Aspire:
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.
Komunikat wskazujący, że projekt .NET.NET Aspire Orchestrator już istnieje, wybierz OK.
W projekcie
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
Dodaj projekt Store jako odwołanie do projektu hosta aplikacji przy użyciu następującego polecenia CLI .NET:
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
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
- W Visual Studio aby rozpocząć debugowanie i zbudować projekty, naciśnij F5Visual Studio.
- 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.
- 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.
- 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.
- W menu po lewej stronie wybierz pozycję Products. Zostanie wyświetlony katalog produktów.
- 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
Uruchom projekt hosta aplikacji, klikając prawym przyciskiem myszy projekt eShopLite.AppHost w Eksploratorze rozwiązań i wybierając Debug>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.
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.
- 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.
- 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.
- W menu po lewej stronie wybierz pozycję Products. Zostanie wyświetlony katalog produktów.
- 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.