Editar

Partilhar via


Nomenclatura e namespaces do projeto Gridwich

Azure Functions

Gridwich é uma solução .NET 6 composta por vários projetos. É importante que os projetos de código tenham uma convenção de nomenclatura para ajudar a entender a estrutura do aplicativo, encontrar código relevante rapidamente e reduzir a confusão na nomeação de projetos.

O sistema de Gridwich tem três componentes principais, , , CoreHost.FunctionAppe SagaParticipants.

  • O Core projeto tem interfaces em todo o sistema, modelos, objetos de transferência de dados (DTOs) e classes base.

    Core.{Technology} Os projetos têm as classes de cliente e funcionalidades de base que várias implementações de capacidade usam.

  • O Host.FunctionApp projeto é a interface pública com o sistema global.

  • SagaParticipants Os projetos fornecem recursos de função externa, como análise, codificação, publicação e armazenamento.

    SagaParticipants.{Capability} Os projetos descrevem as interfaces, exceções e eventos que um recurso produz.

    SagaParticipants.{Capability}.{Technology} Os projetos fornecem implementação de capacidade real, ouvintes de eventos e funcionalidade específica da capacidade.

Um Gridwich Technology é uma implementação real de uma capacidade ou função central. Um {Technology} projeto pode estar sob um ou um Core namespace e nome do projeto, dependendo do SagaParticipants.{Capability} uso.

Criação do projeto

Você pode usar a seguinte árvore de decisão ao nomear um novo projeto Gridwich:

O código é um contrato, como classes base, interfaces, modelos ou DTOs, ou uma extensão de serviço?

  • Sim: O código refere-se a uma capacidade ou serviço específico?

    • Sim: Gridwich.SagaParticipants.{Capability}
    • Não: Gridwich.Core
  • Não: o código está relacionado a um ouvinte de eventos ou a uma implementação de uma tecnologia específica?

    • Sim: Mais de um serviço usará o código?

      • Sim, por exemplo, um wrapper SDK: Gridwich.Core.{Technology}
      • Não: Gridwich.SagaParticipants.{Capability}.{Technology}
    • Não: o código está relacionado a um recurso específico?

      • Sim: Gridwich.SagaParticipants.{Capability}

      • Não: o código é um ponto de extremidade do Aplicativo de Função do Azure?

        • Sim: Gridwich.Host.FunctionApp
        • Não: Gridwich.Core

Estrutura do projeto

Cada pacote tem dois subdiretórios filho:

  • src Contém o código de produção sem teste.
  • tests contém testes unitários.

Cada projeto tem um subdiretório, mas se não houver testes de unidade para um tests pacote, o diretório pode estar vazio.

Cada um dos dois subdiretórios contém o C# ou outros arquivos para criar o código, além de um arquivo .csproj . O nome do arquivo .csproj segue o nome do pacote, por exemplo:

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

Os namespaces de código que os pacotes usam também seguem esta convenção, por exemplo:

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

Durante os ciclos de compilação e teste, diretórios transitórios como bin, e TestResults aparecem, objque não contêm artefatos qualificados para git. O dotnet clean processamento limpa esses diretórios transitórios.

Nomes de projetos e namespaces

Os nomes e namespaces do projeto Gridwich têm as seguintes características.

Namespaces Core e SagaParticipants Technology

Gridwich.Core.{Technology} Os namespaces não incluem o propósito da tecnologia, principalmente para evitar o abandono de bicicletas. Core namespaces são projetos internos que SagaParticipants ou Host.FunctionApp projetos usam e não precisam de nomes bem definidos.

Por exemplo, o Gridwich.Core.EventGrid projeto pode ser Gridwich.Core.Events.EventGrid ou Gridwich.Core.Messaging.EventGrid. No entanto, os nomes dos Core projetos já sugerem que as tecnologias contribuem para o sistema central.

Uma tecnologia também pode contribuir para o sistema de mais de uma forma. Por exemplo, você pode chamar o Redis de armazenamento de dados ou transporte de mensagens, dependendo do uso, mas ele sempre usa o mesmo wrapper do SDK.

Os Gridwich.SagaParticipants.Encode.CloudPort namespaces e Gridwich.SagaParticipants.Encode.Flip technology usam componentes do Gridwich.SagaParticipants.Encode namespace. Esse código não está sob namespace porque é específico para tarefas de codificação e não entra em Gridwich.Core.Encode outros recursos, como publicação.

Pacotes SagaParticipants

Nem todos os Gridwich.SagaParticipants pacotes processam eventos externos. Alguns pacotes em Gridwich.SagaParticipants fornecem funcionalidade para outros participantes da saga que processam solicitações externas.

Além da Gridwich.SagaParticipants.Encode embalagem que compartilha código em vários pacotes de tecnologia de codificação, há também pacotes especializados como Gridwich.SagaParticipants.Encode.TelestreamCloud. O pacote Telestream fornece acesso Gridwich a um sistema externo Vantage Telestream. Os participantes da saga Flip e CloudPort usam o pacote Telestream para fornecer seu próprio processamento de solicitações.

Nomes de pacotes e outros namespaces

Para manter using as instruções em um mínimo, Gridwich não restringe o conteúdo do pacote ao namespace que o nome do pacote indica. Alguns pacotes contribuem com entidades para outros namespaces. Por exemplo, o pacote Gridwich.Core.Tests contribui com a Gridwich.Core.Helpers.TestHelpers classe.

No entanto, cada pacote cria uma DLL que corresponde ao nome do pacote para o código de produção em , e uma DLL de testes de unidade, se houver, em srctests. O nome da DLL de teste é o mesmo que o nome do pacote, mas com um Tests sufixo.

Próximos passos

Documentação do produto:

Módulos do Microsoft Learn: