Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Julio Cesar Avellaneda
MSFT MVP Developer Technologies
julito_gtu@hotmail.com
https://medium.com/@julitogtu
@julitogtu
CQR...
CQRS
@julitogtu
• Generalmente, cualquier acción de un sistema se puede categorizar en alguna de las dos siguientes accion...
CQRS – Diagrama
CQRS
@julitogtu
• Generalmente, cualquier acción de un sistema se puede categorizar en alguna de las dos siguientes accion...
CQRS
@julitogtu
CQRS
Beneficios
@julitogtu
• Simplificación del diseño: Definición de modelos acordes a cada operación.
• Escalabilidad in...
CQRS
Un comando es la única vía en que se
puede alterar el sistema, tienen como
responsabilidad realizar cambios en el
sis...
CQRS – Dos modelos generales
Base de datos compartida
Bases de datos separadas
CQRS – Cómo lucen los comandos
Un comando generalmente hace
referencia a una tarea específica,
permitiendo modelar flujos ...
CQRS – Cómo lucen los queries
Un query permite obtener información
del sistema, debe estar enfocado en la
necesidad puntua...
CQRS
Read Model
@julitogtu
• Modelo sencillo por su naturaleza de solo permitir consultas.
• Posibilidad de usar elementos...
CQRS
Query
@julitogtu
Un query es una operación de lectura, se encarga de leer el estado del
sistema, realizar filtros, co...
CQRS
Command
@julitogtu
• Modelo con reglas de negocio definidas.
• Única forma de alterar el estado del sitema.
• General...
CQRS
@julitogtu
CQRS
@julitogtu
• Algunas librerías útiles para implementar CQRS:
• Mediatr: https://github.com/jbogard/MediatR
• Brighter...
Prochain SlideShare
Chargement dans…5
×

Introducción a CQRS

139 vues

Publié le

Introducción a CQRS

Publié dans : Logiciels
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Introducción a CQRS

  1. 1. Julio Cesar Avellaneda MSFT MVP Developer Technologies julito_gtu@hotmail.com https://medium.com/@julitogtu @julitogtu CQRS (Common Query Responsibility Segregation)
  2. 2. CQRS @julitogtu • Generalmente, cualquier acción de un sistema se puede categorizar en alguna de las dos siguientes acciones: • Query: Operación que no altera el estado del sistema y retorna datos. • Command: Operación que modifica el estado del sistema. • Un solo modelo de dominio utilizado tanto para queries como para commands no ejemplifica claramente la diferencia entre las dos acciones agregando complejidad y complejidad innecesaria. • CQRS tiene como objetivo tratar de una mejor forma la diferencia entre las responsabilidad de los queries y de los commands.
  3. 3. CQRS – Diagrama
  4. 4. CQRS @julitogtu • Generalmente, cualquier acción de un sistema se puede categorizar en alguna de las dos siguientes acciones: • Query: Operación que no altera el estado del sistema y retorna datos. • Command: Operación que modifica el estado del sistema. Query Command Operaciones de lectura Operaciones de escritura
  5. 5. CQRS @julitogtu
  6. 6. CQRS Beneficios @julitogtu • Simplificación del diseño: Definición de modelos acordes a cada operación. • Escalabilidad independiente: Al tener diferentes modelos, si estos se encuentran desacoplados, cada lado de CQRS (queries/commands) pueden escalar de forma independiente sin afectar el otro. • Mantenibilidad: Al tener modelos diferentes, la complejidad de cada sistema, módulo u operación es menor, por lo tanto más sencilla de mantener. • Extensibilidad: Al tener los dos mundos separados, cambios o nuevas características pueden ser implementados sin afectar la otra parte. • Equipos diferentes.
  7. 7. CQRS Un comando es la única vía en que se puede alterar el sistema, tienen como responsabilidad realizar cambios en el sistema. Command Query Un query está asociado siempre a una operación de lectura, se encarga de leer la información y transformarla.
  8. 8. CQRS – Dos modelos generales Base de datos compartida Bases de datos separadas
  9. 9. CQRS – Cómo lucen los comandos Un comando generalmente hace referencia a una tarea específica, permitiendo modelar flujos de negocio reales.
  10. 10. CQRS – Cómo lucen los queries Un query permite obtener información del sistema, debe estar enfocado en la necesidad puntual del negocio.
  11. 11. CQRS Read Model @julitogtu • Modelo sencillo por su naturaleza de solo permitir consultas. • Posibilidad de usar elementos de solo lectura. • Contextos limitados a solo exponer datos de lectura. • Diferente stack de acceso a datos (ORM, Micro-ORMs, ADO.NET) • Modelos de persistencia pensados el alta concurrencia y rápida al ser consultados: • Bases de datos en memoria • Motores de búsqueda • Bases de datos no-relacionales
  12. 12. CQRS Query @julitogtu Un query es una operación de lectura, se encarga de leer el estado del sistema, realizar filtros, consulta agregados y transforma los datos en el formato más adecuado. Un query puede ejecutarse n-veces ya que no altera el resultado del sistema y siempre debe obtener el mismo resultado. Un query define básicamente dos elementos: • Query • Query Handler
  13. 13. CQRS Command @julitogtu • Modelo con reglas de negocio definidas. • Única forma de alterar el estado del sitema. • Generalmente no retornan datos. • Generalmente un comando tiene asociados eventos. • Los comandos hacen referencia a las acciones que pueden ocurrir. • Los eventos hacen referencias a las acciones que ocurrieron. • Un evento puede tener mùltiples handlers. • Dos partes: • Command • CommandHandler
  14. 14. CQRS @julitogtu
  15. 15. CQRS @julitogtu • Algunas librerías útiles para implementar CQRS: • Mediatr: https://github.com/jbogard/MediatR • Brighter: https://brightercommand.github.io/Brighter/ • NCQRS: https://github.com/pjvds/ncqrs • EventFlow: https://github.com/eventflow/EventFlow • CQRS.Net: http://getcqrs.net/

×