Skip to main content

限界上下文

什么是限界上下文

限界上下文是一种语义上的上下文边界。意思是在这个边界内的软件模型组件都有它独特的含义并且做特定的事。一个限界上下文内的组件都是上下文特定的并且语义明确的。

image-20240115232736575

运营人员和用户对售卖机这个概念是有不同的概念的,如果要想让一个词具有单一的含义,那就需要明确是在那个上下文里。

  • 自然语言具有模糊性: 甲:“你这是什么意思?”乙:“"没什么意思,一点小意思”
  • 同一个事物面向不同场景有不同模型
  • 软件系统需要分解模型以控制复杂性。 需要使用限界上下文来分解模型

如果不分解,就会得到下面的模型。系统会非常的难以实现和维护

  • 限界上下文是分工的单位;模型分解之后,天然具备了高内聚、低耦合的特性。所以,团队的分工协作非常适合基于限界上下文进行。不同团队负责不同的限界上下文。
tip

在理想的情况下,子域和限界上下文是一一对应的。子域属于问题空间,而限界上下文属于解决方案空间 。

在前期的分工阶段,是基于子域进行的,后期是基于限界上下文进行的。

如何划分限界上下文

  • Domain Storytelling (领域故事陈述法)
  • Event Storming(事件风暴法)
  • 基于子域概念提取

Domain Storytelling 划分限界上下文

屏幕截图 2024-01-15 235124

商品和售卖机在上图中出现了多次,每一次的含义都是有区别的。

对于售卖机来说: 运营投放售卖机、配送人员配送商品到售卖机、用户在售卖机上购买商品。运营、用户、配送员,他们眼里看的售卖机是一样的吗?当然不一样,运营看到的是容纳和消耗商品库存的容器、用户看到的是收钱吐商品的机器,而配送人员主要关注的是收货地址和操作手册。

对于商品来说,也是一样。所以这里最起码有三种限界上下文。

  • 运营上下文
  • 交易上下文
  • 配送上下文

image-20240116000424216

  • 单向联系
  • 语义区 别

image-20240116001117621

限界上下文和微服务

微服务是限界上下文的一种实现方式

image-20240116001137666

总结

  • 限界上下文是在解决方案空间对模型的分解单位,这一点和子域是相对应的,子域是对问题空间的分解 。子域和限界上下文是一对一对应的,但是有一种特殊情况,就是当我们集成外部系统时。比如商品上下文集成了商品中台上下文;运营上下文集成了 ERP 系统上下文、配送中台上下文;

  • 限界上下文作用: 控制复杂性,便于分工协作
  • 限界上下文的三种划分方法;
  • 限界上下文和微服务的关系: 后者是对前者的一种实现。