【发布时间】:2022-01-24 02:13:00
【问题描述】:
我是域驱动设计的新手,完全被建模问题困扰。这是一个只有一个不变量的简单特性的设计级事件风暴的截图: 让我们假设证书的条件不允许最终一致性,并且立即满足此条件以处理订单是绝对关键的。在这种情况下,要检查我的证书不变量,我需要访问:
- 订单季节
- 供应商所在国家/地区
- 针对特定国家/地区检查证书的季节
- 供应商的证书以及它们是否被接受并且是最新的
最初我尝试将我的应用程序拆分为多个有界上下文,对我来说,这些信息属于不同的有界上下文。然后我是否应该将所有这些必要的数据(上面列出的)放在一个聚合中以确保一致性并使其相当大,或者是否有任何其他解决方案?也许我的整个推理都是错误的,而且没有多大意义?也许有界上下文边界是错误的,因为需要将数据到达其他上下文(不是自治的)?也许域服务可能是一个解决方案?我将非常感谢任何帮助,因为我对那些 ddd 主题感到很困惑:/
【问题讨论】:
-
据我所知,从有限的信息来看,您基本上有两个不同的“证书”对象:一个在证书(管理)上下文中,一个在订单处理(验证)上下文中,它做完全不同的事情。因此,真正的问题是,如何将管理上下文的变化分配给验证上下文中不同证书的变化?有多种选择,但我建议您查看域事件 (serialized.io/ddd/domain-event)。
-
请注意,走领域事件路线意味着最终的一致性,出于本问题的目的,这已被排除在外。
-
您能否提供有关您的聚合的更多详细信息?您的案例中涉及哪些聚合,以及您的设计中的聚合位于哪些有界上下文中?一般来说,如果在不同的有界上下文中涉及聚合(或数据),那么如果最终一致性需要强一致性,那么实现起来就会变得更加复杂......
标签: aggregate domain-driven-design modeling bounded-contexts