Denominazione e spazi dei nomi del progetto Gridwich

Funzioni di Azure

Gridwich è una soluzione .NET 6 composta da più progetti. È importante che i progetti di codice abbiano una convenzione di denominazione per comprendere la struttura delle applicazioni, trovare rapidamente il codice pertinente e ridurre la perdita di biciclette nella denominazione del progetto.

Il sistema Gridwich ha tre componenti principali, Core, Host.FunctionAppe SagaParticipants.

  • Il Core progetto include interfacce a livello di sistema, modelli, oggetti di trasferimento dei dati (DTO) e classi di base.

    Core.{Technology} I progetti hanno le classi client e le funzionalità di base usate da varie implementazioni di funzionalità.

  • Il Host.FunctionApp progetto è l'interfaccia pubblica del sistema complessivo.

  • SagaParticipants I progetti offrono funzionalità di funzione esterna come l'analisi, la codifica, la pubblicazione e l'archiviazione.

    SagaParticipants.{Capability} i progetti descrivono le interfacce, le eccezioni e gli eventi prodotti da una funzionalità.

    SagaParticipants.{Capability}.{Technology} i progetti offrono implementazione effettiva delle funzionalità, listener di eventi e funzionalità specifiche delle funzionalità.

Gridwich Technology è un'implementazione effettiva di una funzionalità o di una funzione di base. Un {Technology} progetto può essere sotto uno Core spazio dei nomi o e un SagaParticipants.{Capability} nome di progetto, a seconda dell'utilizzo.

Creazione del progetto

È possibile usare l'albero delle decisioni seguente per la denominazione di un nuovo progetto Gridwich:

Il codice è un contratto, ad esempio classi di base, interfacce, modelli o DTO o un'estensione del servizio?

  • Sì: il codice è correlato a una capacità o a un servizio specifico?

    • Sì: Gridwich.SagaParticipants.{Capability}
    • No: Gridwich.Core
  • No: il codice è correlato a un listener di eventi o a un'implementazione di una tecnologia specifica?

    • Sì: più servizi useranno il codice?

      • Sì, ad esempio un wrapper SDK: Gridwich.Core.{Technology}
      • No: Gridwich.SagaParticipants.{Capability}.{Technology}
    • No: il codice è correlato a una funzionalità specifica?

      • Sì: Gridwich.SagaParticipants.{Capability}

      • No: il codice è un endpoint dell'app per le funzioni di Azure?

        • Sì: Gridwich.Host.FunctionApp
        • No: Gridwich.Core

Struttura progetto

Ogni pacchetto ha due sottodirectory figlio:

  • src contiene il codice di produzione non di test.
  • tests contiene unit test.

Ogni progetto ha una tests sottodirectory, ma se non sono presenti unit test per un pacchetto, la directory potrebbe essere vuota.

Ognuna delle due sottodirectory contiene i file C# o altri file per compilare il codice, oltre a un file con estensione csproj . Il nome file con estensione csproj segue il nome del pacchetto, ad esempio:

  • Gridwich.Host.FunctionApp/src/Gridwich.Host.FunctionApp.csproj
  • Gridwich.Host.FunctionApp/tests/Gridwich.Host.FunctionAppTests.csproj

Gli spazi dei nomi di codice usati dai pacchetti seguono anche questa convenzione, ad esempio:

  • Gridwich.Host.FunctionApp
  • Gridwich.Host.FunctionAppTests

Durante i cicli di compilazione e test, directory temporanee come bin, obje TestResults vengono visualizzate, che non contengono artefatti idonei a Git. L'elaborazione dotnet clean pulisce queste directory temporanee.

Nomi e spazi dei nomi dei progetti

I nomi e gli spazi dei nomi dei progetti gridwich presentano le caratteristiche seguenti.

Spazi dei nomi Core e SagaParticipants Technology

Gridwich.Core.{Technology} gli spazi dei nomi non includono lo scopo della tecnologia, principalmente per evitare la spargimento di biciclette. Core gli spazi dei nomi sono progetti interni che SagaParticipants usano o Host.FunctionApp progetti e non necessitano di nomi ben definiti.

Ad esempio, il Gridwich.Core.EventGrid progetto potrebbe essere Gridwich.Core.Events.EventGrid o Gridwich.Core.Messaging.EventGrid. Tuttavia, i nomi dei Core progetti suggeriscono già che le tecnologie contribuiscono al sistema principale.

Una tecnologia potrebbe anche contribuire al sistema in più di un modo. Ad esempio, è possibile chiamare Redis un archivio dati o un trasporto di messaggistica, a seconda dell'utilizzo, ma usa sempre lo stesso wrapper SDK.

Gli Gridwich.SagaParticipants.Encode.CloudPort spazi dei nomi e Gridwich.SagaParticipants.Encode.Flip tecnologia usano componenti dello spazio dei Gridwich.SagaParticipants.Encode nomi . Questo codice non si trova nello Gridwich.Core.Encode spazio dei nomi perché è specifico delle attività di codifica e non passa ad altre funzionalità come la pubblicazione.

Pacchetti SagaParticipants

Non tutti i Gridwich.SagaParticipants pacchetti elaborano eventi esterni. Alcuni pacchetti in Gridwich.SagaParticipants forniscono funzionalità per altri partecipanti della saga che elaborano richieste esterne.

Oltre alla creazione di Gridwich.SagaParticipants.Encode pacchetti che condivide il codice tra più pacchetti di tecnologia di codifica, sono disponibili anche pacchetti specializzati come Gridwich.SagaParticipants.Encode.TelestreamCloud. Il pacchetto Telestream fornisce a Gridwich l'accesso a un sistema Vantage Telestream esterno. I partecipanti alla saga Flip e CloudPort usano il pacchetto Telestream per fornire la propria elaborazione delle richieste.

Nomi dei pacchetti e altri spazi dei nomi

Per mantenere using le istruzioni minime, Gridwich non limita il contenuto del pacchetto allo spazio dei nomi indicato dal nome del pacchetto. Alcuni pacchetti contribuiscono alle entità ad altri spazi dei nomi. Ad esempio, il pacchetto Gridwich.Core.Tests contribuisce alla Gridwich.Core.Helpers.TestHelpers classe .

Tuttavia, ogni pacchetto compila una DLL che corrisponde al nome del pacchetto per il codice di produzione in srce una DLL di unit test, se presenti, in tests. Il nome della DLL di test è uguale al nome del pacchetto, ma con un Tests suffisso.

Passaggi successivi

Documentazione sui prodotti:

Moduli di Microsoft Learn: