Implementando o padrão CQRS em aplicações .NET

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.

CQRS

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.

* Assine meu canal no Youtube 🙂


Caso esteja interessado em conhecer mais sobre Testes, TDD, ASP.NET, DDD, Padrões de Arquitetura e boas práticas de desenvolvimento não deixe de conferir as ementas dos meus cursos:

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.

6 ideias sobre “Implementando o padrão CQRS em aplicações .NET

  1. 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 ?

  2. 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,

  3. Ó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?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *