一、概念:
1、通用语言:
(1)定义上下文含义
(2)在事件风暴过程中,通过团队交流达成共识的,能够简单、清晰、准确描述业务涵义和规则的语言
(3)不管你在团队中承担什么角色,在同一个领域的软件生命周期里都使用统一的语言进行交流。
(4)通用语言可以解决交流障碍这个问题,使领域专家和开发人员能够协同合作,从而确保业务需求的正确表达。
(5)通用语言包括术语和用例场景
2、限界上下文
(1)定义领域边界
(2)语言都有它的语义环境,同样,通用语言也有它的上下文环境。为了避免同样的概念或语义在不同的上下文环境中产生歧义,DDD 在战略设计上提出了“限界上下文”这个概念,用来确定语义所在的领域边界。
(3)将限界上下文拆解为两个词:限界和上下文。限界就是领域的边界,而上下文则是语义环境。通过领域的限界上下文,我们就可以在统一的领域边界内用统一的语言进行交流。
(4)用来封装通用语言和领域对象,提供上下文环境,保证在领域之内的一些术语、业务相关对象等(通用语言)有一个确切的含义,没有二义性。
(5)领域边界就是通过限界上下文来定义的。
二、二者存在的意义:
确保每个上下文含义在它特定的边界内都具有唯一的含义,领域模型则存在于这个边界之内。
三、限界上下文和微服务的关系
理论上限界上下文就是微服务的边界。我们将限界上下文内的领域模型映射到微服务,就完成了从问题域到软件的解决方案。
注意:
除了理论,微服务的拆分还是有很多限制因素的,在设计中不宜过度拆分。