DDD是什么
通过领域驱动设计方法定义领域模型,<br>从而确定业务和应用边界,保证业务模型与代码模型的一致性。
从技术思维主观设计系统 转变为客观描述业务形态
DDD和微服务有什么区别
从面向层面来看
DDD是面向业务,对业务领域的划分和整合,是逻辑层面
微服务是面向物理落地,是对应用的物理形态进行拆分和整合
从软件过程的过程来看
DDD的战略设计输出是微服务的输入
核心名词
通用语言
在事件风暴中,团队中达成共识能够简单清晰的描述业务含义和规则的语言
限界上下文(Bound Context)
限定通用语言的使用范围
范围中只有聚合和实体
实体
具有唯一标识符,并且标识符随着生命周期的改变不会变化
聚合
领域模型中最底层的边界
由业务和逻辑紧密关联的实体和值对象组合而成
聚合是一个逻辑概念
在一个聚合中是由聚合根来管理其所有实体的生命周期
聚合根
聚合根本质上是一个实体
一个聚合内只有一个聚合根
聚合根和聚合根之间通过唯一id进行跨聚合联系
领域事件
领域服务
领域服务是聚合内部的。它主要实现多个实体组合出来的能力。单个实体的功能在实体方法里实现