3

我正在开发一个使用事件溯源和 CQRS 的发票 Web 应用程序。

我有 2 个用于不同查询的反规范化器(一个用于发票摘要列表,一个用于包含完整详细信息的单个发票)。我觉得很奇怪,我需要为这 2 个非规范化器复制很多逻辑——例如,监听改变总计、小计、税收等的事件。

我最终在消息总线上传递了包含真实计算数据的聚合本身,而不仅仅是事件,并且让非规范化器而不是事件来监听它。

这对我来说更简单,但似乎与模式不同。我读过的任何文章都没有提到这种方法。

我喜欢只在总线上传递事件并让每个非规范化器对它需要的东西做出反应的想法,但在实践中感觉更麻烦。

我很想听听你的想法。

谢谢你的帮助!

4

1 回答 1

2

正如上面评论中 guillaume31 所建议的那样,您可以简单地使用特殊事件来丰富您的域模型,例如NewTotalComputed. 根据事件的数量,这可能很快就会使您的域模型变得混乱。

或者,您可以将计算逻辑重构为从域模型(聚合根)和读取模型中使用的特殊策略类。

于 2015-08-05T10:12:20.273 回答