A projekt kódját tiszta architektúra-monolitikusként rendszerezik, a következő jellemző fogalmi összetevőkkel:
- API-adapterek
- Leválasztott alkalmazás üzleti logikája
- Alapvető tartományobjektumok
- Infrastruktúra-átjárók
- Vezérlés inverziója (IoC)
A megoldás állapot nélküli, ezért nem tartalmaz átjárókat a perzisztenciarétegekhez. A megoldás nem rendelkezik felhasználói felülettel, így nincs vezérlője vagy előadója.
A szoftverösszetevő összetétele a GridwichConfigureServices osztály használatával határozza meg, hogy mely konkrét osztályok érhetők el az Azure Functions-alkalmazás IoC-tárolójában.
Felépítés
A Gridwich-megoldás egy Core.EventGrid-kódtárat tartalmaz, amely a következőket tartalmazza:
- A tartománykérelmek és a válasz adatátviteli objektumai (DTO-k).
- Interfészek az összes alkalmazás-üzleti logikához vagy szolgáltatásobjektumhoz.
- Azok az alaposztályok, amelyek segítenek elérni a tartományalapú logikát vagy tevékenységeket.
- Naplózási, megfigyelhetőségi és kivételdefiníciók az alkalmazás teljes területén való használatra.
Az Azure Event Grid kérés- és válaszközvetítőként való beágyazásához a kódtár a következőkkel rendelkezik:
- Esemény-diszpécser, amely az IoC használatával azonosítja és küldi el az eseményeket a figyelőknek.
- Egy esemény közzétevője, amely a megfelelő Event Grid-témakörre helyezi a válaszokat.
Az Event Grid-kérelemadapter egy HTTP-végpont azure-függvény HTTP-végpont formájában. A webes kéréseket Event Grid-tömbökké konvertáló adapter szintén ugyanabban az EventGridFunction-ben található.
Az Event Grid válaszátjáró a következőkből áll:
- Az EventGridHandlerBase, amely a válasz DTO-t objektummá
EventGridEvent
alakítja. - Az EventGridDispatcher, amely az Event Grid-eseményt a megfelelő válasz Eseményrács-témakör végpont URI-jára helyezi a témakörkulcs használatával.
A megoldás a saga résztvevőit a következő kódtárakra bontja, amelyek a tartományspecifikus alkalmazás üzleti logikájával kapcsolatos feladatokkal rendelkeznek. A kódtárak tartalmazzák a szükséges infrastruktúra-átjárókat és azok SDK-jait, amelyek végrehajtják az üzleti logika által igényelt műveleteket.
- Gridwich.SagaParticipants.Analysis.MediaInfo
- Gridwich.SagaParticipants.Encode.CloudPort
- Gridwich.SagaParticipants.Encode.Flip
- Gridwich.SagaParticipants.Storage.AzureStorage
A kód újrafelhasználása és központosítása érdekében a Gridwich összevonja azokat az üzleti logikát vagy infrastruktúra-átjárókat, amelyeket több résztvevő használ a következő megosztott kódtárakban:
Mikroszolgáltatások alternatíva
A Gridwich-problématérben vagy -architektúrában semmi sem küldi el kifejezetten a megoldást egy monolitikus alkalmazásba vagy több mikroszolgáltatásba.
Az alkalmazást egyszerűen átírhatja mikroszolgáltatásokká, és mindegyik függvényalkalmazás egyetlen saga-résztvevőt üzemeltet. Minden függvényalkalmazás összekapcsolná az alapvető és az alapvető Event Grid-kódtárakat. Az alkalmazások mindegyike rendelkezik kapcsolati kapcsolatokkal, vagy egy közös kódtárat használna az infrastruktúra-átjárókhoz.
Az ilyen mikroszolgáltatás-megközelítés előnye, hogy az egyes kéréstípusokra eltérő skálázást lehet alkalmazni. Ha másodpercenként több ezer kérelemtípus lenne, de naponta csak több száz másik kérelemtípus lenne, akkor a teljes megoldás kihasználná, ha kisebb, könnyen példányosítható és gyorsan végrehajtható függvények lennének a nagy mennyiségű kérésekhez.
A mikroszolgáltatások hátránya, hogy minden megosztott modellhez szinkronizált mikroszolgáltatásokra van szükség, vagy adatséma-változás esetén a készlet kiürítését és átváltását kérheti. Ez a követelmény bonyolítaná a jövőbeli fejlesztést, a folyamatos üzembe helyezést és a műveleteket. Mivel az üzleti probléma nem mutatta a mikroszolgáltatások szükségességét, a Gridwich-architektúra tiszta monolitikus megközelítést használ.
Következő lépések
- Mik azok a mikroszolgáltatások?: Megismerheti a mikroszolgáltatás-architektúrát.
- Bevezetés az Azure Functions használatába: További információ az Azure Functionsről.