限界上下文

  1. 通用语言

通用语言定义上下文含义,限界上下文则定义领域边界

1,包括 术语、应用场景

2, 包含名词和动词 名词可以给领域对象命名,如商品、订单等,对应实体对象;动词则表示一个动作或事件,如商品已下单、订单已付款等,对应领域事件或者命令。

定义过程;通过事件风暴得到用户故事,通过用户故事分析会形成一个个的领域对象,这些领域对象对应领域模型的业务对象,每一个业务对象和领域对象都有通用的名词术语,并且一一映射。微服务代码模型来源于领域模型,每个代码模型的代码对象跟领域对象一一对应。

在事件风暴过程中,通过团队交流达成共识的,能够简单、清晰、准确描述业务涵义和规则的语言就是通用语言。

DDD 分析和设计过程中的每一个环节都需要保证限界上下文内术语的统一,在代码模型设计的时侯就要建立领域对象和代码对象的一一映射,从而保证业务模型和代码模型的一致,实现业务语言与代码语言的统一。

 

 

  1. 限界和上下文。

 

 

 

限界就是领域的边界,而上下文则是语义环境。通过领域的限界上下文,可以在统一的领域边界内用统一的语言进行交流。

限界上下文的定义就是:用来封装通用语言和领域对象,提供上下文环境,保证在领域之内的一些术语、业务相关对象等(通用语言)有一个确切的含义,没有二义性。这个边界定义了模型的适用范围,使团队所有成员能够明确地知道什么应该在模型中实现,什么不应该在模型中实现。

举例: 保险业务领域有投保单、保单、批单、赔案等保险术语,它们分别应用于保险的不同业务流程。

首先,领域可以拆分为多个子领域。一个领域相当于一个问题域,领域拆分为子域的过程就是大问题拆分为小问题的过程。保险领域被拆分为:投保、支付、保单管理和理赔四个子域。子域还可根据需要进一步拆分为子子域,比如,支付子域可继续拆分为收款和付款子子域。拆到一定程度后,有些子子域的领域边界就可能变成限界上下文的边界了。子域可能会包含多个限界上下文,如理赔子域就包括报案、查勘和定损等多个限界上下文(限界上下文与理赔的子子域领域边界重合)。也有可能子域本身的边界就是限界上下文边界,如投保子域。

每个领域模型都有它对应的限界上下文,团队在限界上下文内用通用语言交流。领域内所有限界上下文的领域模型构成整个领域的领域模型。

理论上限界上下文就是微服务的边界。我们将限界上下文内的领域模型映射到微服务,就完成了从问题域到软件的解决方案。

可以说,限界上下文是微服务设计和拆分的主要依据。在领域模型中,如果不考虑技术异构、团队沟通等其它外部因素,一个限界上下文理论上就可以设计为一个微服务。 

posted @ 2020-03-20 23:29  yangming0322  阅读(1473)  评论(0编辑  收藏  举报