知识卡片

用面向聚合的资源库封装事件溯源细节

普通读书笔记卡 · 1980.u

内容

事件溯源有面向事件与面向聚合两个视角,但获取/存储/运用事件的目的都是操作聚合(实例化或重建、等同持久化、更新)。因此可用聚合资源库封装事件溯源与事件存储的底层机制,既简化领域服务逻辑,又让代码阅读者更直观理解领域逻辑(IssueRepository 内含 issueOf 查询、add 新建、update 更新,私有 processCommandThenSave 统一「process 生成事件→eventStore.save」)。封装后领域服务操作聚合就如对象范式的实现,区别在于它接收的仍是决策命令,从承担领域行为蜕变为对命令的分发;因其逻辑简单,可为一个聚合定义一个领域服务,甚至更名为命令分发器(CommandDispatcher)才名副其实。发散:资源库抽象让「换成事件溯源」对上层几乎透明。

参考来源

- 位置:《解构领域驱动设计》附录B B.2.4(源文件:_epub-src/OEBPS/035.xhtml) - 结论依据:原文说明用面向聚合的资源库封装事件溯源、领域服务退化为命令分发器。 - 原始内容:我们可以通过聚合资源库来封装事件溯源与事件存储的底层机制……可考虑将领域服务命名为命令分发器,如将IssueService更名为IssueCommandDispatcher。