对有界上下文和子域感到困惑

时间:2013-09-04 23:45:05

标签: domain-driven-design

我读过Eric Evan的书,现在正在阅读Vaughn Vernon的书。我在第二章中讨论了子域和有界的背景,现在我已经彻底混淆了。

从我能够提炼出来的情况来看,BC和SD之间应该存在1:1的关系。但是,我在其他地方读到,情况并非如此。

有人可以向我解释BC和SD之间的关系吗?

6 个答案:

答案 0 :(得分:46)

子域名是您商家的一部分。有核心域,支持域和通用域。核心域是资金所在,支持域支持您的核心业务,而通用域是您需要的域,但不关心,因此您可能会购买它们。对于一家保险公司来说,核心域名是保险,支持域名可以是客户组合,而通用域名可以是时间表。

一般而言,有界语境是无处不在的语言一致的边界。在DDD walhalla中,每个子域都将存在于自己的有界环境中。然而,在现实中,有遗产,有些包试图同时做所有事情......这将迫使各种各样的尴尬关系。

答案 1 :(得分:29)

我试着用我的理解解释这些概念。

在DDD中,一切都应该在无处不在的语言下进行沟通,以便技术团队和业务团队可以使用相同的术语并对问题有相同的看法

    DDD中的
  • 代表了商业中的真正问题。如:电子商务是域名,薪资系统是域名
  • 域分为多个子域,因此每个子域都会关注较小的问题。如:电子商务有许多子域名,如:购物车,计费,产品目录,客户信息......
  • 每个子域都应该有明确的职责,因此它有一个限制其功能的边界,边界将帮助子域集中只做一件事并做得好。该边界被视为子域的有界上下文。有界上下文将定义:
    • 子域需要多少个域模型?
    • 每个模型需要哪些属性?
    • 子域需要哪些功能?

Ex:购物车子域需要型号:购物车,产品,客户信息......并包含在购物车上执行CRUD的功能。注意:购物车子域中的产品和客户模型可能与产品目录和客户配置文件子域中的模型不同,它们只包含要在购物车上显示的必要属性。

答案 2 :(得分:6)

答案 3 :(得分:1)

请检查this链接,它将为您带来帮助, 绑定上下文还是上下文? 术语“上下文”是对概念分组的一般描述,术语“绑定的上下文”更具体-绑定的上下文是您的应用程序中的一个区域,它明确定义了边界,具有自己的模型,具有自己的模型并维护自己的自身码。在边界上下文中,所有内容都应严格一致。

通常,我们可以互换使用术语“上下文”和“边界上下文”,尽管我倾向于在上下文方面谈论事物的业务方面,在术语“边界上下文”中谈到技术实施。

答案 4 :(得分:0)

沃恩·弗农(Vaughn Vernon)在他的《实现领域驱动的设计》一书中指出:“子域生活在问题空间中,而有界上下文则存在于解决方案空间中”

想象一下正在开发的一种支持牙医的软件。牙医有两个问题:固定病人的牙齿和预约病人。固执己见是核心领域,任命是一个支持子领域。在核心领域,医务人员关心患者的牙科病史,是否可以进行全身麻醉,当前问题是什么等。在子领域中,医务人员(不一定是医务人员)关心患者的联系信息,日期以及最适合医生和患者的时间,所需的牙科工作类型等。这两个领域都需要一个患者模型,但是该模型将取决于我们为确保正确的信息和正确使用而设置的有限上下文。解决每个领域的问题时,可用的功能。 阅读https://robertbasic.com/blog/bounded-contexts-and-subdomains/

答案 5 :(得分:0)

Vaughn Vernon 在他的《实施领域驱动设计》一书中指出:

<块引用>

“将子域与限界上下文一对一对齐是一个理想的目标。”第 57 页