gpt4 book ai didi

domain-driven-design - 聚合可以成为域事件的一部分吗?

转载 作者:行者123 更新时间:2023-12-04 08:21:34 30 4
gpt4 key购买 nike

考虑具有许多属性的聚合。例如用户组。如果我想发布一个 UserGroupCreatedEvent,我可以做两件事:

  1. 将刚刚创建的用户组的属性复制到UserGroupCreatedEvent 并复制它们的值。或者:

  2. 在 UserGroupCreatedEvent 中引用新的 UserGroup

在许多示例中,例如 Axon 的联系人应用程序,我都看到过属性重复。我想知道为什么,如果在现实世界的 CQRS 应用程序中,这不是很多开销,开发人员会选择引用聚合。

最佳答案

事件是一个 DTO,它意味着跨越边界。直接包含聚合存在以下问题:

  • 聚合是一个只有在其自身的有界上下文中才有意义的概念;
  • 一个事件应该只包含相关的变化,而不是概念的整个状态;
  • 因为一个事件是一个 DTO,在某一时刻它会被(反)序列化,这对于正确封装的对象来说是一个技术问题;
  • 接收处理事件的每个组件/上下文都将依赖于定义聚合的组件;

这些是为什么领域事件应该只是相关状态变化的扁平化表示的主要原因。

P.S:如果您需要在事件中包含整个状态,可能事件设计不当或者您正在处理一个简单的数据结构。通常聚合包含一些值对象和/或封装一些业务约束。

关于domain-driven-design - 聚合可以成为域事件的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273176/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com