关于java:DDD之5限界上下文定义领域边界的利器

2次阅读

共计 1280 个字符,预计需要花费 4 分钟才能阅读完成。

上图是一张普通地图,最扎眼的就是边界?
十分好奇地图绘制工程师是如何描述如此蜿蜒多变的边界的?强制行政区域还是人群历史起因天然的人以群分?
咱们再换个视角,对工程师或者架构师来说,微服务的边界如何划分呢?

基于 DDD 设计方法论中的概念 限界上下文 来划分微服务的边界;

背景

架构师小李正在团队推广 DDD 设计方法论, 领域建模和零碎建设过程中,很多岗位须要加入进来,比方产品经理,领域专家,项目经理,架构师,开发经理,测试经理。对同样的畛域常识,不同的人可能有不同的意识,交换起来存在肯定阻碍。
如果你是小李,你会如何打消这种交换阻碍呢?

答案是明天的配角:通用语言 和限界上下文。
先简略的厘清这两个概念。

名词 概念
通用语言 定义上下文含意
限界上下文 定义畛域的边界,确保每个上下文的语义(通用语言)在边界内的唯一性含意

上面,咱们拿显微镜来看看到底什么是通用语言?限界上下文又是什么货色?

通用语言

通用语言:团队交换达成共识的可能明确简略清晰的形容业务规定和业务含意的语言就是通用语言。
用处:通用语言是团队的对立语言,在团队中不论你是什么角色,在同一畛域的软件生命周期里都应用对立语言进行交换。
价值:

  1. 解决各岗位的沟通阻碍问题,促成不同岗位的和单干,确保业务需要的正确表白。
  2. 通用语言贯通于整个设计过程,基于通用语言能够开发出可读性更好的代码,能精确的把业务需要转化为代码。

类比:义勇军对中国人来说就是通用语言,大家都晓得这是咱们的国歌,没有二义性;

通用语言的组成:

组成部分 阐明 代码对应
术语 名词:给畛域命名,比方订单,商品;动词:给命令和事件命名; 名词:对应实体动词:命令或者事件

DDD 领域建模和零碎落地过程:
既然是一种映射,那么能够整顿成一张表格。
记录事件风暴中产生的畛域对象的地位,属性和在代码模型中对应的代码对象的对应关系。
格局如下:

要点:DDD 的设计和剖析的过程中,要保障术语在限界上下文中的对立,并保障业务模型中的畛域对象跟零碎模型中的代码对象一一对应。从而保障业务模型跟代码模型的一致性。

限界上下文

定义:策略设计中确定语义所在的畛域边界就是限界上下文。
为了好了解,这里比照一下中文和 DDD:

比照我的项目 语言 语义环境
中文 汉语 语言环境
DDD 通用语言 限界上下文

限界:即边界上下文:即语义环境;
综合起来:即带边界的语义环境。
限界上下文是微服务拆分和设计的次要边界根据,当然微服务还有其余的划分边界根据,须要综合思考;咱们将限界上下文内的畛域模型映射到微服务就实现了从问题域到软件的解决方案。

小结

问题?
为什么无限界上下文的概念,除了解决交换阻碍,还有什么更具体的起因吗?确定了畛域的边界,是微服划分的次要根据 封装了畛域模型 通用语言,确定了模型的边界哪些该做哪些不该做

限界上下文在微服务设计的作用和意义?微服务边界划分的次要根据

最初小结汇总成一张图。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让咱们互通有无,共同进步,欢送沟通交流。
我会继续分享 Java 软件编程常识和程序员倒退职业之路,欢送关注,我整顿了这些年编程学习的各种资源,关注公众号‘李福春继续输入’,发送 ’ 学习材料 ’ 分享给你!

正文完
 0