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:
- .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 pozycję Rozpocznij dla projektówProducts iStore .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 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.
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 , aby utworzyć uruchamianie.json link do pliku.
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 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.
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 sklepu
W
w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt Store Store, wybierz pozycję Dodaj , a następnie wybierz pozycję .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
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
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
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
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
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
- W Visual Studio, aby rozpocząć debugowanie, naciśnij F5, aVisual Studio buduje projekty.
- 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 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. - 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ń wykonanie . Plikjson, który utworzyłeś wcześniej, nie ma już żadnego zastosowania. 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.
- 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. - 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.