Ir para o conteúdo principal

Clean Architecture - Aplicação em Asp.Net MVC

Data19/09/22

Autores:

 
  1. Alan da Silva Souza (Assessor)
  2. Gabriel Santi Binda (Assessor)
  3. João Vitor Paulino Nobre (Assessor)
  4. Raissa de Sousa Stolduski (Assessor)
  5. Taillon Miguel Gonçalves (Assessor)

Objetivo

O presente estudo, tem como objetivo levantar requisitos, vantagens, desvantagens e aplicação da Clean Architecture ou arquitetura limpa, para aplicação em futuros sistemas desenvolvidos pelo time tambaqui.

Introdução

A Clean Architecture consiste em um diagrama de camadas, em que cada um dos seus componentes possuem suas próprias responsabilidades e cada uma delas tem conhecimento apenas de camadas de dentro, basicamente, a Clean Architecture nos ajuda à organizarmos nosso projeto através de suas responsabilidades, regra de negócio, entidades, etc.

Existem algumas variações na aplicação da Clean Architecture, mas o princípio é sempre o mesmo, separar responsabilidades e organizar em camadas, podemos ter uma visualização dela em um diagrama como na figura 1.

dawdawFigura 1: Exemplo de diagrama de Clean Architecture

Podemos ver na figura acima, que existe uma organização em camadas da aplicação, com suas respectivas funções exemplificadas na figura 2 e que serão descritas abaixo:

image-1630440993118.pngFigura 2: Asp.Net Core Clean Architecture

  1. User Interface - É onde fica a visualização do seu sistema, o UI assim dizendo, ali é onde temos Controllers, Viewmodels, Views e outros tipos de filtros e validações.
  2. Infraestructure - É onde temos a conexão com o banco de dados, os repositórios, serviços de caching, de email,etc.
  3. Core - É onde fica nossa regra de negócio, as interfaces relacionadas aos repositórios, objetos de valor, nossas entidades, enumeradores, DTOs, serviços relacionados ao domínio

Vantagens

Existem inúmeras vantagens de se usar a arquitetura limpa em um projeto Asp.Net Core e em qualquer outro para melhorar seu entendimento e organização como por exemplo:

  • O código é facilmente testável;
  • Componentes ainda mais desacoplados, a estrutura do pacote é facilmente de se navegar entre eles;
  • Novas funcionalidades podem ser adicionadas rapidamente pelo time de desenvolvedores;
  • Mantem o código livre de dependências do projeto;

Desvantagens

Existem algumas desvantagens importantes à serem levantadas como:

  • Curva de aprendizado relativamente íngreme, considerando que todas as camadas funcionam juntas, exigindo um certo tempo para entender seus conceitos;
  • Não é ideal para projetos de baixa complexidade, visto que, sua arquitetura exige o acréscimo de muitas classes adicionais;

Conclusão

Após um estudo sobre a Clean Architecture, pode-se concluir que, apesar de suas desvantagens serem relevantes, visto que, depende de um bom alinhamento entre os integrantes do time, as suas vantagens são muito mais notáveis à longo prazo, pois melhora razoavelmente a manutenção e a adição de incrementos dentro do sistema, além da organização do sistema. 

 


Referências

[1] MEDEIROS, Felipe. Clean Architecture: o que é arquitetura limpa e como aplicar no desenvolvimento de softwares?. o que é arquitetura limpa e como aplicar no desenvolvimento de softwares?. 2021. Disponível em: https://startecjobs.com/clean-architecture/. Acesso em: 30 ago. 2021.

[2] MICHIURA, Fabio. Clean Architecture com MVVM: o que é, vantagens e como utilizar em aplicações android. o que é, vantagens e como utilizar em aplicações Android. 2020. Disponível em: https://www.objective.com.br/insights/clean-architecture-com-mvvm/. Acesso em: 31 ago. 2021.

[3] MACORATTI, José. ASP .NET Core: clean architecture. Clean Architecture. 2020. Disponível em: http://www.macoratti.net/20/10/aspc_cleanarq1.htm. Acesso em: 31 ago. 2021.

[4] FELIPE, Luis. Clean Architecture com ASP.NET Core. 2020. Disponível em: https://www.luisdev.com.br/2020/09/29/clean-architecture-com-asp-net-core-parte-1/. Acesso em: 31 ago. 2021.

Glossário

Clean Architecture  - Nome em inglês para Arquitetura Limpa

User Interface - Interface do usuário do sistema.

Infraestructure - Camada de infraestrutura do sistema.

Core - Camada "núcleo" do sistema.

Asp.Net Core - Tecnologia de desenvolvimento Web baseada em C# e .Net Core