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
- 317