O padrão CQRS está sendo cada vez mais utilizado para o desenvolvimento e modelagem de aplicações que necessitam de expressividade no domínio, integrações com outras aplicações e um controle mais avançado sobre leitura e escrita de dados.
O conteúdo deste material está em vídeo, pois foi uma palestra online que realizei no Canal .NET e foi gravada ao vivo.
O CQRS além de ajudar muito na expressividade do domínio e sobre as intenções de negócio também vai facilitar muito a implementação de uma arquitetura “Event Driven”, que está sendo cada vez mais utilizada em projetos de Microservices e em cenários de muitas integrações.
Caso não conheça o padrão CQRS além deste tutorial eu indico este post que escrevi:
CQRS – O que é? Onde aplicar?
O código fonte de exemplo é do meu projeto open-source chamado Equinox.
Espero que vocês aproveitem o material e qualquer dúvida estou a disposição.
Vamos continuar a troca de experiências, deixe seu comentário abaixo. Se gostou e concorda com o artigo, compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.
Eduardo como sempre uma grande referência para nós!
Eduardo, você acha que deve-se separar também o assembly de Query do Command, ou só um “caminho” diferente baseado na aquitetura já basta ?
Como sempre explica muito bem, parabéns.
Edu,
Ao implementarmos CQRS obrigatoriamente eu devemos implementar Handlers ou podemos simplesmente receber Commands diretamente no Service da camada de aplicação? No fim das contas, um Handler não é bem semelhante à um Service da camada de aplicação?
Os Commands devem ser definidos sempre na camada do domínio e as queries na camada de aplicação?
Esse exemplo é simples, mas supondo que suas queries tivessem filtros, ordenações e paginação, você trataria tudo isso no repositório? E quando há condições de filtrar por n valores de forma que você tenha que validar se o usuário digitou n1 ou n2 e a query tem que ser montada dinamicamente, você passaria tudo pro repositório e lá faria as devidas validações?
Por fim, como sua aplicação é MVC você usa ViewModels, mas se fosse API você trocaria a nomenclatura para DTOs, manteria como ViewModels ou outra coisa?
Valeu
Abraços,
só quero morrer, cansado de tanto programar.
Ótimo vídeo! Como sempre muito esclarecedor.
Como ficaria a questão da implementação de CQRS em um sistema/API que utilize OData.
Seria correto “substituir” o Q(Query) por alguma implementação de OData?
Salve Eduardo!
Tenho acompanhado todo seu material e é fantástico, gosto muito da sua metodologia, já estou de olho nas próximas turmas pra eu me encaixar na agenda dos cursos!
Aproveitando, tenho uma dúvida simples sobre linguagem oblíqua, trabalho em uma empresa Brasileira, então a linguagem natural é toda em português, mas quando escrevemos o código é em inglês (pratica da empresa), então como trabalhar a linguagem oblíqua nesse sentido? Como por exemplo em um termo jurídico um acordo entre litigantes se chama na empresa de Avença, a entidade no sistema é que definimos para isso é Covenant, isso é valido? Ou teria que mudar o padrão para escrever o código em português?
Desculpe, onde eu disse oblíqua na verdade quero dizer ubíqua! 🙂
Sorry.