A Gridwich egy több projektből álló .NET 6-os megoldás. Fontos, hogy a kódprojektek elnevezési konvencióval rendelkezzenek az alkalmazás szerkezetének megértéséhez, a megfelelő kód gyors megtalálásához és a projektelnevezésben a kerékpárelnevezés csökkentéséhez.
A Gridwich rendszer három fő összetevőből áll, Core
Host.FunctionApp
és SagaParticipants
.
A
Core
projekt rendszerszintű interfészekkel, modellekkel, adatátviteli objektumokkal (DTO-kkal) és alaposztályokkal rendelkezik.Core.{Technology}
a projektek rendelkeznek a különböző képesség-implementációk által használt ügyfélosztályokkal és alapfunkciókkal.A
Host.FunctionApp
projekt a teljes rendszer nyilvános felülete.SagaParticipants
a projektek olyan külső funkciókkal rendelkeznek, mint az elemzés, a kódolás, a közzététel és a tárolás.SagaParticipants.{Capability}
a projektek ismertetik azokat a felületeket, kivételeket és eseményeket, amelyeket egy képesség létrehoz.SagaParticipants.{Capability}.{Technology}
a projektek tényleges képesség-implementációt, eseményfigyelőket és képességspecifikus funkciókat biztosítanak.
A Gridwich Technology
egy képesség vagy alapfüggvény tényleges megvalósítása. A {Technology}
projektek a használattól függően névtér és SagaParticipants.{Capability}
projektnév alatt Core
is lehetnek.
Projekt létrehozása
Az új Gridwich-projekt elnevezéséhez a következő döntési fát használhatja:
A kód szerződés, például alaposztályok, interfészek, modellek vagy DTO-k vagy szolgáltatásbővítmény?
Igen: A kód egy adott kapacitáshoz vagy szolgáltatáshoz kapcsolódik?
- Igen:
Gridwich.SagaParticipants.{Capability}
- Nem:
Gridwich.Core
- Igen:
Nem: A kód egy eseményfigyelőhöz vagy egy adott technológia implementálásához kapcsolódik?
Igen: Több szolgáltatás is használja a kódot?
- Igen, például egy SDK-burkoló:
Gridwich.Core.{Technology}
- Nem:
Gridwich.SagaParticipants.{Capability}.{Technology}
- Igen, például egy SDK-burkoló:
Nem: A kód egy adott képességhez kapcsolódik?
Igen:
Gridwich.SagaParticipants.{Capability}
Nem: A kód Egy Azure-függvényalkalmazás végpontja?
- Igen:
Gridwich.Host.FunctionApp
- Nem:
Gridwich.Core
- Igen:
Projektstruktúra
Mindegyik csomagnak két gyermek alkönyvtára van:
src
a nem tesztelési éles kódot tartalmazza.tests
egységteszteket tartalmaz.
Minden projekt rendelkezik alkönyvtárral tests
, de ha nincs egységteszt egy csomaghoz, a könyvtár üres lehet.
A két alkönyvtár mindegyike tartalmazza a kód létrehozásához szükséges C# vagy más fájlokat, valamint egy .csproj fájlt. A .csproj fájlnév a csomag nevét követi, például:
Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj
A csomagok által használt kódnévterek szintén ezt az egyezményt követik, például:
Gridwich.Host.FunctionApp
Gridwich.Host.FunctionAppTests
A buildelési és tesztelési ciklusok során az olyan átmeneti könyvtárak, mint a bin
, obj
és TestResults
megjelennek, amelyek nem tartalmaznak git-jogosult összetevőket. A dotnet clean
feldolgozás törli ezeket az átmeneti könyvtárakat.
Projektnevek és névterek
A Gridwich-projektnevek és -névterek a következő jellemzőkkel rendelkeznek.
Core és SagaParticipants Technológiai névterek
Gridwich.Core.{Technology}
névterek nem tartalmazzák a technológia célját, főként a kerékpár-fásítás elkerülése érdekében. Core
A névterek olyan belső projektek, amelyeket SagaParticipants
vagy Host.FunctionApp
projektek használnak, és nem igényelnek jól definiált neveket.
A projekt Gridwich.Core.Events.EventGrid
Gridwich.Core.Messaging.EventGrid
lehet például vagy Gridwich.Core.EventGrid
. A Core
projektnevek azonban már arra utalnak, hogy a technológiák hozzájárulnak az alaprendszerhez.
Egy technológia több módon is hozzájárulhat a rendszerhez. Meghívhatja például a Redist egy adattárnak vagy egy üzenettovábbításnak a használattól függően, de mindig ugyanazt az SDK-burkolót használja.
Gridwich.SagaParticipants.Encode.Flip
A Gridwich.SagaParticipants.Encode.CloudPort
technológiai névterek a névtér összetevőit Gridwich.SagaParticipants.Encode
használják. Ez a kód nem szerepel a névtérben Gridwich.Core.Encode
, mert a kódolási feladatokra vonatkozik, és nem lép át más képességekre, például a közzétételre.
SagaParticipants-csomagok
Nem minden Gridwich.SagaParticipants
csomag dolgozza fel a külső eseményeket. Egyes csomagok Gridwich.SagaParticipants
funkcióval szolgálnak a külső kéréseket feldolgozó többi saga-résztvevő számára.
Gridwich.SagaParticipants.Encode
A kódokat több kódolási technológiai csomagban megosztó csomagolás mellett léteznek speciális csomagok is, példáulGridwich.SagaParticipants.Encode.TelestreamCloud
. A Telestream csomag hozzáférést biztosít a Gridwich számára egy külső Vantage Telestream rendszerhez. A Flip és a CloudPort saga résztvevői a Telestream csomag használatával biztosítják a saját kérésfeldolgozást.
Csomagnevek és egyéb névterek
Az utasítások minimálisra állítása using
érdekében a Gridwich nem korlátozza a csomag tartalmát arra a névtérre, amelyet a csomag neve jelez. Egyes csomagok entitásokat adnak hozzá más névterekhez. A csomag Gridwich.Core.Tests
például hozzájárul az osztályhoz Gridwich.Core.Helpers.TestHelpers
.
Az egyes csomagok azonban létrehoznak egy DLL-t, amely megfelel az éles kód src
csomagnevének, és ha vannak ilyenek, az egységtesztek DLL-jei.tests
A teszt DLL neve megegyezik a csomag nevével, de utótaggal Tests
.
Következő lépések
Termékdokumentáció:
Microsoft Learn-modulok:
- Hosszú ideig futó kiszolgáló nélküli munkafolyamat létrehozása a Durable Functions használatával
- Az Azure Functions felfedezése