CQRS

ou

Command Query Responsibility Segregation

Command Query Separation

 

Bertrand Meyer :

Object Oriented Software Construction (1988)

Database

 

Model

 

Controller avec CRUD

Command

(Modifieur/Mutateur)

  • Crée

  • Edite

  • Supprime

Query

(Requête)

  • Récupère une info

  • Affiche l'info

La différence ?

  • Le type de return

  • L'altération de l'état (observable) d'un système ou non

Changement non observable de l'extérieur

class Machin {

  private $prop;

  private function getProp() {

   return $this->prop;

  }

}

Limites du modèle traditionnel

 

 

  • modifications d'affichage récurrentes

  • mêmes entités sujettes aux deux formes de requêtes

  • gestion complexe selon taille du projet

Le CQRS

  • Multiples manip' sur mêmes données

  • Sur de gros domaines (domain-driven dev)

  • Si grosse demande de perf pour lecture

  • Pour séparer le travail en deux équipes

  • Si le projet nécessitera en évoluant des altérations du modèle de base

  • Mise en place complexe

 

  • Garder cohérence des deux modèles

 

  • Emploi partiel majoritaire

 

Association avec d'autres patterns

 

Conclusion

Sources :

 

 

  • https://www.martinfowler.com/bliki/CQRS.html

  • https://www.martinfowler.com/bliki/CommandQuerySeparation.html

  • https://en.wikipedia.org/wiki/Object-Oriented_Software_Construction

  • https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs

CQRS

By djohn12

CQRS

  • 326