Bewerken

Delen via


Gridwich-projectnaamgeving en naamruimten

Azure Functions

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, Coreen Host.FunctionAppSagaParticipants.

  • 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 CoreSagaParticipants.{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
  • 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}
    • 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

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, objen 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: