Guillermo Valencia - Blog 
Este sitio web utiliza JavaScript. Por favor, habilítalo en tu navegador para que todo funcione correctamente.

El Patrón CQRS

Guillermo Valencia

Publicado el 12 de marzo de 2018

Tags: Patrones

CQRS, del inglés “Command Query Responsibility Segregation” es un patrón arquitectónico que recomienda codificar los comandos y las consultas de forma separada, es decir, separar las consultas que no modifican el estado del sistema en una pila diferente y optimizada de los comandos que si modifican el estado del sistema.

CQRS puede ser implementado igualmente con Entity Framework, pero limitando las operaciones de cambio para que no tengamos la tentación de utilizarlas desde donde no debamos, saltándonos todas las reglas de negocio y directrices arquitectónicas.
Para ello, podemos utilizar un simple contenedor que encapsule la instancia del DBContext de EF y que solo exponga las operaciones de sólo lectura. Se puede ver un ejemplo en el siguiente enlace: https://msdn.microsoft.com/es-es/magazine/mt683793.aspx

La principal ventaja de CQRS es que eliminamos complejidad en el diseño del sistema, no es incompatible con DDD, sino que se trata de un patrón adicional a implementar dentro de DDD, haciendo que el dominio se centre en el modelo que modifica el estado del sistema, simplificando y optimizando la lógica encargado de las operaciones de lectura, generando un código más simple.

Aplicar CQRS no quiere decir que desde la capa de presentación instanciemos accedamos directamente a la capa de persistencia de datos, sino que utilizaremos un “microservicio” ubicado en la capa de Infraestructura que nos dará acceso a las operaciones de lectura de datos.

Patrón CQRS