Oktatóanyag: .NET Aspire hozzáadása meglévő .NET-alkalmazáshoz
Ha rendelkezik meglévő mikroszolgáltatásokkal és .NET webalkalmazással, hozzáadhat hozzá .NET Aspire, és minden további funkciót és előnyt megkaphat. Ebben a cikkben .NET Aspire orkesztációt ad hozzá egy egyszerű, már meglévő .NET 9 projekthez. Megtudhatja, hogyan:
- A meglévő mikroszolgáltatás-alkalmazás szerkezetének megismerése.
- Meglévő projektek bevonása .NET.NET Aspire orchestrationbe.
- Ismerje meg, hogy a regisztráció milyen módosításokat hajt végre a projektekben.
- Indítsa el a .NET.NET Aspire projektet.
Előfeltételek
A .NET.NET Aspirehasználatához a következő helyi telepítésre van szükség:
- .NET 8.0 vagy .NET 9.0
- OCI-kompatibilis tároló futtatási környezet, például:
- Docker Asztali vagy Podman. További információ: Container runtime.
- Integrált fejlesztői környezet (IDE) vagy kódszerkesztő, például:
- Visual Studio 2022 17.9-es vagy újabb verziója (nem kötelező)
-
Visual Studio Code (nem kötelező)
- C# Dev Kit: Bővítmény (nem kötelező)
- JetBrains Rider .NET.NET Aspire beépülő modullal (nem kötelező)
További információ: .NET.NET Aspire beállítási és eszközök, valamint .NET.NET Aspire SDK.
Kezdje el
Először szerezzük be a megoldás kódját:
Nyisson meg egy parancssort, és módosítsa a könyvtárakat arra a helyre, ahol a kódot tárolni szeretné.
A .NET 9 példamegoldás klónozásához használja a következő
git clone
parancsot:git clone https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-devops.git eShopLite
A mintaalkalmazás felfedezése
Ez a cikk egy .NET 9-megoldást használ három projekttel:
-
Adatobjektumok: Ez a projekt egy példakönyvtár. Meghatározza a webalkalmazásban és a Web API-ban használt
Product
osztályt. - termékek: Ez a példa webes API a katalógusban szereplő termékek listáját és tulajdonságait adja vissza.
- Áruház: Ez a példa Blazor Webalkalmazás megjeleníti a termékkatalógust a webhely látogatóinak.
Nyissa meg és kezdje el a projekt hibakeresését az alapértelmezett viselkedés vizsgálatához:
Indítsa el Visual Studio, majd válassza Fájl>>Projekt/megoldás megnyitása.
Keresse meg a klónozott megoldás legfelső szintű mappáját, válassza a eShopLite.sln, majd a Megnyitáslehetőséget.
A Megoldáskezelőkattintson a jobb gombbal az eShopLite megoldásra, majd válassza az Indítási projektek konfigurálásalehetőséget.
Válassza Több indítási projektlehetőséget.
A Művelet oszlopban válassza a Indítás lehetőséget mind a Termékek, mind az Áruház projektekhez.
Válassza OKlehetőséget.
A megoldás hibakereséséhez nyomja le F5 vagy válassza a Startlehetőséget.
Két oldal nyílik meg a böngészőben:
- Egy oldal JSON formátumban jeleníti meg a termékeket egy hívás eredményeként a Termékek Web API-ból.
- Egy oldal megjeleníti a webhely kezdőlapját. A bal oldali menüben válassza a Termékek lehetőséget a Webes API-ból beszerzett katalógus megtekintéséhez.
A hibakeresés leállításához zárja be a böngészőt.
Indítsa el Visual Studio Code, és nyissa meg a klónozott mappát. A terminálon, ahol klónozta az adattárat, futtassa a következő parancsot:
code .
Válassza a Futtatás és hibakeresés menüelemet, vagy nyomja le Ctrl+Shift+Dbillentyűkombinációt.
Válassza ki a hozzon létre egy launch.json fájlt hivatkozást.
Másolja és illessze be a következőt ebbe a fájlba: JSON, majd mentse el.
{ "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" } ] }
A megoldás hibakereséséhez nyomja le F5 vagy válassza a Startlehetőséget.
Két oldal nyílik meg a böngészőben:
- Egy oldal JSON formátumban jeleníti meg a termékeket egy hívás eredményeként a Termékek Web API-ból.
- Egy oldal megjeleníti a webhely kezdőlapját. A bal oldali menüben válassza a Termékek lehetőséget a Webes API-ból beszerzett katalógus megtekintéséhez.
A hibakeresés leállításához zárja be a böngészőt, majd válassza a leállítása gombot kétszer (minden futó hibakeresési példány esetében egyszer).
Nyisson meg egy terminálablakot, és módosítsa a könyvtárakat az újonnan klónozott adattárba.
A Termékek alkalmazás elindításához futtassa a következő parancsot:
dotnet run --project ./Products/Products.csproj
Megnyílik egy böngészőlap, amely a termékek JSON értékét jeleníti meg.
Egy külön terminálablakban módosítsa ismét a könyvtárakat klónozott adattárra.
Indítsa el a Store alkalmazást az alábbi parancs futtatásával:
dotnet run --project ./Store/Store.csproj
A böngésző megnyit egy lapot, amely megjeleníti a webhely kezdőlapját. A bal oldali menüben válassza a Termékek lehetőséget a Webes API-ból beszerzett katalógus megtekintéséhez.
A hibakeresés leállításához zárja be a böngészőt, és nyomja le a Ctrl+C mindkét terminálon.
.NET .NET Aspire hozzáadása a Store webalkalmazáshoz
Regisztráljuk most az Store projektet, amely a webes felhasználói felületet valósítja meg, az .NET.NET Aspire orchestráció keretében.
A Visual StudioMegoldáskezelő területén kattintson jobb gombbal a Store projektre, válassza a Hozzáadás, majd a .NET.NET Aspire Vezénylő Támogatás lehetőséget.
Az Add .NET.NET Aspire Orchestrator támogatási párbeszédpanelben kattintson az OKgombra.
Most két új projektnek kell lennie, mindkettőt hozzá kell adni a megoldáshoz:
- eShopLite.AppHost: Az alkalmazás különböző projektjeinek és szolgáltatásainak összekapcsolására és konfigurálására tervezett vezénylőprojekt. Az orchestrator van beállítva Kezdő projektként, és függ a eShopLite.Store projekttől.
- eShopLite.ServiceDefaults: Egy .NET.NET Aspire megosztott projekt, amely kezeli a projektekben újrahasznosított konfigurációkat az ön megoldásában, a rugalmasság, szolgáltatásfelderítés és telemetria terén.
Az eShopLite.AppHost projektben nyissa meg a Program.cs fájlt. Figyelje meg ezt a kódsort, amely regisztrálja a Store projektet a .NET.NET Aspire vezénylésben:
builder.AddProject<Projects.Store>("store");
További információ: AddProject.
Add hozzá a Termékek projektet a .NET.NET Aspire-hoz/-hez/-höz:
A Visual StudioMegoldáskezelőterületén kattintson a jobb gombbal a Termékek projektre, válassza a hozzáadása, majd a .NET.NET Aspire Orchestrator támogatásilehetőséget.
Egy párbeszédpanel, amely jelzi, hogy .NET.NET Aspire Orchestrator-projekt már létezik, válassza az OK, lehetőséget.
Az eShopLite.AppHost projektben nyissa meg a Program.cs fájlt. Figyelje meg ezt a kódsort, amely regisztrálja a Termékek projektet a .NET.NET Aspire koordinációban:
builder.AddProject<Projects.Products>("products");
Azt is megfigyelheti, hogy az eShopLite.AppHost projekt mostantól a Store és Termékek projektektől is függ.
Alkalmazásgazdaprojekt létrehozása
A meglévő projektek vezényléséhez létre kell hoznia egy új alkalmazásgazda projektet. Ha új alkalmazásgazda projektet szeretne létrehozni az elérhető .NET Aspire sablonokból, használja a következő .NET CLI-parancsot:
dotnet new aspire-apphost -o eShopLite.AppHost
Adja hozzá a alkalmazásgazda projektet a meglévő megoldáshoz:
Adja hozzá a Store projektet projekthivatkozásként az alkalmazásgazda projekthez az alábbi .NET PARANCSSOR-paranccsal:
Alapértelmezett szolgáltatásprojekt létrehozása
Az alkalmazásgazdaprojekt létrehozása után létre kell hoznia egy új szolgáltatás alapértelmezett projektet. Új szolgáltatás alapértelmezési projekt létrehozásához az elérhető .NET Aspire sablonokból használja a következő .NET CLI parancsot:
dotnet new aspire-servicedefaults -o eShopLite.ServiceDefaults
A projekt megoldáshoz való hozzáadásához használja a következő .NET parancssori felület parancsot:
dotnet sln ./eShopLite.sln add ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
Frissítse a alkalmazásgazda projektet, hogy projekthivatkozást adjon hozzá a Termékek projekthez:
dotnet add ./eShopLite.AppHost/eShopLite.AppHost.csproj reference ./Products/Products.csproj
A Store és a Termékek projekt projekteknek is hivatkozniuk kell a szolgáltatás alapértelmezettjeinek projektjére, hogy könnyen belefoglalhassák a szolgáltatás felfedezését. Ha az szolgáltatás alapértelmezett-projektre szeretne hivatkozni a Store projektben, használja a következő .NET parancssori felület parancsot:
dotnet add ./Store/Store.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
A
dotnet add ./Products/Products.csproj reference ./eShopLite.ServiceDefaults/eShopLite.ServiceDefaults.csproj
A Store és Termékek projektekben frissítse a Program.cs fájlokat, és közvetlenül a var builder = WebApplication.CreateBuilder(args);
sor után adja hozzá a következő sort:
builder.AddServiceDefaults();
Az alkalmazásgazdaprojekt frissítése
Nyissa meg a Program.cs projekt fájlját, és cserélje le a tartalmát a következő C#-kódra:
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.Store>("store");
builder.AddProject<Projects.Products>("products");
builder.Build().Run();
Az előző kód:
- Létrehoz egy új
DistributedApplicationBuilder
-példányt. - Hozzáadja a Store projektet az orchestratorhoz.
- Hozzáadja a Termékek projektet az orchestrátorhoz.
- Létrehozza és futtatja az orchestrátort.
Szolgáltatásfelderítés
Ezen a ponton mindkét projekt .NET.NET Aspire vezénylés része, de a Store projektnek a Termékek háttércímre kell támaszkodnia .NET.NET Aspireszolgáltatásfelderítésikeresztül. A szolgáltatásfelderítés engedélyezéséhez nyissa meg a Program.cs fájlt az eShopLite.AppHost projektben, és frissítse a kódot, hogy a builder
a Termékek projektre mutató hivatkozást adjon hozzá:
var builder = DistributedApplication.CreateBuilder(args);
var products = builder.AddProject<Projects.Products>("products");
builder.AddProject<Projects.Store>("store")
.WithExternalHttpEndpoints()
.WithReference(products);
builder.Build().Run();
Az előző kód azt fejezi ki, hogy a Store projekt a Termékek projekttől függ. További információ: .NET.NET Aspire alkalmazásgazda: Referenciaerőforrások. Ez a hivatkozás a Termékek projekt futásidejű címének felderítésére szolgál. Emellett a Store projekt külső HTTP-végpontok használatára van konfigurálva. Ha később úgy dönt, hogy telepíti ezt az alkalmazást, szüksége lesz a WithExternalHttpEndpoints hívására annak biztosításához, hogy az nyilvános legyen a külvilág számára.
Ezután frissítse a appsettings.json a Store projektjében a következő JSON-re:
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ProductEndpoint": "http://products",
"ProductEndpointHttps": "https://products"
}
A két végpont címei mostantól a „products” nevet használják, amelyet hozzáadtak a vezérlőhöz az alkalmazásgazda. Ezek a nevek a Termékek projekt címének felderítésére szolgálnak.
A regisztrált alkalmazás felfedezése
Kezdjük el a megoldást, és vizsgáljuk meg a .NET.NET Aspire által biztosított új viselkedést.
Jegyzet
Vegye észre, hogy az eShopLite.AppHost projekt az új indítási projekt.
- A Visual Studiohibakeresés indításához és a projektek építéséhez nyomja le az F5Visual Studio billentyűt.
- Ha megjelenik az Indítás Docker Asztal párbeszédpanel, válassza Igenlehetőséget. Visual Studio elindítja a Docker motort, és létrehozza a szükséges tárolókat. Amikor az üzembe helyezés befejeződött, megjelenik a .NET.NET Aspire irányítópult.
- Az irányítópulton válassza ki a projekt számára a
típusú termékek végpontját. Megjelenik egy új böngészőlap, amely JSON formátumban jeleníti meg a termékkatalógust. - Az irányítópulton válassza ki a tároló projekt végpontját. Megjelenik egy új böngészőlap, amely megjeleníti a webalkalmazás kezdőlapját.
- A bal oldali menüben válassza a Termékeklehetőséget. Megjelenik a termékkatalógus.
- A hibakeresés leállításához zárja be a böngészőt.
Törölje a korábban létrehozott launch.json fájlt, az már nem szolgál célként. Ehelyett indítsa el a alkalmazásgazda projektet, amely a többi projektet vezényli:
Indítsa el a alkalmazásgazda projektet az alábbi parancs futtatásával:
dotnet run --project ./eShopLite.AppHost/eShopLite.AppHost.csproj
Jegyzet
Ha Docker Desktop (vagy Podman) nem fut, hibaüzenet jelenik meg. Indítsa el az OCI-kompatibilis tárolómotort, és próbálkozzon újra.
- Az irányítópulton válassza ki a projekt számára a
típusú termékek végpontját. Megjelenik egy új böngészőlap, amely JSON formátumban jeleníti meg a termékkatalógust. - Az irányítópulton válassza ki a tároló projekt végpontját. Megjelenik egy új böngészőlap, amely megjeleníti a webalkalmazás kezdőlapját.
- A bal oldali menüben válassza a Termékeklehetőséget. Megjelenik a termékkatalógus.
- A hibakeresés leállításához zárja be a böngészőt.
Gratulálunk, .NET.NET Aspire orkestrációt adott hozzá a már meglévő webalkalmazásához. Mostantól hozzáadhat .NET Aspire integrációkat, és a .NET Aspire eszközzel egyszerűsítheti a natív felhőbeli webalkalmazás-fejlesztést.