域驱动设计:定义业务的域和子域

时间:2017-09-15 22:58:03

标签: domain-driven-design

我在找到合适的粒度来为我的模型定义域,子域和有界上下文时遇到问题。

在工具制造商的领域,核心域可以是“生产”,子域名“销售”,“财务”, “备件”和“经销商管理”。经销商管理系统可能是子域“经销商管理”中的有限背景

但在项目中,开发经销商管理系统,“经销商管理”被定义为业务领域。 这里的核心领域是“零售商网络”,子域名:“合同管理”,“活动”和“零售商关怀”。 核心域“零售商网络”中的有限背景是“经销商网站”和“地理位置”。

在我的示例中,整个业务的子域(零售商管理)也被定义为域并分成子域。

这是正确的,定义域是一个透视问题还是我错了概念?

1 个答案:

答案 0 :(得分:3)

正如评论者@AlexeyZimarev正确指出的那样,您对域名和边界的定义是否正确完全取决于对业务的理解。我们在这里真的可以做到这一点。

但是,我想提供一个技术拐杖,帮助我至少创建有界上下文(==微服务)。这是:

有界上下文不得要求与其他上下文同步通信才能执行其业务逻辑。

我并不仅仅意味着技术同步。如果上下文之间存在异步消息传递系统,但上下文必须等待答案,那仍然是同步的。

如果删除了所有其他上下文(服务停止),则有界上下文仍然有效。

我认为这是困难的部分,然后将它们分组到域,决定哪个是核心域,哪些是支持域等,这不是技术任务。

注意:不知道您的情况,"经销商管理"和#34;合同管理"通常是有限上下文的候选者。如果其他情况需要与"合同"或者"经销商",通常是同步通信。他们需要"得到"合同,然后用它做点什么。这意味着上下文并没有真正受限。