Clean Architecture - Aplicação em Asp.Net MVC
Data: 31/08/21
Autores:
- Alan da Silva Souza (Assessor)
- Gabriel Santi Binda (Assessor)
- João Vitor Paulino Nobre (Assessor)
- Raissa de Sousa Stolduski (Assessor)
- 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.
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
Desenvolvimento
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