ASP.NET Core - Web API Clean Architecture template


Hoje vou apresentar um template disponível no Visual Studio MarketPlace que gera um projeto seguindo as boas práticas e recomendações da Clean Architecture.

Que tal um template de projeto pronto com uma arquitetura com baixo acoplamento para  ASP.NET Core 3.1 Web Api que usa padrões de projetos e boas práticas para aplicativos corporativos ?

Se você não esta com tempo para se debruçar sobre os fundamentos e criar um template com esses recursos, ganhou o dia, pois você pode baixar este template pronto aqui.

Para obter mais detalhes siga a página do projeto aqui.

Qual o objetivo do template ?

Ser uma implementação de arquitetura limpa para um projeto Web API com ASP.NET Core 3.1.

Com este modelo de código aberto, você terá acesso ao mundo da Arquitetura com baixo acoplamento e com várias práticas recomendadas.

Como usar o template

Baixe esta extensão no Visual Studio MarketPlace e instale-a em seu ambiente.

Certifique-se de que o Visual Studio 2019 esteja instalado e com o SDK mais recente.

Para iniciar, após instalar o template, basta criar um novo projeto usando o template instalado.

Em seguida, abra o arquivo appsettings.json para alterar as strings de conexão conforme as usada em seu ambiente.

Aqui você pode escolher ter vários bancos de dados para separar a implementação do IdentityDB ou ter o mesmo banco de dados para o Identity e o aplicativo.

Uma vez que isso esteja definido, execute estes comandos para atualizar o banco de dados.

update-database -Context IdentityContext

update-database -Context ApplicationDbContext


Finalmente, faça o deploy e execute o aplicativo.

Funções e credenciais padrão

Assim que você constrói e executa seu aplicativo, usuários e funções padrão são adicionados ao banco de dados.

Os perfis padrão definidos são as seguintes:

SuperAdmin
Admin
Moderador
Básico


Aqui estão as credenciais definidas para os usuários padrão :

Email - superadmin@gmail.com / Senha - 123Pa$$word!
Email - basic@gmail.com / Senha - 123Pa$$word!

Você pode usar essas credenciais padrão para gerar JWTokens válidos no endpoint ../api/account/authenticate.

Objetivo deste Projeto

Realmente faz sentido configurar sua solução ASP.NET Core toda vez que você inicia um novo projeto Web Api ?

Não estamos perdendo muito tempo fazendo esse trabalho repetidamente ?

Este é exatamente o problema que este Template se propõe a resolver.

O objetivo principal é criar uma implementação que seja bem documentada junto com as etapas executadas para construir esta solução do zero.

Tecnologias usadas

ASP.NET Core 3.1 WebApi
Padrões REST
Bibliotecas .NET Core 3.1 / Standard 2.1

Recursos abordados

[x] Arquitetura Cebola
[x] CQRS com Biblioteca MediatR
[x] Entity Framework Core - Code First
[x] Padrão de Repositório - Genérico
[x] Registro e validação do pipeline MediatR
[x] Serilog
[x] IU Swagger
[x] Wrappers de resposta
[x] Verificações de saúde
[x] Paginação
[] Cache na memória
[] Cache Redis
[x] Banco de dados In-Memory
[x] Identidade Microsoft com autenticação JWT
[x] Autorização baseada em função
[x] Sementeira de identidade
[x] Sementeira de banco de dados
[x] Middlewares de tratamento de exceções personalizadas
[x] Controle de versão de API
[x] Validação Fluente
[x] Automapper
[x] Serviço de e-mail SMTP / Mailkit / Sendgrid
[x] Módulo de gerenciamento de usuário completo (registrar / gerar token / esqueci a senha / mensagem de confirmação)
[x] Auditoria de usuário

Pré-requisitos

- Visual Studio 2019 Community ou superior;
- SDK do .NET Core 3.1 ou superior;
- Compreensão básica de arquiteturas e princípios do código limpo;
- Recomendo que você leia:  Arquitetura Onion no ASP.NET Core com CQRS - artigo detalhado para entender melhor essa implementação. (Veja o meu artigo sobre arquitetura Onion:
.NET - A arquitetura Cebola (Onion Architecture)

E estamos conversados...

"Ninguém jamais viu a Deus; se nos amamos uns aos outros, Deus está em nós, e em nós é perfeito o seu amor.
Nisto conhecemos que estamos nele, e ele em nós, pois que nos deu do seu Espírito.
E vimos, e testificamos que o Pai enviou seu Filho para Salvador do mundo."

1 João 4:12-14

Referências:


José Carlos Macoratti