différence entre cqrs vs cqs
J'apprends ce qui estCQRS pattern et j'ai appris qu'il y a aussi CQS pattern
Quand j'ai essayé de chercher j'ai trouvé beaucoup de diagrammes,info sur CQRS, mais din pas trouvé beaucoup sur CQS
Point clé dans CQRS Motif
Dans cqrs il est un modèle à l'écriture ( modèle de Commande ) et un modèle à lire (modèle de Requêtes ), qui sont complètement distinct de.
Comment CQS différenciés à partir de CQRS. . ?
Quels sont les points clés où les deux sont différenciés . . ?
Toute assistance serait appréciée :)
3 réponses
CQS (Command Query Separation) et CQRS (Command Query Responsibility Segregation) sont très liés. Vous pouvez penser à CQS comme étant au niveau de la classe ou du composant, tandis que CQRS est plus au niveau du contexte délimité.
J'ai tendance à penser que CQS est au niveau micro, et CQRS au niveau macro.
CQS prescrit des méthodes distinctes pour interroger ou écrire dans un modèle: la requête ne mute pas l'État, tandis que la commande mute l'état mais n'a pas de retour valeur. Il a été conçu par Bertrand Meyer dans le cadre de son travail de pionnier sur le langage de programmation Eiffel.
CQRS prescrit une approche similaire, sauf que c'est plus un chemin à travers votre système. Une requête de requête prend un chemin distinct d'une commande. La requête renvoie des données sans modifier le système sous-jacent; la commande modifie le système mais ne renvoie pas de données.
Greg Young a mis en place un écriture assez approfondie de ce que CQRS est il y a quelques années, et va dans comment CQRS est une évolution de CQS. Ce document m'a présenté CQRS il y a quelques années, et je le trouve un document de référence encore très utile.
La plus grande différence est que CQRS utilise des magasins de données séparés pour les commandes et les requêtes. Un magasin de requêtes peut utiliser une technologie différente comme une base de données de documents ou simplement être un schéma dénormalisé dans la même base de données qui facilite l'interrogation des données.
Les données entre les bases de données sont généralement copiées de manière asynchrone en utilisant quelque chose comme un bus de service. Par conséquent, les données dans le magasin de requêtes sont finalement cohérentes (seront là à un moment donné). Les demandes doivent tenir compte de que. Bien qu'il soit possible d'utiliser la même transaction (même base de données ou un commit en 2 phases) pour écrire dans les deux magasins, il n'est généralement pas recommandé pour des raisons d'évolutivité.
L'architecture CQS lit et écrit à partir du même magasin de données / tables.
- CQS concerne la commande et les requêtes. Il ne se soucie pas du modèle. Vous avez des services séparés en quelque sorte qui ne lisent que les données et des services qui modifient les données.
- CQRS concerne des modèles séparés pour l'écriture et la lecture. Bien sûr, l'utilisation du modèle d'écriture lit souvent quelque chose pour remplir la logique métier,mais vous ne pouvez faire des lectures que sur le modèle de lecture. Les bases de données séparées sont à la fine pointe de la technologie. Mais imaginez une seule base de données avec des modèles séparés pour lire et écrire modélisés dans ou / M. c'est très souvent bon assez.
J'ai constaté que les gens disent souvent qu'ils pratiquent CQRS quand ils ont CQS.