【问题标题】:How to identify if a project has used CQS OR CQRS? What is the difference between CQS and CQRS?如何识别项目是否使用了 CQS 或 CQRS? CQS 和 CQRS 有什么区别?
【发布时间】:2015-04-16 07:19:14
【问题描述】:

这个问题我可能听起来很愚蠢,但我真的很困惑。创建命令、查询、命令处理程序、查询处理程序和存储库并使用依赖注入来分别根据查询和命令解析查询处理程序和命令处理程序是否符合 cqs 或 cqrs 的条件?

或者将任务并行库用于命令和查询处理程序有资格作为 cqrs 而不是 cqs?

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

【问题讨论】:

  • 这根本不是一个愚蠢的问题。当您开始查看 CQRS 模式时,这是一个非常常见的问题。我认为 Alexey Zimarev 的回答在更高的层面上很好地解释了这些差异。

标签: design-patterns domain-driven-design cqrs command-query-separation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    CQRS 是一种架构模式。对我来说,CQS 更像是一种类设计原则。

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多