边界上下文
上下文边界是驱动领域设计的一个核心模式。它聚焦于 DDD 的策略设计部分,它是所有处理大型模型和团队的。DDD 处理大型模型,通过分开它们到不同的上下文边界,明确他们之间的关系。
DDD 是基于底层领域模型设计软件。模型扮演者无处不在的语言来帮助在软件开发者和领域专家之间交流。它也作为软件设计的基本概念 — 那么它是如何打破对象或函数的。为了效率, 模型需要统一 —— 那就是说在内部一致,以便于在他们之间没有矛盾。
只要你尝试去构建一个更大的领域时,它会逐渐很难去构建一个统一的模型。不同组的人们将会不经意在不同的大组织部分使用不同的词汇。建模的精度很快就会收到影响。通常,这种困惑集中在领域核心概念。在我的早期职业生涯中,我曾一家电力公司工作 ——这里有一个词 “电表”, 对于不同的部门之间表示的意思有细微的不同:它是电网和地址之间的连接么?还是电网和用户之间的连接,还是电表本身(它如果有缺陷就会被替换)。这些细微的一词多义的词会平滑的出现在会话中,但是在电脑的世界里却不是清晰的。我一次又一次的看到这种混淆 ”顾客“ 与 ”产品“ 这样的多义词反复出现。
在早期的日子里,我们被建议要构建一个统一的业务实体,但是 DDD 认为我们已经学到的那些 “对于一个大型系统来说,领域模型的完全统一是不可行的,也不具有成本效益”。所以取而代之的是 DDD 把大型系统分成上下文边界,每一个上下文边界都具有唯一的模型—— 本质上是构建多规范模型
边界上下文即有不相关的概念(比如只存在与客户支持上下文的支持票据)也有共享一些概念(比如产品和客户)。不同的上下文可能有完全不同的具有共同概念的模型,它们之间的映射机制是不同的。一些 DDD 模式分析上下文之间的替代关系。
各种因素在上下文之间划分界限。通常占主导地位的是人类的思想,因为模型作为普遍存在的语言,你要在语言发生改变的时候需要不同的模型。你也要在多个上下文里面找到相同的领域上下文,比如要在单应用程序中把内置内存和关系型数据库模型分开。这个来表示模型的边界就以不同的方式被建立。
DDD 的策略设计以各种方式来描述你拥有的上下文之间的关系。这通常值的使用上下文映射来描绘。
translated from https://martinfowler.com/bliki/BoundedContext.html