Domain driven design 领域驱动设计如何连接两个上下文?
如何将一个有界上下文与另一个有界上下文连接起来Domain driven design 领域驱动设计如何连接两个上下文?,domain-driven-design,bounded-contexts,Domain Driven Design,Bounded Contexts,如何将一个有界上下文与另一个有界上下文连接起来例如,我有一个购物车上下文和产品上下文,当我首先将一个产品添加到购物车时,我想检查该产品是否存在,所以我的问题是如何在一个整体项目中连接上下文? 免责声明我知道,在微服务体系结构中,您可以请求特定的API端点来恢复所需的确切对象,并将其映射到值对象。但是在一块巨石上该怎么办呢?创建一个桥接类或创建一个数据库存储库,它将从数据库的某个表中检索值对象?我期待着您的想法,谢谢您的帮助。至少有两种不同的方法来管理它 上下文间的数据克隆 在这个解决方案中,您
例如,我有一个购物车上下文和产品上下文,当我首先将一个产品添加到购物车时,我想检查该产品是否存在,所以我的问题是如何在一个整体项目中连接上下文?
免责声明
我知道,在微服务体系结构中,您可以请求特定的API端点来恢复所需的确切对象,并将其映射到值对象。但是在一块巨石上该怎么办呢?创建一个桥接类或创建一个数据库存储库,它将从数据库的某个表中检索值对象?
我期待着您的想法,谢谢您的帮助。至少有两种不同的方法来管理它 上下文间的数据克隆 在这个解决方案中,您为每个上下文使用多个类似的表,其中数据在每个上下文之间部分复制 因此,为了支持您的请求,您必须在用于购物车的上下文中维护产品数据的副本。 要支持这一点,您可以使用:
注意(个人体验):我使用第二种解决方案。我们有一个巨大的整体,有许多表,这些表的数据在多个上下文之间共享。克隆每个上下文的数据的过程是不可行的:仅此过程就花费了太多时间,而没有考虑所有的回退情况。共享表的速度要快得多,让我们可以开发良好的分割边界上下文。我不使用JPA(JavaORM),所以我控制加载域实体的SQL代码。持久性访问的所有内容都经过了测试,因此每当发生变化时,我都会立即得到报告。我对第二个解决方案有一个问题,您是在购物车上下文中创建产品实体的克隆还是通过存储库加载的不可变值对象?我创建了一个全新的实体,当绑定上下文需要存储库来管理此信息时。否则,我将创建一个值对象,以便将克隆的数据直接加载到另一个实体中。这意味着查询在某个地方连接了原始表的数据。无论如何,在任何情况下,我都不会使用相同的类,或者从它们继承的类。我使用的总是全新的,完全符合实际上下文的需要,避免了来自其他上下文的任何依赖。