创建聚合和实体时如何集成限界上下文?

How to integrate bounded context when creating aggregates and entities?

我正在尝试将 DDD 原则与 CQRS 一起应用,但我在集成限界上下文时遇到了问题。

让我们考虑市场域中的目录和计费上下文。我在公元前 1 年将产品概念建模为目录聚合的实体,并在后者建模为聚合。

现在我有了这个 "merchant UI",商家可以在其中将产品添加到他的目录中。执行此操作时,他将提供产品的名称、描述和其他一些分类和定制数据,以及产品的售价、折扣政策等...

我应该如何在两个限界上下文中交流产品的创建? 我考虑过以下方法,但 none 我觉得合适:

什么是令人满意的替代方法?

谢谢

这个怎么样?

在目录上下文中,产品被建模为一个实体,这对我来说似乎是正确的。

在计费上下文中,产品可以是一个值对象,通过反腐败层从目录上下文转换而来。此产品型号中应仅包含计费所需的详细信息。

如果在计费上下文中使用 CQRS,您可能会发现需要刷新查询模型。即创建一个新的 Product Value Object。为此,我同意需要事件通知。在收到刷新其查询模型的消息后,计费上下文将访问目录上下文中的应用程序服务,该上下文可能具有自己的 CQRS 架构或其他架构。

我不确定为什么产品需要在计费上下文中成为聚合。产品是否需要在计费上下文中有命令方法,或者它是否有自己的存储库?

我猜你会感谢自己避免在应用程序服务中组合上下文,尽管在某些情况下这可能是最好的主意。不过,一般来说,应用程序服务属于单个限界上下文。