我正在学习什么是CQRS模式,并逐渐认识到还有CQS模式。
当我试图搜索时,我在CQRS上找到了很多图表和信息,但没有发现多少关于CQS的信息。
CQRS模式的关键点
在CQRS中有一个要写的模型(命令模型)和一个要读取的模型(查询模型),它们是完全独立的。

CQS与CQRS有何不同?
发布于 2015-12-15 03:41:34
命令查询分离( CQS )与命令查询责任分离( CQRS )有着密切的关系。您可以认为CQS处于类或组件级别,而CQRS则更多地位于有界上下文级别。
我倾向于认为CQS是在微观层面,CQRS是在宏观层面。
CQS规定了用于从模型查询或写入模型的不同方法:查询不变异状态,而命令更改状态,但没有返回值。它是由Bertrand设计的,这是他在埃菲尔编程语言方面的开创性工作的一部分。
CQRS规定了一种类似的方法,但它更像是一条贯穿您的系统的路径。查询请求采取与命令不同的路径。查询返回数据而不更改基础系统;命令更改系统,但不返回数据。
格雷格·杨( Greg )收集了一个关于几年前CQRS是什么的写得很透彻,并探讨了CQRS是如何演变的。这份文件几年前向我介绍了CQRS,我发现它仍然是一份非常有用的参考文件。
发布于 2019-04-17 02:48:15
这是一个老问题,但我要试着回答它。我不经常在StackOverflow上回答问题,所以如果我做了一些超出社区范围的事情,比如链接到事物,写一个长的答案等等,请原谅我。
CQRS和CQS有许多不同之处,但是CQRS在其定义中使用了CQS!让我们从定义两者开始,然后我们可以讨论差异。
CQS根据消息的返回值定义两种类型的消息:无返回值(void)指定这是命令;返回值(非空)指定此方法为查询。
命令改变状态。查询没有。
现在是CQRS,它对命令和查询使用与CQS相同的定义。CQRS说的是,我们不希望一个带有命令和查询方法的对象。相反,我们需要两个对象():一个包含所有命令,另一个包含所有查询。
总体来说,这个想法非常简单;这是做完这件事之后的每一件事都变得有趣起来。网上有无数的对话,我讨论了一些相关的属性(对不起,这里输入的太多了!)
发布于 2018-09-12 14:35:04
我发现,人们经常说,当他们有CQS时,他们会练习CQRS。
https://stackoverflow.com/questions/34255490
复制相似问题