如何识别项目是否使用了CQS或CQRS?CQS和CQRS有什么区别?

Dil*_*mar 2 design-patterns domain-driven-design command-query-separation cqrs

我可能对这个问题听起来很愚蠢,但我真的很困惑.创建命令,查询,commandhanlder,queryhandler和存储库以及使用依赖注入来分别根据查询和命令解析查询处理程序和命令处理程序是否有资格作为cqs或cqrs?

或者使用任务并行库为命令和查询处理程序限定为cqs而不是cqs?

或者它是否真的基于用例是否存在协作域的场景 - >多个用户试图访问有限的数据.

Ale*_*rev 9

CQS说你的命令方法不应该返回任何东西(无效)并只改变对象状态.查询方法应该返回结果,查询方法调用应该是不可变的,查询方法不会改变对象状态.就是这个.

CQRS是"将模型对象分成两个".您将有一个要编写的模型和一个要读取的模型,这些模型是完全独立的.您可以将数据存储在同一个数据库中,但是使用命令写入的位置与使用查询的位置分开,它们使用不同的模型(写入和读取).