Clean Architecture - Aplicação em Asp.Net MVC
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.
Figura 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:
Figura 2: Asp.Net Core Clean Architecture
- 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.
- Infraestructure - É onde temos a conexão com o banco de dados, os repositórios, serviços de caching, de email,etc.
- 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.
Gerente de Desenvolvimento
Janderson de Castro Thomaz
Product Owner
Adriano Bonazoni Sol Sol de Oliveira
Scrum Master
Wagner Moreira Melo
Time de Desenvolvimento
Tambaquis
Membros do Time |
Alan da Silva Souza |
Gabriel Santi Binda |
João Vitor Paulino Nobre |
Raissa de Sousa Stolduski |
Taillon Miguel Gonçalves |
Wagner Moreira Melo |
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