.NET - Conceitos DDD para iniciantes - II
Vamos continuar apresentando alguns conceitos do Domain Drive Design (DDD) para quem esta iniciando e deseja conhecer melhor essa abordagem. |
Na sequência da primeira parte do artigo vamos continuar apresentando conceitos usados na abordagem DDD.
A seguir vou apresentar o que pode ser entendido como sendo os pilares do DDD.
1- Strategic Design ou Modelagem Estratégica
O objetivo principal da modelagem estratégica é definir 3 conceitos importantes do DDD em conjunto com a equipe do projeto:
|
Os
principais tipos de relacionamentos entre os Bounded Context são:
|
Nota: Os modelos onde os limites são inconsistentes são chamados de Big ball of mud (A grande bola de lama)
2- Tatical Design ou Modelagem
Tática
A modelagem tática esta relacionada com os blocos de construção da DDD podendo
ser Entidades, Serviços, Repositórios, Value Objects (Objetos de Valor),
Agreggates (Agregados), Events, Factories, etc., sendo um conjunto de
recursos técnicos usados na construção do Modelo de domínio do negócio.
Aplicamos a modelagem tática dentro de um Contexto Delimitado usando os padrões dos blocos de construção do DDD. Sendo que um dos padrões mais importantes do projeto tático são os Agregados ou Aggregates.
A seguir temos um resumo do conceito sobre os principais blocos de construção usados na DDD: (origem)
3- Architecture Design
Refere-se aos estilos de arquitetura usado na implementação do DDD como : Hexagonal, Onion, Layered, CQRS ,etc.
Uma das grandes
vantagens do DDD é que ele não requer o uso de nenhuma arquitetura específica.
Ao implementar o DDD, você terá que definir uma arquitetura em algum momento, e
você é livre para adotar qualquer tipo de arquitetura que faça sentido para você
e pode até usar diferentes tipos de arquitetura.
Assim podemos ter em cada Contexto Delimitado a implementação de uma arquitetura
específica.
A seguir temos um breve resumo dos principais modelos e padrão de arquitetura
que podem ser usados na implementação do DDD:
A arquitetura em
camadas é sem dúvida a arquitetura mais popular e mais usada pelos
desenvolvedores de hoje.
Camadas são uma forma de separação de responsabilidades, o que significa que
cada camada tem uma responsabilidade específica.
Uma camada superior pode acessar uma camada inferior, mas uma camada inferior nunca pode acessar uma camada superior.
A arquitetura hexagonal também é conhecida como portas e adaptadores, onde portas são interfaces e adaptadores são implementações, é um tipo de arquitetura em que a camada de domínio é enfatizada.
De uma maneira prática, podemos entender como uma arquitetura em camadas onde o 'Princípio da Inversão da Dependência' foi aplicada para que a camada do domínio se tornasse a camada central que não 'depende' de qualquer outra camada.
Representational State Transfer, abreviado como REST, é um estilo de arquitetura para projetar arquiteturas de software distribuídos, o REST define um conjunto de propriedades e restrições baseadas em HTTP e usa todo o potencial dos verbos HTTP.
A Segregação de Responsabilidade por Consulta de Comando, ou CQRS, é uma arquitetura de software padrão que separa a leitura e a gravação dos dados, onde a Consulta é para leitura e o Comando para a gravação de dados.
A arquitetura orientada a eventos (Event Driven Architecture) é uma arquitetura de software, na qual existem Produtores (Pub) de eventos que geram um fluxo de eventos e Consumidores (Sub) de eventos que ouvem eventos.
Temos assim uma brevíssima descrição dos 3 principais pilares da DDD e de seus constituintes de forma a que você conheça parte dos fundamentos do DDD.
E estamos conversados...
"Sede,
pois, imitadores de Deus, como filhos amados;
E andai em amor, como também Cristo vos amou, e se entregou a si mesmo por nós,
em oferta e sacrifício a Deus, em cheiro suave."
Efésios 5:1,2
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Domain Drive Design - Resumo do Livro de Eric ... - Macoratti
DDD – Introdução a Domain Driven Design | AgileAndArt
Desmistificando o DDD | Lambda3