我有一个类似于这里描述的示例:
实体的标识可以跨多个微服务或界定上下文。
可以跨多个界定上下文或微服务对同一标识(即相同的 Id 值,尽管可能不是同一域实体)建模。但是,这并不意味着在多个界定上下文中实现具有相同属性和逻辑的同一实体。相反,每个界定上下文中的实体将其属性和行为限制为该界定上下文域中所需的属性和行为。
例如,买方实体可能具有在配置文件或标识微服务的用户实体中定义的大多数人员属性,包括标识。但订购微服务中的买方实体可能具有较少的属性,因为只有某些买方数据与订单流程相关。每个微服务或界定上下文的上下文都会影响其域模型。
就我而言,我有一个订阅
模型,其中包含两个具有自己属性的不同边界上下文。
更进一步,订阅
属于代理机构
,而代理
只能有一个(不是 0,不是很多)订阅
。
因此,基于此,我一直在思考聚合 id 会是什么。由于订阅
与代理机构有 1-1 映射,是否可以使用与代理机构
相同的 ID?
我认为这是有道理的,因为订阅
不需要它自己的 ID。即使有,我认为它也不会返回给用户,用户可以通过拥有的机构
ID 引用它。
在此有限上下文中,机构
聚合(或其属性)不相关,因此我认为它们不是同一聚合的一部分。
综上所述,如果一个聚合是 1-1 映射,是否可以共享另一个聚合的 ID?
我不认为 Id
的实际实现真的很重要。共享标识符应该是完全可以的。
这与“在”BC之间拆分聚合“有些不同,这是您肯定不想做的事情:)
一个 BC 中的聚合将由 id 表示,也可以作为另一个 BC 中的值对象表示。只有一个 BC 应该是任何聚合的记录系统。