Este artigo é uma extensão do artigo teórico Componentes do Software Empresarial, que retrata a combinação dos conceitos de design de software, nomeadamente a Hexagonal Architecture e Clean Architecture.
É necessário ler o artigo anterior para perceber os conceitos aqui aplicados, e os objetivos pretendidos.
Desta vez focaremos essencialmente nas questões práticas, ou seja na implementação do design apresentado anteriormente.
Proposta de Design
O diagrama seguinte resulta de uma combinação dos ensinamentos das arquiteturas Hexagonal e Clean; e representa em detalhe o design pretendido para o nosso software.
Este diagrama identifica de forma geral, simples e direta, todas as camadas do design, e as suas responsabilidades:
Entities (ou domain) — Contém as regras principais do negócio.
Use cases (ou application) — Contém as regras de orquestração ou as operações princiais da aplicação.
Adaptadores de interface — Fazem a intermediação da aplicação com o mundo exterior (a infraestrutura).
Infraestrutura (Frameworks, drivers) — O mundo externo, que podem ser aplicações, serviços, bibliotecas, APIs…
Os entities e os use cases constituem o núcleo (core) da aplicação, a componente central da arquitetura (o hexágono) e o responsável por encapsular toda a lógica do negócio.
A Perspectiva Hexagonal
Na perspectiva da arquitetura Hexagonal a aplicação deve ser capaz de:
Suportar várias tecnologias (base de dados, message brokers, serviços de emails, etc)
Ser testado sem ter todas as tecnologias definidas
Ser desenvolvida sem ter todas as tecnologias definidas
A arquitetura (Hexagonal) possui dois lados essenciais:
Lado esquerdo ou lado de user interface — direcionado aos utilizadores e às aplicações clientes. Possibilitado pelos Driving Adapters.
Estes utilizarão a aplicação.
Lado direito ou lado de data and service providers — direcionado para o acesso de dados e serviços. Possibilitado pelos Driven Adapters.
Estes serão utilizados pela aplicação.