Estrutura simples de arquitetura utilizando DDD.
Repositório aqui.
- Informacoes gerais
- Tecnologias usadas
- Bibliocatecas
- Estrutura
- Configuracao
- Uso
- Status do projeto
- Espaco para melhorias
- Contato
- Objetivo é fornecer arquitetura de solução, com uma estrutura utilizando DDD.
- .NET 6.
- AutoMapper - 10.1.1
- AutoMapper.Extensions.Microsoft.DependencyInjection - 8.1.1
- coverlet.collector - 3.1.0
- coverlet.msbuild - 3.1.0
- CsvHelper - 27.2.1
- FluentAssertions - 6.4.0
- ILogger.Moq - 1.1.10
- Microsoft.AspNetCore.Hosting - 2.2.7
- Microsoft.EntityFrameworkCore - 3.1.22
- Microsoft.EntityFrameworkCore.Design - 3.1.22
- Microsoft.EntityFrameworkCore.Proxies - 3.1.22
- Microsoft.EntityFrameworkCore.Relational - 3.1.22
- Microsoft.EntityFrameworkCore.Tools - 3.1.22
- Microsoft.EntityFrameworkCore.Tools - 3.1.22
- Microsoft.Extensions.Configuration.UserSecrets - 5.0.0
- Microsoft.Extensions.Hosting - MultipleVersions
- Microsoft.Extensions.Logging - 3.1.22
- Serilog.Expressions" Version - 3.2.1
- Microsoft.NET.Test.Sdk - 17.0.0
- Moq - 4.16.1
- Npgsql.EntityFrameworkCore.PostgreSQL - 3.1.18
- NUnit - 3.13.2
- NUniNUnit3TestAdapter - 4.2.1
Camadas
├── 1.0 - Distribution # Camada responsável por realizar a distribuição de entrada da solução
├── 2.0 - Application # Camada responsável por realizar a orquestração dos casos de uso
├── 3.0 - Domain # Camada responsável pra centralizar as regras de negócio
├── 4.0 - Integration # Camada responsável pelos projetos de integração externo
├── 5.0 - Infra # Camada responsável por centralizar features compartilhadas e pela base dados
├── 6.0 - Tests # Camada responsável pelos testes unitários
├── 7.0 - Tools # Camada responsável pelas ferramentas de debug
├── 8.0 - ObjectMothers # Camada responsável por montar os objetos a serem usados nos testes unitários
└── 9.0 - Solution Items # Camada responsável pra referenciar os arquivos que não estão contidos nas layers
Projetos
├── Product.Functions # Projeto responsável pelos serviços de eventos do Product
├── Product.Worker # Projeto responsável pelos serviços de eventos do Product
├── Product.Application # Projeto responsável pela orquestração dos eventos do Product
├── Product.Domain # Projeto responsável pelas regras de negócio do Product
├── Product.Integration.Partnership # Projeto responsável pela integração do Product com parceiro
├── Product.Infra # Projeto responsável por compartilhar featureas comuns com os demais projetos, com exceção do dominio
├── Product.Infra.Data # Projeto responsável do contexto da base de dados
├── Product.Application.Tests # Projeto responsável pelos testes unitários do Application
├── Product.Domain.Tests # Projeto responsável pelos testes unitários do Domain
├── Product.Functions.Tests # Projeto responsável pelos testes unitários da Function
├── Product.Infra.Tests # Projeto responsável pelos testes unitários da Infra
├── Product.Integration.Partnership.Tests # Projeto responsável pelos testes do Integration.Partnership
├── Product.Worker.Tests # Projeto responsável pelos testes do Worker
├── Product.Functions.Tools # Projeto responsável pelo envio de mensages de testes da Function
├── Product.Toll.Worker # Projeto responsável pelo envio de mensages de testes do Worker
├── Product.Application.ObjectMother # Projeto responsável por manter os objetos de entrada do Application
├── Product.Domain.ObjectMother # Projeto responsável por manter os objetos de entrada do Domain
├── Product.Functions.ObjectMother # Projeto responsável por manter os objetos de entrada da Function
├── Product.Infra.ObjectMother # Projeto responsável por manter os objetos de entrada da Infra
├── Product.Integration.Partnership.ObjectMother # Projeto responsável por manter os objetos de entrada do Integration.Bifrost
└── Product.Worker.ObjectMother # Projeto responsável por manter os objetos de entrada do Worker
Para conseguir instalar o projeto é necessário baixar o repositorio na máquina local. Realizar restore do NUGET e rodar aplicação.
Para utilizar, deve rodar o serviço Worker ou Functions.
Em:
├── 1.0 - Distribution # Product.Functions ou Product.Worker
Com isso aplicação estará rodando rodando no modo de desenvolvimento.
Para testar consumo, pode ser utilizado o Sample. Ferramenta criada, para envio de uma mensagem.
Em:
├── 7.0 - Tools # Product.Functions.Tools ou Product.Worker.Tolls
Projeto está: em progresso.
- Utilização de cache;
Criado por meloramosdaniel@gmail.com.br - Sinta-se livre para me contatar!