Gridwich is een .NET 6-oplossing die bestaat uit meerdere projecten. Het is belangrijk dat codeprojecten een naamconventie hebben om inzicht te krijgen in de toepassingsstructuur, relevante code snel te vinden en fiets-shedding in projectnaam te verminderen.
Het Gridwich-systeem heeft drie belangrijke onderdelen, Core
en Host.FunctionApp
SagaParticipants
.
Het
Core
project heeft systeembrede interfaces, modellen, gegevensoverdrachtobjecten (DTU's) en basisklassen.Core.{Technology}
projecten hebben de clientklassen en basisfunctionaliteiten die verschillende mogelijkheden-implementaties gebruiken.Het
Host.FunctionApp
project is de openbare interface voor het algehele systeem.SagaParticipants
projecten bieden mogelijkheden voor externe functies, zoals analyse, codering, publicatie en opslag.SagaParticipants.{Capability}
projecten beschrijven de interfaces, uitzonderingen en gebeurtenissen die een mogelijkheid produceert.SagaParticipants.{Capability}.{Technology}
projecten bieden daadwerkelijke implementatie van mogelijkheden, gebeurtenislisteners en functionaliteitsspecifieke functionaliteit.
Een Gridwich Technology
is een werkelijke implementatie van een functie of kernfunctie. Een {Technology}
project kan zich onder een of een Core
SagaParticipants.{Capability}
naamruimte en projectnaam bevinden, afhankelijk van het gebruik.
Een project maken
U kunt de volgende beslissingsstructuur gebruiken bij het benoemen van een nieuw Gridwich-project:
Is de code een contract, zoals basisklassen, interfaces, modellen of DTU's of een service-extensie?
Ja: Heeft de code betrekking op een specifieke capaciteit of service?
- Ja:
Gridwich.SagaParticipants.{Capability}
- No:
Gridwich.Core
- Ja:
Nee: Heeft de code betrekking op een gebeurtenislistener of een implementatie van een specifieke technologie?
Ja: Gebruikt meer dan één service de code?
- Ja, bijvoorbeeld een SDK-wrapper:
Gridwich.Core.{Technology}
- No:
Gridwich.SagaParticipants.{Capability}.{Technology}
- Ja, bijvoorbeeld een SDK-wrapper:
Nee: Heeft de code betrekking op een specifieke mogelijkheid?
Ja:
Gridwich.SagaParticipants.{Capability}
Nee: Is de code een Eindpunt van een Azure-functie-app?
- Ja:
Gridwich.Host.FunctionApp
- No:
Gridwich.Core
- Ja:
Projectstructuur
Elk pakket heeft twee onderliggende submappen:
src
bevat de productiecode die niet is getest.tests
bevat eenheidstests.
Elk project heeft een tests
submap, maar als er geen eenheidstests voor een pakket zijn, is de map mogelijk leeg.
Elk van de twee submappen bevat de C# of andere bestanden om de code te bouwen, plus een .csproj-bestand . De bestandsnaam van .csproj volgt de pakketnaam, bijvoorbeeld:
Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj
De codenaamruimten die door de pakketten worden gebruikt, volgen ook deze conventie, bijvoorbeeld:
Gridwich.Host.FunctionApp
Gridwich.Host.FunctionAppTests
Tijdens build- en testcycli worden tijdelijke mappen zoals bin
, obj
en TestResults
weergegeven, die geen in git geschikte artefacten bevatten. De dotnet clean
verwerking schoont deze tijdelijke mappen op.
Projectnamen en naamruimten
Gridwich-projectnamen en -naamruimten hebben de volgende kenmerken.
Core- en SagaParticipants Technology-naamruimten
Gridwich.Core.{Technology}
naamruimten bevatten niet het doel van de technologie, voornamelijk om fiets-shedding te voorkomen. Core
naamruimten zijn interne projecten die SagaParticipants
of Host.FunctionApp
projecten gebruiken en hebben geen goed gedefinieerde namen nodig.
Het project kan Gridwich.Core.Events.EventGrid
bijvoorbeeld Gridwich.Core.EventGrid
zijn of Gridwich.Core.Messaging.EventGrid
. De Core
projectnamen suggereren echter al dat de technologieën bijdragen aan het kernsysteem.
Een technologie kan ook op meer dan één manier bijdragen aan het systeem. U kunt bijvoorbeeld Redis een gegevensarchief of een berichtentransport aanroepen, afhankelijk van het gebruik, maar gebruikt altijd dezelfde SDK-wrapper.
De Gridwich.SagaParticipants.Encode.CloudPort
naamruimten en Gridwich.SagaParticipants.Encode.Flip
technologie maken gebruik van onderdelen uit de Gridwich.SagaParticipants.Encode
naamruimte. Deze code bevindt zich niet onder Gridwich.Core.Encode
de naamruimte, omdat deze specifiek is voor het coderen van taken en niet in andere mogelijkheden, zoals publicatie.
SagaParticipants pakketten
Niet elk Gridwich.SagaParticipants
pakket verwerkt externe gebeurtenissen. Sommige pakketten onder Gridwich.SagaParticipants
bieden functionaliteit voor andere saga-deelnemers die externe aanvragen verwerken.
Naast de Gridwich.SagaParticipants.Encode
verpakking die code deelt over meerdere coderingstechnologiepakketten, zijn er ook gespecialiseerde pakketten zoals Gridwich.SagaParticipants.Encode.TelestreamCloud
. Het Telestream-pakket biedt Gridwich toegang tot een extern Vantage Telestream-systeem. De deelnemers aan Flip en CloudPort saga gebruiken het Telestream-pakket om hun eigen aanvraagverwerking te bieden.
Pakketnamen en andere naamruimten
Om instructies tot een minimum te beperken using
, beperkt Gridwich de inhoud van het pakket niet tot de naamruimte die door de pakketnaam wordt aangegeven. Sommige pakketten dragen entiteiten bij aan andere naamruimten. Het pakket Gridwich.Core.Tests
draagt bijvoorbeeld bij aan de Gridwich.Core.Helpers.TestHelpers
klasse.
Elk pakket bouwt echter een DLL die overeenkomt met de pakketnaam voor de productiecode in src
, en een DLL met eenheidstests, indien van toepassing, in tests
. De naam van het test-DLL-bestand is hetzelfde als de pakketnaam, maar met een Tests
achtervoegsel.
Volgende stappen
Productdocumentatie:
Microsoft Learn-modules: