4006-998-758
3000+课程任你选择
实战领域驱动设计(DDD)系统架构
研发学院 应用服务 微观建模 宏观建模 开课时间:2021-07-03
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容


 

宏观建模与架构
一、通用语言 - 工欲善其事必先利其器

1.领域专家与开发者的沟通失调
2.通用语言关键点 - 5W2H1E
3.通用语言关键点扩展 - Pre/Post Condition
4.案例 - “高端客户优惠”这个需求如何做?
5.通用语言的价值
6.通用语言的代码表达
7.实战 - 如何通过通用语言沟通需求
8.实战- 任务分配执行系统 需求分析

 

二、领域 - 我们到底要解决什么范围内的问题

 

 

 

1.领域 = 问题域
2.分而治之 – 领域的分解:子域
3.案例 - 电商系统子域拆分
4.核心域的识别与划分
5.支撑域的识别与划分
6.通用域的萃取
7.实战 - 如何通过明确解决问题的范围划分子域
8.实战 - 任务分配执行系统 领域划分

 

 

三、界限上下文 – 有问题必有解决方案

 

1.界限上下文的目的:消除歧义
2.界限上下文与通用语言
3.案例:银行账户在不同上下文的分析与隔离
4.不要将有二义性的领域概念放在同一界限上下文中
5.实战 – 开发中的二义性讨论

四、上下文映射 – 解决方案之间的集成之道

 

1.上下游关系
2.上下文映射集成关系:防腐层,开放主机,共享内核,合作关系,追随者
3.实战 - 任务分配执行系统 领域集成关系

五、架构 – 总有一款适合你

1.分层架构
2.六边形架构
3.CQRS架构

微观建模与架构
六、实体 – 数据容器还是行为载体

 

1.贫血模型
2.如何避免贫血,实体与领域服务之间的分寸
3.唯一标识
4.委派标识
5.案例:实现实体层超类型(Layer Supertype)
6.实战 - 任务分配执行系统 实体行为归属甄别

七、值对象 – 性能提升小帮手

1.什么是值对象
2.值对象的特征
3.为什么值对象这么容易被忽略
4.案例:地址建模与值对象
5.案例:实现值对象层超类型

 

 

八、应用服务 – 用例是乐谱,应用服务是指挥家

1.用例 (Use Case) 与应用服务
2.应用服务中的 编排,转换,验证,转发
3.工作单元 (Unit of Work)
4.数据传输对象 (Data Transfer Object)
5.事务脚本 (Transaction Script) 与领域模型
6.依赖注入在应用服务中的使用
7.案例:实现应用服务
8.应用服务的关注点
9.实战 - 任务分配执行系统 应用层构建

 

九、领域服务 – 不是实体本身的行为都归它

1.领域服务的幂等性
2.案例:实现领域服务
3.实战 - 任务分配执行系统 领域服务层构建

 

 

 

十、领域事件 – 保持最终一致性的信使

 

1.领域事件是领域建模中极其重要的部分
2.事务一致性,高并发下的窘境
3.最终一致性,妥协带来高扩展性
4.原则:一个事务中只对一个聚合进行修改
5.案例:实现抽象事件源,发布事件源
6.案例:实现抽象事件处理
7.案例:实现领域事件的发布与订阅
8.实战 - 任务分配执行系统 任务分配领域逻辑

 

十一、聚合 – 不变性与一致性的边界

1.UML 中的聚合 与 DDD 中的聚合
2.聚合内实现事务一致性
3.聚合外实现最终一致性
4.案例:更新订单状态与库存扣减 Version 1.0
5.案例:更新订单状态与库存扣减 Version 2.0
6.聚合设计的注意点

十二、资源库 – 聚合的起点与终点

1.集合特性
2.资源库与数据访问层的区别
3.资源库的误解
4.资源库的实现要点
5.案例:资源库的实现
6.领域模型 VS 数据模型
7.案例:泛型资源库
8.实战 - 任务分配执行系统 持久化


课程特点

学员通过课程,可以深入学习到企业级N层的框架实现原理。每一层的职责以及功能目标,DDD中的核心战术概念及工具,比如:领域服务,领域事件,资源库,聚合,实体,值对象。以及DDD的战略建模工具,如:界限上下文,上下文映射图。以及对于以上这些概念,在代码层面的设计于实现。


课程对象

有3~5年的开发经验的核心开发者,或者架构师。


返回上一级