我对如何定义它们之间存在共同关注点的有界上下文以及如何用域实体表示这一点感到困惑。
例如:客户在客户上下文中有许多产品公司在公司上下文中有产品列表
所以客户是通过客户上下文来管理的,公司是通过公司上下文来管理的
鉴于上下文位于不同的模块中。
如果我想在产品中提供公司的详细地址,应该如何处理?
我是在包含客户的模块中引用包含公司上下文的模块,还是在客户上下文中创建一个公司实体,专门用于与客户交互时使用?
谢谢
我对如何定义它们之间存在共同关注点的有界上下文以及如何用域实体表示这一点感到困惑。
例如:客户在客户上下文中有许多产品公司在公司上下文中有产品列表
所以客户是通过客户上下文来管理的,公司是通过公司上下文来管理的
鉴于上下文位于不同的模块中。
如果我想在产品中提供公司的详细地址,应该如何处理?
我是在包含客户的模块中引用包含公司上下文的模块,还是在客户上下文中创建一个公司实体,专门用于与客户交互时使用?
谢谢
您可以在不同的有界上下文中对同一实体进行不同的表示。不列颠哥伦比亚省的公司Company
可能与不列颠哥伦比亚省的公司有很大不同User
。他们所要分享的只是某种相关 ID。
这也是我们在项目中处理它的方式。
对于一个有界上下文,我们将合约用作聚合根,而在另一个有界上下文中,我们将合约用作值对象/实体
在第一个模块/BC 中,我们有一个很大的合约类,其中包含很多行为,而在第二个模块/BC 中,我们有另一个合约类,它只包含一些带有私有设置器的属性。
这样甚至可以在 SOA 设计中将 2 个 BC 分离为单独的服务组合。