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
Made with Slides.com