2

我可能听起来很愚蠢,但我真的很困惑。创建一个命令,查询,commandhanlder,查询处理程序和存储库,并使用依赖注入来解决基于查询和命令的查询处理程序和命令处理程序分别符合cqs或cqrs吗?如何识别项目是否使用CQS或CQRS? CQS和CQRS有什么区别?

或使用任务命令和查询处理程序的并行库合格为cqrs而不是cqs?

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

+0

这完全不是一个愚蠢的问题。当您开始查看CQRS模式时,这是一个非常常见的问题。我认为Alexey Zimarev的回答很好地解释了这种差异。 – user707727

回答

9

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

CQRS将“将模型对象拆分为两个”。你将有一个模型可供编写,一个模型可以读取,它们是完全独立的。您可能会将数据存储在同一个数据库中,但是使用命令写入的位置与使用查询所读取的位置是分开的,它们使用不同的模型(写入和读取)。

2

CQRS是一种架构模式。对我而言,CQS更多的是一个阶级设计原则。