DDD核心概念理解

写在前面

对于领域,业务,业务模型,解决方案,BC,领域模型,微服务这些概念常常分不清,可是这些知识在进行领域建模及DDD落地过程当中又比较重要。设计模式

领域,业务和业务模型

  • 领域:问题域,问题空间,领域是一种边界,范围,一个领域每每表明了一个问题域的边界,业务范围越大,领域边界就越大。
  • 领域围绕业务创建边界,由于业务不一样,因此也存在领域的大小和领域划分,划分出来的领域成为子域,每一个子域对应一个小问题或小业务,因重要性不一样又划分为核心子域和支撑子域。
  • 业务每每对应一个业务模型,从业务自己出发,分析业务边界范围内的各类业务场景,及业务概念之间的关系。获得业务模型最经常使用的方法是名词动词形容词分析法,还有好比四色原型分析,找到一个适合本身的,业务模型提炼了业务核心概念及其关系,能够帮助咱们更好理解业务自己。

解决方案

进行DDD实践时,回进行需求分析,领域划分,领域建模等工做,系统落地则须要一套解决方案,若是实现一个电商平台,须要一个复杂的系统解决方案,若是方案设计的过大,各模块,组件柔和在一块儿,就不利于整个系统维护-演进-伸缩等需求。因此须要对解决方案进行拆分,成为一个个独立的小的解决方案。微服务

领域表明问题域,解决方案表明解空间性能

解决方案的拆分每每没有捷径,仍是须要经验,对系统的熟悉程度等状况。利用软件设计的各类原则,最佳实践,设计模式,非功能特性需求,及团队状况来指导咱们解决方案的拆分和落地。设计

拆分有时能够从性能角度切入,有时能够从业务角度切入,有时能够借助CQRS,或者伸缩性角度考虑,找到适合本身团队和项目自己状况,最合适的就是最好的。对象

BC

BC做为界限上下文,是DDD的核心概念,有Bounded和Context两个概念,一个场景纠缠多种上下文,是一个时空感的概念。 经过上下文边界能够对边界内的领域模型进行对象概念的明确,若是没有这个上下文边界,同一个概念可能存在歧义,理解上产生误差。好比商品在商品中心的BC中是聚合根,而在订单的BC中含义不一样,只是一个值对象。原型

领域模型

领域模型是DDD中的核心概念,是业务拆分,软件设计的综合结果,任何一个领域模型,都是在特定的BC边界内才有意义。电商

业务模型是对业务概念及其关系的表达,领域模型在业务模型基础上,采用OOA/D的思想进行进一步抽象的设计模型,领域模型中有聚合,实体,值对象的区分。多个业务模型能够杂糅到某个领域模型之中。基础

进行领域建模大体的过程:软件

  • 获得业务模型
  • 运用软件设计思想和原则对业务模型进行模型提炼

微服务

微服务出现以后,对于微服务的划分和DDD中BC有很大的契合点,有相同的探寻边界的原则。方法

总结

  • 领域=问题域=问题空间=业务边界
  • 每一个业务的问题均可以推导出一个业务模型
  • 领域拆分,业务建模,是需求分析阶段须要作的事情
  • 解决方案的拆分,领域建模,是软件设计阶段该作的事情
  • 解决方案的边界就是BC
  • BC边界契合微服务的边界
相关文章
相关标签/搜索