Estrutura elaborada para resolver problemas complexos utilizando o design DDD com versionamento de Endpoints
É uma abordagem de modelagem de software que segue um conjunto de práticas com objetivo de facilitar a implementação de complexas regras / processos de negócios que tratamos como domínio.
Domain Driven Design como o nome já diz é sobre design. Design guiado pelo domínio, ou seja, uma modelagem de software focada em resolver problemas na complexidade do negócio.
“Toda arquitetura é design, mas nem todo design é arquitetura” – Grady Booch
O DDD não é uma receita pronta sobre como desenvolver uma arquitetura baseada em Presentation, Services, Application, Domain e Infra.
Fonte: Eduardo Pires
Objetivo:
- Criar uma estrutura base, separando responsabilidades com fundamentos no design DDD.
- Realizar versionamento de
endpoints
- Retorno padronizado e inclusive erros
- Erros gerados serão incluidos em uma lista ao em vez de gerar um
New Error
- (Exception Patterns) - Documentação da API utilizando
Swagger
- Utilizar AutoMapper
- Validação de regras de negocio, classes e DTO's com FluentValidation
- Autenticação com
JWT
- Implementar
ASP.NET Identity
com permissões de acesso comClaims
eRoles
- Captação de informações para monitoramento da API utilizando
Prometheus
- Conversão de 3.1 para 5.x
- TODO - Implementar Interfaces (record .NET5)
- TODO - Implementar Testes automatizados
- TODO - Integração com outra API utilizando HTTP
- TODO - Integração com outra API utilizando RabittMQ
- TODO - Apresentação das informações de monitoramento em gráficos com
Grafana
- TODO - Implementar Ambiente Docker
- TODO - Subir aplicação no
IIS local
e noAzure
- Banco de dados SQL Server
- .Net Core 3.1
- EntityFramework
- FluentValidation
- Api Version
- AutoMapper
Criar banco de dados com o nome MinhaAppMvcCore
Configurar conexão com o banco de dados no arquivo appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER;Database=MinhaAppMvcCore;Trusted_Connection=True;"
},
Executar no terminal Package Manager Console (PM)
no projeto Infrastructure
:
update-dabase -Context DefaultDataBaseContext --verbose
update-dabase -Context DefaultIdentityDbContext --verbose
Build >> Clean Solution
Build >> Build Solution