CQRS, interfaces, queries, ORMs….cuidado!

Olá, pessoal

Neste artigo, veremos um pouco de CQRS, alguns erros cometidos e lições aprendidas em minhas primeiras incursões a este padrão.

Espero que sirva de alerta para os marinheiros de primeira viagem quanto a algumas escolhas de design e ferramentas.

Vamos lá!

CQRS – UMA BREVE INTRODUÇÃO

CQRS (Command/Query Responsibility Segregation) é um padrão cuja ideia basicamente consiste em quebrar um objeto – composto de comandos (commands) e consultas (queries) – em dois objetos, um somente com comandos e outro somente com consultas. Continue lendo »

Anúncios

Lógica de negócio vs lógica de aplicação

Olá, pessoal!

Quando começamos a trabalhar com a camada de aplicação, popularizada nos últimos anos pelo Domain-Driven Design, ficam dúvidas sobre sua verdadeira função e sobre qual código devemos colocar nela. Escrevi dois artigos anteriormente que ajudam a elucidar essas questões <<aqui>> e <<aqui>>.

Neste terceiro, mostro uma divisão mais clara entre lógica de negócio e lógica de aplicação e algumas dicas para não confundirmos as duas. Espero que gostem! Continue lendo »

Implementando serviços de aplicação transacionais

Olá, pessoal

Neste artigo, voltamos aos serviços de aplicação, mostrando uma forma de implementá-los com o controle transacional, de um modo totalmente extensível.

Caso ainda não tenha feito, recomendo a leitura <deste post> – sobre a camada de aplicação – para melhor contextualizá-lo sobre onde os serviços de aplicação se encaixam em uma arquitetura em camadas.

Vale ressaltar que veremos uma solução baseada em “CommandHandlers” para lidar com serviços que executam alguma ação que altere o estado do sistema. Nenhuma solução referente às consultas da aplicação será mostrada.

Vamos lá! Continue lendo »

Implementando um notificador de eventos

Olá, pessoal

No artigo de hoje, veremos na prática a implementação de um notificador de eventos (o famoso padrão “Observer”) fazendo uso de um container de DI. A solução proposta é flexível, utilizando boas práticas de design e arquitetura de software.
____________________________

Nota: este é um artigo avançado, pois utiliza-se de padrões como Observer e Ambient Context, conceitos como Dependency Injection, CompositionRoot e Princípio da Inversão de Dependência e práticas de teste como mocks. Portanto, esses conceitos são necessários para um melhor entendimento do “porquê” das coisas. O artigo fornece diversas referências para todos eles.
____________________________

Vamos lá! Continue lendo »