Gridwich je řešení .NET 6 složené z více projektů. Je důležité, aby projekty kódu měly konvenci vytváření názvů, které pomáhají porozumět struktuře aplikací, rychle najít relevantní kód a omezit vytváření názvů kol v projektových názvech.
Systém Gridwich má tři hlavní komponenty, Core
, Host.FunctionApp
a SagaParticipants
.
Projekt
Core
má systémová rozhraní, modely, objekty pro přenos dat (DTO) a základní třídy.Core.{Technology}
projekty mají klientské třídy a základní funkce, které používají různé implementace schopností.Projekt
Host.FunctionApp
je veřejné rozhraní pro celkový systém.SagaParticipants
projekty poskytují funkce externích funkcí, jako je analýza, kódování, publikování a úložiště.SagaParticipants.{Capability}
projekty popisují rozhraní, výjimky a události, které funkce vytváří.SagaParticipants.{Capability}.{Technology}
projekty poskytují skutečnou implementaci schopností, naslouchací procesy událostí a funkce specifické pro schopnosti.
Gridwich Technology
je skutečná implementace funkce nebo základní funkce. Projekt {Technology}
může být v závislosti na využití pod Core
názvem projektu nebo SagaParticipants.{Capability}
oborem názvů a názvem projektu.
Vytvoření projektu
Při pojmenování nového projektu Gridwich můžete použít následující rozhodovací strom:
Je kód kontraktem, jako jsou základní třídy, rozhraní, modely nebo objekty DTO nebo rozšíření služby?
Ano: Souvisí kód s konkrétní kapacitou nebo službou?
- Ano:
Gridwich.SagaParticipants.{Capability}
- Ne:
Gridwich.Core
- Ano:
Ne: Souvisí kód s naslouchacím procesem událostí nebo implementací konkrétní technologie?
Ano: Bude kód používat více než jedna služba?
- Ano, například obálka sady SDK:
Gridwich.Core.{Technology}
- Ne:
Gridwich.SagaParticipants.{Capability}.{Technology}
- Ano, například obálka sady SDK:
Ne: Souvisí kód s konkrétní schopností?
Ano:
Gridwich.SagaParticipants.{Capability}
Ne: Jedná se o kód koncového bodu aplikace funkcí Azure?
- Ano:
Gridwich.Host.FunctionApp
- Ne:
Gridwich.Core
- Ano:
Struktura projektu
Každý balíček má dva podřízené podadresáře:
src
obsahuje netestovací produkční kód.tests
obsahuje testy jednotek.
Každý projekt má tests
podadresář, ale pokud pro balíček nejsou žádné testy jednotek, může být adresář prázdný.
Každý z těchto dvou podadresářů obsahuje C# nebo jiné soubory pro sestavení kódu a soubor .csproj . Název souboru .csproj se řídí názvem balíčku, například:
Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj
Obory názvů kódu, které balíčky používají, se řídí také touto konvencí, například:
Gridwich.Host.FunctionApp
Gridwich.Host.FunctionAppTests
Během cyklů sestavení a testování se zobrazí přechodné adresáře bin
jako , obj
a TestResults
zobrazí se, které neobsahují žádné artefakty způsobilé pro git. Zpracování dotnet clean
tyto přechodné adresáře vyčistí.
Názvy a obory názvů projektů
Názvy projektů Gridwich a obory názvů mají následující charakteristiky.
Základní obory názvů a obory názvů SagaParticipants Technology
Gridwich.Core.{Technology}
Obory názvů nezahrnují účel technologie, zejména proto, aby se zabránilo přecházení kol. Core
obory názvů jsou interní projekty, které SagaParticipants
nebo Host.FunctionApp
projekty používají, a nepotřebují dobře definované názvy.
Projekt může být Gridwich.Core.Events.EventGrid
například Gridwich.Core.EventGrid
nebo Gridwich.Core.Messaging.EventGrid
. Názvy projektů však již naznačují, Core
že technologie přispívají k základnímu systému.
Technologie by také mohla přispět k systému více než jedním způsobem. Můžete například volat úložiště dat Redis nebo přenos zpráv v závislosti na využití, ale vždy používá stejnou obálku sady SDK.
Obory Gridwich.SagaParticipants.Encode.CloudPort
názvů a Gridwich.SagaParticipants.Encode.Flip
technologie používají komponenty z Gridwich.SagaParticipants.Encode
oboru názvů. Tento kód není v Gridwich.Core.Encode
oboru názvů, protože je specifický pro úlohy kódování a nepřekračuje do jiných funkcí, jako je publikování.
Balíčky SagaParticipants
Ne každý Gridwich.SagaParticipants
balíček zpracovává externí události. Některé balíčky v rámci Gridwich.SagaParticipants
poskytování funkcí ostatním účastníkům ság, kteří zpracovávají externí požadavky.
Gridwich.SagaParticipants.Encode
Kromě balení, který sdílí kód napříč více kódovacími technologiemi balíčků, existují také specializované balíčky, jako Gridwich.SagaParticipants.Encode.TelestreamCloud
je . Balíček Telestream poskytuje Gridwich přístup k externímu systému Vantage Telestream. Účastníci Flip a CloudPort saga používají balíček Telestream k poskytnutí vlastního zpracování požadavků.
Názvy balíčků a další obory názvů
Chcete-li zachovat using
příkazy na minimum, Gridwich neomezuje obsah balíčku na obor názvů, který název balíčku označuje. Některé balíčky přispívají entitami do jiných oborů názvů. Například balíček Gridwich.Core.Tests
přispívá do Gridwich.Core.Helpers.TestHelpers
třídy.
Každý balíček však vytvoří knihovnu DLL, která odpovídá názvu balíčku pro produkční kód v src
a knihovně DLL testů jednotek, pokud existuje, v tests
. Název testovací knihovny DLL je stejný jako název balíčku, ale s příponou Tests
.
Další kroky
Dokumentace k produktu:
Moduly Microsoft Learn:
- Vytvoření dlouhotrvajícího bezserverového pracovního postupu s Durable Functions
- Seznámení se službou Azure Functions