cover

.NET Aspire, új horizont a felhő alapú elosztott rendszerek fejlesztésében

.NET Aspire, új horizont a felhő alapú elosztott rendszerek fejlesztésében
Mortoff Blog
.NET Aspire, új horizont a felhő alapú elosztott rendszerek fejlesztésében

Mi az a .NET Aspire? 

A .NET Aspire egy nyílt forráskódú projekt, amely főként felhőben futtatott, modern, skálázható és elosztott alkalmazások készítéséhez ad támogatást a fejlesztők számára. Teszi mindezt konzisztens és jól bevált minták alkalmazásával. 
Alapvetően NuGet csomagokat és Visual Studio projekt sablonokat tartalmaz, amelyek segítségével gyorsan és hatékonyan hozhatunk létre éles környezetre kész, jól monitorozható elosztott alkalmazásokat. 

Miben segít az Aspire? 

  • Vezénylés (orkesztráció): A .NET Aspire olyan funkciókat biztosít, amelyek egyszerűsítik a több projektből álló alkalmazások és azok függőségeinek futtatását és összekapcsolását helyi fejlesztési környezetekben. 

  • Integráció: A .NET Aspire integrációk NuGet csomagok, amelyek gyakran használt szolgáltatásokhoz, mint például a Redis vagy a Postgres, szabványosított interfészekkel biztosítják, hogy ezek következetesen és zökkenőmentesen csatlakozzanak az alkalmazásainkhoz. 

  • Eszközkészlet: A .NET Aspire projekt sablonokkal és kiegészítésekkel rendelkezik a Visual Studio 2022, a Visual Studio Code és a dotnet CLI-hez, hogy segítsen a .NET Aspire projektek létrehozásában és kezelésében. 

A .NET eShop minta repo bemutatása 

Úgy gondolom, hogy az új technológiákat legjobban gyakorlati példákon keresztül lehet megismerni. Ezért is örültem, amikor felfedeztem, hogy a AdventureWorks NET eShop minta repoját is átalakították aspire alapúra. 

A .NET eShop egy a Microsoft szakemberek és a kapcsolódó közösség által fejlesztett és támogatott nyílt forráskódú referenciaalkalmazás, amely felvonultatja a modern elosztott webalkalmazások fejlesztéséhez javasolt legjobb gyakorlatokat és tervezési mintákat. Az alkalmazás egy webáruház funkcióit valósítja meg, és bemutatja a mikroszervízek, a konténerizáció, a CI/CD és a felhőalapú infrastruktúra használatát. 

E-shop minta alkalmazás elindítása 

Az e-shop minta alkalmazás elindításához a következőkre van szükség: - le kell klónozni a repo-t: git clone https://github.com/dotnet/eShop.git 

  • Telepíteni kell és el kell indítani a Docker Desktop-ot 

  • Telepíteni kell a Visual Studio 2022 17.10 vagy újabb verzióját. A VisualStudio Installerben a következő opciókat kell választani: 

  • ASP.NET and web development 

  • .NET Aspire SDK-t az optionális összetevők közül 

  • Opcionálisan a .NET Multi-platform App UI development összetevőket is telepíthetjük, ha a mobil kliens alkalmazások fejlesztésére is szükségünk van. 

  • A Visual Studio-ban meg kell nyitni az eShop.Web.slnf fájlt. Ez az slnf fájl egy solution filter fájl, amely csak a webalkalmazás projektjeit tartalmazza, hogy gyorsabban betöltődjön a solution. 

  • Bizonyosodjunk meg róla, hogy az eShop.AppHost.csproj van kiválasztva a Solution Explorerben Startup projektként. 

  • Indítsuk el az alkalmazást a F5 vagy ctrl+F5 billentyűkombinációval. Fontos, hogy fusson a Docker Desktop, mert a Postrgres adatbázis a redis cache és a Rabbit MQ szolgáltatások konténerekből indulnak el. 

Ha fordításkor olyan hibát kapunk, hogy nem megfelelő verziójú az Aspire.Hosting.AppHost csomag, akkor a Directory.Packages.props állományban módosítsuk az AspireVersion értékét 8.2 vagy újabb verzióra:

Aspire irányítópult 

Amikor elindítottuk az alkalmazást, a konzolon megjelenik a .NET Aspire irányítópult címe. És a böngészőben megnyílik az irányítópult. 

  • Az irányítópulton induláskor láthatjuk a Resources fülön a futó szolgáltatásokat, azok állapotát:

 

A Console fülön láthatjuk a kiválasztott szolgáltatás logjait:

A Structured fülön a struktúrált logbejegyzéseket:

A Traces fülön pedig a kiválasztott szolgáltatás lefutási folyamatát követhetjük nyomon:

Nagyon tetszik benne, hogy az Aspire irányítópult segítségével könnyen nyomon követhetjük az alkalmazásunk futását, és az egyes szolgáltatások közötti kommunikációt. Ez nagyban segíti a hibakeresést és a fejlesztést. 

Az Aspire funkcionalitásának felépítése a fejlesztési solution-ben 

Most hogy látjuk, hogy az Aspire hogyan segít egy ilyen összetett rendszer összetevőinek futtatásában és monitorozásában, nézzük meg, hogy a fejlesztési solution-ben hogyan áll ez össze. 

  • Az eShop.AppHost projekt az Aspire AppHost projekt, amely az alkalmazás fő bejegyzési pontja. Az AppHost projekt felelős az alkalmazás fő konfigurációjáért, a szolgáltatások regisztrációjáért és az alkalmazás indításáért. Ha ebben áttekintjük a Program.cs fájlt, láthatjuk, hogy az IDistributedServiceHostBuilder segítségével definiáljuk az alkalmazásunk elemeit, mint például a szolgáltatásokat, a függőségeket és azok konfigurációját.

Ahhoz, hogy a különböző projekt összetevőink közötti függősségeket definiálni tudjuk, a solution explorerben az adott projekten jobb klikkelés után a Add -> .net Aspire orchestration support menüpontot kell választani, és ezt követően az eShop.AppHost projektet kiválasztani, mint orkesztrációs projektet.

Ezt követően már a builder.AddProject metódus segítségével tudjuk definiálni a függőségeket az egyes összetevőink között. 

Az Aspire integrációk 

A .NET Aspire 8.2 egyik fő változása, hogy a .NET Aspire „Komponenseket” mostantól „Integrációknak” hívják. A .NET Aspire Integráció egy csomag, amelyet hozzáadhatunk az alkalmazásainkhoz, és amely leegyszerűsíti felhőszolgáltatások és platformok beállításának, indításának és kommunikációjának folyamatát. 

Az Integrációkat kétféleképpen használják a .NET Aspire-t használó projektekben: - Mint egy „Hosting” csomag, amelyet hozzáadhatunk az AppHost projekthez, lehetővé téve, hogy könnyedén elindítsuk az erőforrást és csatlakozzunk hozzá a projektjeinkben a helyi fejlesztés során. - Nuget csomagként behivatkozva az alkalmazás kódjában, amelynek segítségével létrejön a kapcsolat az AppHost-ban létrehozott erőforrással, valamint egyszerűsíti az alapértelmezett értékekek és egyéb környezeti változók definiálását. Így csökkentve pl. egy használni kívánt új felhőszolgáltatás hozzáadásának nehézségeit. 

Ahhoz, hogy az Aspire integrációkat használni tudjuk, a solution explorerben az adott projekten jobb klikkelés után a Add -> .net Aspire Package menüpontot kell választani. Ezt követően megjelenik a NuGet csomagok kereső ablak, ahol kiválaszthatjuk az Aspire integrációk közül azokat, amelyekre szükségünk van. 

Például a Redis cache integrációhoz a Aspire.StackExchange.Redis csomagot kell telepíteni. 

Az AppHost Program.cs-ben az adott projektnél a WithReference metódus segítségével tudjuk hozzáadni a hivatkozásokat az alkalmazásunkhoz: 

Jelenleg elérhető integrációk: - Adatbázis integrációk: PostgreSQL, SQL Server, MySQL - Cache integrációk: Redis, Redis Output Cache, Redis Distributed Cache - Tárolási integrációk: Azure Blob Storage, Azure Queue Storage, Azure Table Storage - Üzenetküldés integrációk: RabbitMQ, Apache Kafka, Azure Service Bus 

Szolgáltatások alapértelmezett beállításai 

Egy .NET Aspire solution-ben a másik lényeges projekt az AppHost-on kívül a ServiceDefaults, amely a szolgáltatások alapértelmezett beállításait írja le:

Ebben történik többek között pl. a ServiceDiscovery funkcionalitás hozzáadása is az AddServiceDiscovery metódus hívásával. A ServiceDiscovery segítségével az alkalmazásunk könnyen meg tudja találni a hivatkozott többi szolgáltatást annak neve alapján. Ezáltal lazán kapcsolódó mikroszervíz architektúra építhető fel. 

Az Aspire jövőbeli fejlesztési irányai 

Az egyik dolog, amin a fejlesztőcsapat jelenleg dolgozik .NET Aspire 9.0 esetében, hogy lehetővé tegyék a .NET Aspire 9.0 projektek buildelését anélkül, hogy a .NET Aspire Workload telepítve lenne. Ez főként azokban CI/CD kialakításokban fog egyszerűsíteni, ahol nem szeretnénk telepíteni a teljes workload-ot a build gépre. Ez a .net 9 megjelenésével 2024 novemberében várható. 

Záró gondolatok 

Véleményem szerint .NET Aspire egy ígéretes projekt, amely nagyban meg tudja könnyíteni a felhőalapú elosztott alkalmazások fejlesztését .NET platformon. Az Aspire irányítópultja egy jól áttekinthető eszköz a fejlesztés során, segítségével könnyen nyomon követhetjük még a bonyolultabb, több mikroszervízből álló alkalmazások futását is, úgy mint az imént bemutatott mint az eShop referencia alkalmazásnál is láttuk. Remélem, hogy ez a rövid kis bemutató segített megismerni a .NET Aspire alapjait és bízom benne, hogy kedvet csináltam a kipróbálásához is. 

Referenciák és hasznos linkek 

3D fémnyomtatás a Knorr-Bremsénél
3D fémnyomtatás a Knorr-Bremsénél

A Knorr-Bremse az ide Év Gyára Projektversenyről két díjat is elhozott: övék az év leginnovatívabb projektje a gyártásban, illetve az év gyártási/termelési projektje cím is. Halász Bélával, a Knorr-Bremse Rail Systems Budapest műszaki szakértői csoportvezetőjével, és Nagy Ábellel, a cég 3D nyomtatásért felelős applikációs mérnökével beszélgettünk.

Meghallgatom
Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Beállítások" gombra kattintva olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat.