Pojmenování projektu Gridwich a obory názvů

Azure Functions

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.FunctionAppa 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
  • 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}
    • 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

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 binjako , obja 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.TelestreamCloudje . 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 srca 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: