领域驱动设计(DDD)与系统架构实战

领域驱动设计(DDD)与系统架构实战
    马上咨询


    戴老师  前富士通 资深架构师

    CIO,资深架构师。15年+ 大型软件产品架构经验。曾為(wèi)瑞穗银行(Mizuho Bank),东京证券交易所,五十铃汽車(chē)开发企业级系统。擅長(cháng)企业级系统架构,领域驱动设计,重构与模式。為(wèi)深圳证券交易所,中國(guó)電(diàn)信,中國(guó)平安,招商(shāng)银行信用(yòng)卡中心,DELL,中兴通讯讲授技术课程。现為(wèi)南京大學(xué),东南大學(xué),南瑞集团特约技术讲师。

    课程简介

    课程主要关注于如何以领域驱动设计(DDD)為(wèi)核心,设计并开发一套企业级应用(yòng)开发的架构模型(Architectural Model)的关键部件。对于分(fēn)层架构中各层所出现的DDD概念及工具,提供实际设计思路以及实现代码。

    目标收益

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

    培训对象

    有(yǒu)3~5年的开发经验的核心开发者,或者架构师。

    课程大纲

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

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

    二、领域 - 我们到底要解决什么范围内的问题
    1.领域 = 问题域
    2.分(fēn)而治之 – 领域的分(fēn)解:子域
    3.案例 - 電(diàn)商(shāng)系统子域拆分(fēn)
    4.核心域的识别与划分(fēn)
    5.支撑域的识别与划分(fēn)
    6.通用(yòng)域的萃取
    7.实战 - 如何通过明确解决问题的范围划分(fēn)子域
    8.实战 - 任務(wù)分(fēn)配执行系统 领域划分(fēn)


    三、界限上下文(wén) – 有(yǒu)问题必有(yǒu)解决方案
    1.界限上下文(wén)的目的:消除歧义
    2.界限上下文(wén)与通用(yòng)语言
    3.案例:银行账户在不同上下文(wén)的分(fēn)析与隔离
    4.不要将有(yǒu)二义性的领域概念放在同一界限上下文(wén)中
    5.实战 – 开发中的二义性讨论

    四、上下文(wén)映射 – 解决方案之间的集成之道 
    1.上下游关系
    2.上下文(wén)映射集成关系:防腐层,开放主机,共享内核,合作关系,追随者
    3.实战 - 任務(wù)分(fēn)配执行系统 领域集成关系

    五、架构 – 总有(yǒu)一款适合你
    1.分(fēn)层架构
    2.六边形架构
    3.CQRS架构

    微观建模与架构
    六、实體(tǐ) – 数据容器还是行為(wèi)载體(tǐ) 

    1.贫血模型
    2.如何避免贫血,实體(tǐ)与领域服務(wù)之间的分(fēn)寸
    3.唯一标识
    4.委派标识
    5.案例:实现实體(tǐ)层超类型(Layer Supertype)
    6.实战 - 任務(wù)分(fēn)配执行系统 实體(tǐ)行為(wèi)归属甄别

    七、值对象 – 性能(néng)提升小(xiǎo)帮手 
    1.什么是值对象
    2.值对象的特征
    3.為(wèi)什么值对象这么容易被忽略
    4.案例:地址建模与值对象
    5.案例:实现值对象层超类型

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

    九、领域服務(wù) – 不是实體(tǐ)本身的行為(wèi)都归它 
    1.领域服務(wù)的幂等性
    2.案例:实现领域服務(wù)
    3.实战 - 任務(wù)分(fēn)配执行系统 领域服務(wù)层构建

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

    十一、聚合 – 不变性与一致性的边界 
    1.UML 中的聚合 与 DDD 中的聚合
    2.聚合内实现事務(wù)一致性
    3.聚合外实现最终一致性
    4.案例:更新(xīn)订单状态与库存扣减 Version 1.0
    5.案例:更新(xīn)订单状态与库存扣减 Version 2.0
    6.聚合设计的注意点

    十二、资源库 – 聚合的起点与终点 
    1.集合特性
    2.资源库与数据访问层的區(qū)别
    3.资源库的误解
    4.资源库的实现要点
    5.案例:资源库的实现
    6.领域模型 VS 数据模型
    7.案例:泛型资源库
    8.实战 - 任務(wù)分(fēn)配执行系统 持久化