在正确分类的应用程序中,您可以将所有请求分离(仅更新聚合并返回void)和查询(从特定的读取优化模型中提取数据)。
但是如果你已经有一个繁重的应用程序,并希望慢慢将它移动到ES + CQRS路径,你可能会有修改和更新模型并返回所有结果的请求(如果你执行命令然后查询,几乎相同但是这将是2个请求)这就是混合查询的意思。
我知道这显然是理论上的问题,我在这里没有任何代码来证明它,但是
您如何使用CQRS处理此类请求?
答案 0 :(得分:2)
您的"混合查询"超出CQRS的范围。我的答案是 - 如果你有这个,你没有CQRS。 CQRS意味着命令和查询隔离,这就是重点。
您不必立即将所有内容移动到新模型,您将拥有两个并行系统,并逐个移动到另一个系统。我强烈建议不要将旧东西混合到新模型中。
答案 1 :(得分:1)
看起来你基本上都在谈论牺牲Command-Query Separation,这是CQRS的先决条件,也是历史上最好的开发实践。
如果我要采用CQRS方法,那么在引入整个CQRS设备之前,我会通过符合CQS(如果有的话)启动,将查询与方法级别的命令分开。< / p>
您不必将其作为大爆炸返工,您可以通过功能切片进行功能切片,确保您具有高级自动化测试以确保重构。