Aprenda a como implementar o Clean Architecture (ou Arquitetura Limpa) com ASP.NET Core nessa série de artigos.
Na parte #3 irei falar sobre a camada Infrastructure, explicando seus objetivos e descrevendo seus componentes.
A camada Infrastructure
A camada Infrastructure é constituída pelos seguintes componentes:
- Serviços de infraestrutura i.e. logging, serviços de computação em nuvem;
- Persistência;
- Integração com outros sistemas.
Eles podem ser separados em projetos próprios, dependendo do tamanho da aplicação.
Vou detalhar mais sobre elas, construindo o sistema proposto na parte #1, que é de um gerenciador de academia.
Serviços de infraestrutura
São as classes que tem responsabilidades relacionadas a integração com recursos de infraestrutura externos.
Por exemplo, em um sistema de academia, alguns serviços possíveis seriam:
- Integração com ERP utilizado, implentando a interface IErpIntegrationService;
- Acesso a serviços de nuvem, podendo as classes serem granulares por serviço, como acesso a arquivos/blobs ou mensageria. No exemplo a seguir, o Azure File Storage é utilizado para o armazenamento de blogs, sendo feita implementação da interface IFileStorageService.
Nosso projeto, com esses serviços, ficaria que nem a imagem abaixo. Junto a eles, por serem implementações, são necessárias as interfaces correspondentes. Estas foram adicionadas no artigo anterior.
Persistência
Nessa categoria de componentes, a responsabilidade principal é gerenciar a persistencia de dados em uma tecnologia de armazenamento. Seja ele em memória, banco de dados (em nuvem ou não, relacional ou não-relacional), ou em arquivos.
Quanto a ASP.NET Core, geralmente uma ORM é utilizada. ORM significa Object-Relational Mapping, ou mapeamento de objetos relacional. O objeto dessa ferramenta ou tipo de biblioteca é servir como uma ponte ou adaptador do formato de dados no projeto, para o formato utilizado como banco de dados. Um exemplo clássico de ORM para .NET Core é o Entity Framework Core (ou simplesmente EF Core), que permite mapear, entre muitas outras fontes, tabelas de bancos de dados SQL Server para classes, e vice-versa.
No caso do EF Core, também é necessária uma classe de contexto de dados, que vai conter a configuração e mapeamentos necessários para o modelo de dados utilizado.
Nosso projeto, com esse serviço, ficaria que nem a imagem abaixo.
Quer alavancar sua carreira como Desenvolvedor(a) .NET?
Opa, aqui é o Luis Felipe (LuisDev), criador do blog LuisDev.
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 com mais de 800 video-aulas sobre C# e desenvolvimento de APIs com ASP NET Core, Microsserviços com ASP NET Core, Arquitetura de Software, Computação em Nuvem, SQL, HTML, CSS e JavaScript, JavaScript Intermediário, TypeScript, Desenvolvimento Front-End com Angular, e Desenvolvimento Front-end com React. Diversos mini-cursos disponíveis aos alunos e atualizações gratuitas.
Suporte dedicado, e comunidade de centenas de alunos.
Completo e online, destinado a profissionais que querem dar seu próximo passo em sua carreira como desenvolvedores .NET.
Clique aqui para ter mais informações e garantir sua vaga
Conclusão
Como sempre, eu evito ao máximo impor padrões e estruturas. Acho que o Clean Architecture oferece muito valor em sua essência, e que é possível personalizá-lo de acordo com o seu projeto. Isso, claro, que ele não perca suas vantagens.
Recomendo dar uma sacada no código-fonte, para se certificar de que compreendeu as propriedades e estrutura que usei lá.
E você, como implementa ele em seus projetos? Compartilhe esse artigo com sua equipe, para gerar uma discussão (saudável, de preferencia!) entre si.
Até a próxima!
Dev .NET Sênior com experiências para Irlanda e Estados Unidos, 2x Microsoft MVP, 9x Microsoft Certified, MBA em Arquitetura de Soluções, Fundador e Instrutor LuisDev Treinamentos,