我开始阅读有关 CQRS 的内容,但我有点困惑。
是否允许在写入端调用读取端来获取附加信息?
http://cqrs.nu/Faq/command-handlers http://cqrs.nu/Faq/command-handlers在这里他们说这是不允许的,但在 cqrs 旅程代码中我发现他们调用了一个服务“IPricingService”,该服务在内部使用 DAO 服务类。
那么我必须做什么才能在我的聚合根中获取更多信息?
CQRS Journey 不应被视为一本手册。这只是一些团队奋力争取 CQRS 的故事,并且遇到了仅使用 Microsoft 堆栈的所有限制。本质上,您不应该在命令处理程序或域逻辑中使用读取模型。但是您可以从客户端查询读取模型,以获取命令所需的数据并验证命令。
由于我对此答案有一些反对票,因此我需要指出,我所写的是该模式中的既定实践。读端都不会访问写端,写端也不会从读端获取数据。
然而,“客户”的定义可能是一个讨论的话题。例如,我不相信面向公众的 JS 浏览器应用程序是一个适当的“客户端”。相反,我会使用 REST API 层作为 CQRS 中的“客户端”,而 Web 应用程序将只是该客户端的 UI 层。在这种情况下,REST API 服务调用处理将是合法的读取方读取器,因为它需要验证 UI 层发送的所有内容以防止伪造并验证某些业务规则。当这项工作完成后,命令就会形成并发送到写入端。验证和其他一切都是同步的,命令处理是异步的。
更新:鉴于下面的一些分歧,我想指出Udi 2009 年的文章 http://udidahan.com/2009/12/09/clarified-cqrs/一般谈论 CQRS,特别是命令和验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)