【问题标题】:Should aggregate model contain metadata?聚合模型应该包含元数据吗?
【发布时间】:2018-12-03 15:28:15
【问题描述】:

我想澄清一下,聚合模型应该是什么样子。 我有几个事件,其中包含永远不会用于验证的数据。

例如,触发操作的 user_id(审计)、correlation_id(可观察性)、标签/标志等元数据。

它们将在命令中接收,并将作为事件的属性发送出去。它不会丢失,因为每个事件都持续存在。很清楚。

但是聚合对象应该包含这些值吗? 投影将拥有它们并将显示它们。在我看来,将它们放在 Aggregate 中没有意义。

或者,确实如此。如果要创建快照,则需要所有事件的属性。

谢谢你的建议。

【问题讨论】:

  • 我同意你的观点,并说“将它们放在 Aggregate 中没有意义”,除非它们用于验证。你如何存储你的聚合?它们是事件源的,不是吗?
  • 是的,它们是 - 正如我所写,每个事件都是持久的。
  • 如果您的聚合是事件来源的,那么您的聚合不需要这些值。更重要的是,验证所需的所有值只是聚合的内部状态。因此,聚合的公共 API 可以只是它们的行为(方法)

标签: domain-driven-design cqrs event-sourcing


【解决方案1】:

聚合应仅包含保持一致性所需的尽可能多的信息。如果您的业务规则需要 user_id,则该信息应保存在聚合中。否则,它不应该。

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2023-03-20
    • 2020-07-04
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多