创建聚合和实体时如何集成限界上下文?
How to integrate bounded context when creating aggregates and entities?
我正在尝试将 DDD 原则与 CQRS 一起应用,但我在集成限界上下文时遇到了问题。
让我们考虑市场域中的目录和计费上下文。我在公元前 1 年将产品概念建模为目录聚合的实体,并在后者建模为聚合。
现在我有了这个 "merchant UI",商家可以在其中将产品添加到他的目录中。执行此操作时,他将提供产品的名称、描述和其他一些分类和定制数据,以及产品的售价、折扣政策等...
我应该如何在两个限界上下文中交流产品的创建?
我考虑过以下方法,但 none 我觉得合适:
创建一个命令来收集商家通过 UI 提供的所有数据,然后让控制器或应用程序服务集成两个限界上下文并向每个限界上下文发送专门的命令一个
将定价信息添加到 Catalog BC 并触发事件(或使用数据库触发器)以通知 Billing BC 产品创建
什么是令人满意的替代方法?
谢谢
这个怎么样?
在目录上下文中,产品被建模为一个实体,这对我来说似乎是正确的。
在计费上下文中,产品可以是一个值对象,通过反腐败层从目录上下文转换而来。此产品型号中应仅包含计费所需的详细信息。
如果在计费上下文中使用 CQRS,您可能会发现需要刷新查询模型。即创建一个新的 Product Value Object。为此,我同意需要事件通知。在收到刷新其查询模型的消息后,计费上下文将访问目录上下文中的应用程序服务,该上下文可能具有自己的 CQRS 架构或其他架构。
我不确定为什么产品需要在计费上下文中成为聚合。产品是否需要在计费上下文中有命令方法,或者它是否有自己的存储库?
我猜你会感谢自己避免在应用程序服务中组合上下文,尽管在某些情况下这可能是最好的主意。不过,一般来说,应用程序服务属于单个限界上下文。
我正在尝试将 DDD 原则与 CQRS 一起应用,但我在集成限界上下文时遇到了问题。
让我们考虑市场域中的目录和计费上下文。我在公元前 1 年将产品概念建模为目录聚合的实体,并在后者建模为聚合。
现在我有了这个 "merchant UI",商家可以在其中将产品添加到他的目录中。执行此操作时,他将提供产品的名称、描述和其他一些分类和定制数据,以及产品的售价、折扣政策等...
我应该如何在两个限界上下文中交流产品的创建? 我考虑过以下方法,但 none 我觉得合适:
创建一个命令来收集商家通过 UI 提供的所有数据,然后让控制器或应用程序服务集成两个限界上下文并向每个限界上下文发送专门的命令一个
将定价信息添加到 Catalog BC 并触发事件(或使用数据库触发器)以通知 Billing BC 产品创建
什么是令人满意的替代方法?
谢谢
这个怎么样?
在目录上下文中,产品被建模为一个实体,这对我来说似乎是正确的。
在计费上下文中,产品可以是一个值对象,通过反腐败层从目录上下文转换而来。此产品型号中应仅包含计费所需的详细信息。
如果在计费上下文中使用 CQRS,您可能会发现需要刷新查询模型。即创建一个新的 Product Value Object。为此,我同意需要事件通知。在收到刷新其查询模型的消息后,计费上下文将访问目录上下文中的应用程序服务,该上下文可能具有自己的 CQRS 架构或其他架构。
我不确定为什么产品需要在计费上下文中成为聚合。产品是否需要在计费上下文中有命令方法,或者它是否有自己的存储库?
我猜你会感谢自己避免在应用程序服务中组合上下文,尽管在某些情况下这可能是最好的主意。不过,一般来说,应用程序服务属于单个限界上下文。