假设我们有一个 Order
实体,它将在 2 个 diff 中建模。电子商务应用程序中的 BC。
第一个 BC 是下单
。该 BC 负责收集客户从我们不同网站下的所有订单,对其进行验证并按状态为已下达
或已拒绝
的订单填充其相应的数据库。
BC 2 是装运
。这使得仓库中的员工可以在订单离开仓库后在其数据库中将订单标记为已发货
。
现在,由于两个 BC 使用不同的数据库,这些数据库一开始都是空的,因此需要将已下订单
通知 Shipment
BC,以便当扫描仪想要发货
一个订单
,它将位于发货
BC 中。
我最初的方法是在订单
放入订单放置
BC并让装运
BC订阅后创建一个域事件该事件并在其数据库中为每个下订单创建一个相应的 Order
实体。
但是,我无法阻止自己在不同数据库之间复制数据的感觉。
我的第二种方法是每次为Order
实体Shipped
时询问Order Placement
,但我仍然需要维护订单状态,以防发货失败。
是否有更好的方法从 DDD POV 来解决这一切?
最佳答案
我认为你的第一种方法非常好。您没有复制数据,因为正如您已经注意到的那样,该数据来自另一个上下文。相同的数据在不同的上下文中意味着不同的事情。
关于oop - 一个实体,不同数据库的不同限界上下文中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720992/