Clean Architecture com ASP.NET Core – Parte #1

Aprenda a como implementar o Clean Architecture (ou Arquitetura Limpa) com ASP.NET Core nessa série de artigos.

Nessa série de artigos vou implementar uma aplicação do zero, usando os princípios do Clean Architecture. O domínio de exemplo será de um sistema de gerenciamento de academia, chamado AwesomeGym.

https://www.luisdev.com.br/2020/10/05/clean-architecture-com-asp-net-core-parte-2/
https://www.luisdev.com.br/2020/12/23/clean-architecture-com-asp-net-core-parte-3/
http://www.luisdev.com.br/2021/03/07/clean-architecture-com-asp-net-core-parte-4/
https://www.luisdev.com.br/2021/03/15/clean-architecture-com-asp-net-core-parte-5/

Código-fonte aqui.


Quer ser notificado sobre os próximos artigos, lives semanais, eventos e treinamentos? Entre no canal LuisDev no Telegram!


Introdução a Clean Architecture

Também conhecida como Onion Architecture, a Clean Architecture é uma arquitetura amplamente utilizada no mercado de trabalho atualmente. Seja em sua definição formal, ou com variações, é uma arquitetura que resulta em um projeto com boa separação de responsabilidades, testabilidade, e manutenibilidade.

Ela emprega o Princípio da Inversão de Dependência (DIP, do SOLID), e também princípios do Domain Driven Design.

Essa arquitetura tem como núcleo central a lógica de negócio do domínio, dela, que concentra tanto a definição do Domínio, quanto outros elementos como interfaces de Infraestrutura. Esse núcleo é chamado de Core, na Clean Architecture. Em toda sua extensão são usadas abstrações, realizando a inversão de dependência.

Os componentes dela são:

  • User Interface: em nosso caso, contém uma API, que é a porta de entrada para nosso sistema ASP.NET Core.
  • Application: contém responsabilidades relativas a aplicação, como modelos de entrada e saída, e serviços da aplicação.
  • Infrastructure: contém implementação de responsabilidades relativas a infraestrutura, como acesso a serviços de nuvem e bancos de dados, por exemplo.
  • Core: contém interfaces de serviços de domínio e de infraestrutura, bem como modelos de domínio, como entidades, enums, exceções de domínio, por exemplo.

Criando a estrutura básica da solução

Começamos pela criação dos projetos que fazem parte da solução. Será utilizado o Visual Studio 2019 para essa série, mas pode ser feito usando o Visual Studio Code.

Na imagem abaixo são mostradas as camadas a serem criadas, com exceção da existência, no nosso exemplo, de uma camada de aplicação entre a User Interface e a Application Core.

Arquitetura Limpa; exibição de camada horizontal
Referência da imagem https://docs.microsoft.com/pt-br/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures

Reforço novamente: é essencial termos um pensamento crítico em relação aos produtos e padrões que utilizamos. Embora na documentação da imagem que eu mostro dizer que não tem uma camada Application, eu testei diferentes estruturas e essa foi a que mais gostei. Se preferir utilizar a estrutura “oficial”, fique a vontade!

Além disso, a camada Core não pode referenciar outras camadas acima dela, então isso não permitiria você definir os ViewModels e InputModels na camada API, e usar no Core. Nesse caso, a Application seria responsável pela lógica da aplicação, definindo os modelos de entrada e saída, e coordenando chamadas a interfaces de Infraestrutura, e à camada Core.

Como primeiro passo, criamos a solução em branco, usando o modelo mostrado na imagem abaixo. Ela se chamará CleanArchitectureArticle.

Passo 1 para criação da Solução em branco

Avançamos, e em seguida preenchemos o nome e finalizamos. Lembrando que o nosso “domínio” é de um sistema de gerenciamento de academia, e que se chamará AwesomeGym.

Passo 2 para criação de Solução em branco

Com nossa solução criada, começaremos a adicionar nossos projetos de biblioteca de classes, correspondendo às outras camadas.

Solução criada

Adicionando o projeto API

A camada User Interface, será representada por uma aplicação ASP.NET Core, na versão 3.1 e usando o modelo API. Na imagem abaixo, mostro o passo-a-passo.

Primeiro, usamos o botão direito em cima da solução, no menu “Gerenciamento de Soluções”, “Adicionar > “Novo Projeto…”. Buscamos pelo modelo ASP.NET Core, usando o Visual Studio 2019

Passo 1 para criação de projeto ASP.NET Core

Avançamos, e em seguida preenchemos o nome e vamos para a próxima etapa. Esse projeto se chamará AwesomeGym.API.

Passo 2 para criação de projeto ASP.NET Core

Finalmente, selecionamos a versão e o modelo, e finalizamos. Para essa série, utilizo a versão 3.1, e o modelo API.

Último passo para a criação do projeto ASP.NET Core

Adicionando os projetos de biblioteca de classes

Para as outras camadas serão criados projetos de bibliotecas de classe, utilizando o .NET Core. Vou mostrar a criação do primeiro apenas, já que basta replicar para os nomes seguintes.

Primeiro, buscamos pelo modelo “Biblioteca .NET Core”, usando o Visual Studio 2019.

Passo 1 para criação de um projeto Biblioteca de Classes .NET Core

Avançamos, e em seguida preenchemos o nome e finalizamos.

Passo 2 para cria;áo de um projeto Bibliotea de Classes .NET Core

Repetimos esse processo para criar as outras camadas. Os nomes serão:

  • AwesomeGym.Infrastructure
  • AwesymeGym.Core

A visão da Solucao resulta na imagem abaixo.

Solução resultante deste primeiro artigo

Quer alavancar sua carreira como Desenvolvedor(a) .NET?

Além de Desenvolvedor .NET Sênior, eu sou instrutor de mais de 700 alunos e também tenho dezenas de mentorados.

Conheça o Método .NET Direto ao Ponto, minha plataforma com mais de 800 videoaulas, com cursos cobrindo temas relacionados a linguagem C# e Programação Orientada a Objetos, APIs REST com ASP NET Core, Microsserviços com ASP NET Core, HTML, CSS e JavaScript, Desenvolvimento Front-end com Angular, Desenvolvimento Front-end com React, JavaScript Intermediário, TypeScript, Formação Arquitetura de Software, Microsoft Azure, Agile, SQL, e muito mais.

Inclui comunidade de centenas de alunos, suporte por ela, plataforma e e-mail, atualizações regulares e muito mais.

Clique aqui para ter mais informações e garantir sua vaga

Conclusão

Nesse artigo apresentei o Clean Architecture, e seus conceitos relacionados. Apresentei um passo a passo para a configuração inicial de uma Solução no Visual Studio aplicando ele.

Nos próximos artigos, será dada a continuação a esse projeto, adicionando classes e funcionalidades, seguindo essa arquitetura.

Até mais!