【发布时间】:2016-07-19 16:10:44
【问题描述】:
领域驱动设计 (DDD) 中的一个关键概念是无处不在的语言。
这种无处不在的语言的典型范围(一致性边界)是什么?它是由有界上下文(例如,某个域中的系统/组件)还是由域本身限定的?在较大的企业中,不同的系统(即有界上下文)可能会实现相同的域。
我的假设是它绑定到有界上下文,因为无法保证跨多个有界上下文(即使它们属于同一个域)的一致性,但我不确定。
【问题讨论】:
领域驱动设计 (DDD) 中的一个关键概念是无处不在的语言。
这种无处不在的语言的典型范围(一致性边界)是什么?它是由有界上下文(例如,某个域中的系统/组件)还是由域本身限定的?在较大的企业中,不同的系统(即有界上下文)可能会实现相同的域。
我的假设是它绑定到有界上下文,因为无法保证跨多个有界上下文(即使它们属于同一个域)的一致性,但我不确定。
【问题讨论】:
普遍存在的语言是在有界上下文中定义的。当您查看包含相同术语的不同 BC 时,这一点变得显而易见。在线商店中的book 概念与创作系统中的book 完全不同。
来自 Vaughn Vernon 的 实施 DDD:
限界上下文是明确的和语言的
有界上下文是域模型存在的显式边界。在边界内,泛在语言的所有术语和短语都有特定的含义,模型准确地反映了泛在语言。
【讨论】:
+1 表示 BC。这是 Scott Millett 和 Nick Tune 对 Patterns, Principles, and Practices of Domain-Driven Design 的引用:
在第 4 章“模型驱动设计”中,您将了解通用语言 (UL) 的概念以及在没有语言歧义的上下文中定义的模型的重要性。上下文是指模型的具体职责,有助于分解和组织问题空间。有界上下文通过将模型封装在责任边界内,进一步将模型的概念融入上下文中。这个边界是一个具体的技术实现,而不是更抽象的上下文。有界上下文以不降低模型纯度的方式强制通信。
有界上下文首先是语言边界。 [...]
在明确界定的语境中说一种普遍存在的语言。
【讨论】:
在 Explore DDD 2018(丹佛)上,Eric Evans put up a slide 说:
DDD 是一套指导原则:
- 聚焦核心领域
- 在领域从业者和软件从业者的创造性合作中探索模型
- 在明确界定的语境中说一种普遍存在的语言
这不仅是其创始人对 DDD 的极其简洁的总结,而且第三条原则清楚地解释了“无处不在的语言”和“有界上下文”之间的联系。请注意,他说的是“一种”无处不在的语言,而不是“the”。可以有多个,但每个都在不同的有界上下文中。
【讨论】: