新書推薦:
《
大唐名城:长安风华冠天下
》
售價:NT$
398.0
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:NT$
403.0
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:NT$
1100.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:NT$
435.0
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:NT$
1573.0
《
大国脊梁:漫画版
》
售價:NT$
374.0
《
跟着渤海小吏读历史:大唐气象(全三册)
》
售價:NT$
989.0
《
心智的构建:大脑如何创造我们的精神世界
》
售價:NT$
352.0
|
編輯推薦: |
(1)作者经验丰富:15年研发和架构经验,曾担任多家上市公司和独角兽公司技术总监和CTO等职务,对DDD有深入研究。
(2)内容有创新性:与同类书不同,本书的核心篇幅没有聚焦在DDD庞杂的理论知识上,而是将理论知识融于案例中。
(3)内容实战性强:本书以案例为主,通过搭积木的方式,带领读者从零开始搭建一个完整的DDD应用,将理论技术和实现方式全部融入案例中。
|
內容簡介: |
这是一本能教你快速从零构建一个完整的企业级DDD应用的实战性著作。
DDD本身涉及的概念多,而且技术组件的实现也比较复杂,对于初学者来说门槛相对较高。本书在写作上另辟蹊径,首先用很短的篇幅将限界上下文、聚合、实体等十几组核心概念和技术组件,以及Spring Boot、Spring Cloud和Axon等开发DDD应用的主流开源框架做了一个简单的介绍,然后用8章的篇幅讲解了一个综合性的案例,不仅将前面提到的这些核心概念、技术组件和开发框架的原理、使用全部融入到了案例中,还一步步地详细讲解了DDD应用的实现方式和落地细节。
通过阅读本书,你能获得以下收获:
架构设计:基于DDD核心概念设计业务体系架构。
技术体系:根据DDD技术实现模型掌握主流框架的应用。
案例实战:递进式演练DDD核心理念及技术的落地实现。
工程实施:提升DDD工程的整体实施水平和能力。
|
關於作者: |
郑天民
资深架构师和技术专家,有近15年的软件研发和架构经验。现担任某知名健康科技公司技术总监,先后就职于多家大型上市公司和互联网独角兽公司,担任系统架构师、技术总监和CTO等职务。
对架构设计和技术管理有深入的理解,积累了丰富的经验,研发和主持过10余个面向研发人员的技术和管理类培训课程。热衷于总结和分享,著有《分布式系统架构与开发:技术原理与面试题解析》《Spring Boot进阶:原理、实战与面试题分析》等著作。
阿里云MVP、腾讯云TVP、TGO鲲鹏会会员。
|
目錄:
|
前 言
第1章 引入DDD 1
1.1 面向领域的设计思想 1
1.1.1 业务模型和系统复杂度 2
1.1.2 领域驱动设计的维度 4
1.2 面向领域的设计方法 4
1.2.1 面向领域的战略设计 5
1.2.2 面向领域的战术设计 7
1.3 应用DDD 12
1.3.1 DDD与单体架构 12
1.3.2 DDD与微服务架构 13
1.3.3 DDD与中台架构 14
1.4 本章小结 15
第2章 DDD核心概念 16
2.1 子域和限界上下文 16
2.1.1 子域的类型 17
2.1.2 限界上下文的映射和集成 17
2.2 领域模型对象 20
2.2.1 实体和值对象 20
2.2.2 聚合 25
2.3 领域服务 28
2.4 领域事件 29
2.5 资源库 31
2.5.1 资源库模式 31
2.5.2 资源库的设计策略 32
2.6 应用服务 33
2.6.1 应用服务的定位 33
2.6.2 应用服务的分类 34
2.7 基础设施 34
2.8 本章小结 35
第3章 DDD案例分析 37
3.1 HealthMonitor业务体系 37
3.1.1 案例描述和通用语言 37
3.1.2 案例建模流程 39
3.2 子域和限界上下文 40
3.2.1 HealthMonitor子域 40
3.2.2 HealthMonitor限界上下文 42
3.3 领域模型对象 44
3.3.1 HealthMonitor聚合 44
3.3.2 HealthMonitor实体 45
3.3.3 HealthMonitor值对象 46
3.4 领域事件和事务 47
3.4.1 HealthMonitor领域事件 48
3.4.2 HealthMonitor事务 50
3.5 应用服务 50
3.5.1 HealthMonitor命令服务 51
3.5.2 HealthMonitor查询服务 53
3.6 限界上下文集成 54
3.7 本章小结 55
第4章 DDD实现技术 56
4.1 DDD技术实现模型 57
4.1.1 单体模型 57
4.1.2 系统集成模型 58
4.1.3 微服务模型 59
4.1.4 消息通信模型 60
4.2 Spring Boot与DDD实现模型 61
4.2.1 Spring Boot 62
4.2.2 Spring Data 64
4.3 Spring Cloud与DDD实现模型 65
4.3.1 Spring Cloud基础组件 65
4.3.2 Spring Cloud Stream 67
4.4 Axon与DDD实现模型 68
4.4.1 CQRS和事件溯源 68
4.4.2 Axon框架 70
4.5 本章小结 71
第5章 案例实现:限界上下文 72
5.1 Spring Boot应用程序 72
5.1.1 传统Spring Boot应用程序 73
5.1.2 基于DDD的Spring Boot
应用程序 76
5.2 创建第一个限界上下文 78
5.2.1 代码包结构 78
5.2.2 领域对象 79
5.2.3 应用服务 80
5.2.4 基础设施 81
5.2.5 接口 81
5.2.6 集成 82
5.3 实现HealthMonitor限界上下文 84
5.3.1 代码工程 84
5.3.2 限界上下文映射 85
5.4 本章小结 86
第6章 案例实现:领域模型对象 87
6.1 创建聚合 88
6.2 抽取实体和值对象 89
6.2.1 抽取实体 89
6.2.2 抽取值对象 92
6.3 为聚合添加领域逻辑 94
6.3.1 实现申请健康监控领域逻辑 95
6.3.2 实现创建健康计划领域逻辑 97
6.3.3 实现执行健康任务领域逻辑 97
6.4 实现HealthMonitor领域模型对象 99
6.4.1 HealthPlan聚合 99
6.4.2 HealthTask聚合 99
6.4.3 HealthRecord聚合 100
6.4.4 共享领域对象 100
6.5 本章小结 101
第7章 案例实现:应用服务 102
7.1 应用服务实现策略 102
7.2 实现应用服务 105
7.2.1 实现命令服务 105
7.2.2 实现查询服务 108
7.3 整合应用服务和聚合 110
7.4 实现HealthMonitor应用服务 111
7.5 本章小结 113
第8章 案例实现:资源库 114
8.1 资源库实现策略 114
8.2 Spring Data JPA 116
8.2.1 Spring Data抽象 116
8.2.2 JPA规范 117
8.2.3 多样化查询 118
8.3 实现资源库 122
8.3.1 创建PO和工厂 122
8.3.2 创建Mapper 124
8.3.3 实现Repository 126
8.4 整合资源库和应用服务 128
8.5 实现HealthMonitor资源库 129
8.6 本章小结 131
第9章 案例实现:领域事件 132
9.1 领域事件实现策略 132
9.2 基于Spring Data生成领域事件 134
9.2.1 @DomainEvents注解和
AbstractAggregateRoot 135
9.2.2 @TransactionalEventListener
注解 136
9.3 基于Spring Cloud Stream发布和
订阅领域事件 137
9.3.1 Spring Cloud Stream整体
架构 137
9.3.2 实现Spring Cloud Stream
Source 142
9.3.3 实现Spring Cloud Stream
Sink 146
9.4 实现HealthMonitor领域事件 152
9.5 本章小结 152
第10章 案例实现:限界上下文集成 153
10.1 限界上下文集成策略 153
10.1.1 统一协议和防腐层 154
10.1.2 服务注册和发现 155
10.2 基于REST API构建统一协议 156
10.2.1 创建Controller 156
10.2.2 处理Web请求 157
10.2.3 集成应用服务 158
10.3 基于REST API构建防腐层 162
10.3.1 创建和使用RestTemplate 162
10.3.2 创建防腐层组件 165
10.3.3 集成命令服务 166
10.4 本章小结 168
第11章 案例实现:事件溯源和CQRS 169
11.1 事件溯源和CQRS的实现策略 169
11.1.1 事件溯源模式的设计理念 170
11.1.2 整合事件溯源和CQRS 171
11.2 Axon框架 172
11.2.1
|
內容試閱:
|
为什么要写这本书
对软件开发而言,如何将业务问题转变为系统解决方案一直是困扰开发工程师和架构师的一大难题。针对这个难题诞生了一批系统建模的方法论,其中领域驱动设计(Domain Driven Design,DDD)无疑是当下最热门的建模方法。随着微服务架构的盛行,DDD成了构建微服务系统的主流设计思想和模式。另外,DDD是一种比较复杂的建模方式,包含了一系列不易理解的核心概念。想要在现实开发过程中实现这些核心概念,就需要引入专门的开发框架和工程实践。
本书专注于DDD实战,采用对应的开发框架和工程实践对如何实现DDD展开详细的讨论,涵盖限界上下文、聚合、实体、值对象、应用服务、资源库、领域事件等核心概念。在开发框架上,本书将基于Java领域最常用的Spring Boot、Spring Cloud框架以及专用于DDD领域的Axon框架来构建面向领域的系统,并且会在实现过程中引入CQRS、事件溯源等一系列工程实践。在案例实现上,本书将从零开始构建一个完整的系统。关于案例的介绍会逐层递进,后一章将在前一章的基础上添加新的DDD概念和实现方式,过程中还会穿插对Spring和Axon框架的介绍,确保读者能够把握案例实现的每一个步骤和细节。
读者对象
系统架构师和后端开发人员。这部分读者希望在工作中引入或者更好地利用DDD来提升自己的系统建模和架构能力。本书作为一本体系化的DDD实战类图书,能够为这些读者提供全面、完整的技术体系和实践技巧。
对DDD感兴趣的开发人员。这部分读者希望掌握一些优秀的架构设计方法来构建自己的知识体系,而DDD目前非常热门,是一个很好的选择。DDD在微服务架构设计领域得到了广泛的应用,其设计理念大多具备通用性。
广大高校学生。这部分读者希望系统学习一些软件开发的知识,为后续的深造和工作打好基础。
本书特色
与市面上相关书籍相比,本书从案例实战的角度切入,更具体系化,主要体现在如下3个方面。
1)对于DDD中的各个核心概念,本书将通过一个完整的案例来阐述其落地方式。无论限界上下文、聚合、实体、值对象,还是领域事件和应用服务,都会一一对应到案例中的业务场景,并有详细的系统建模的实现过程。
2)本书对DDD实现技术和开发框架进行了系统梳理,并综合使用Spring Boot、Spring Cloud及Axon等框架来实现DDD中的核心概念,例如使用Spring Cloud Stream来实现领域事件,使用Axon框架来实现事件溯源等。在Java领域中,这些技术体系非常适合实现DDD的开发需求。
3)对于各项技术组件,本书会把它们都应用到具体的案例开发过程中。案例实现部分的内容并不是平铺直叙的,而是采用一种递进的方式来呈现。本书将从限界上下文开始,逐步给出DDD各个核心概念的实现步骤和详细代码,这些代码都可以直接应用于日常开发中。
如何阅读本书
本书分为13章,基于领域驱动设计实现了一个完整案例,让读者全面掌握基于DDD的技术背景、技术体系及具体实现。
第1章总体介绍领域驱动设计这套主流的系统建模方法,包括面向领域的设计思想、设计方法以及应用方式。
第2章以理论为主,阐述DDD核心概念,包括子域、限界上下文、聚合、实体、值对象、领域事件、应用服务、资源库等。
第3章基于健康医疗领域中常见的健康检测场景,设计HealthMonitor案例系统,引入DDD的核心概念,对HealthMonitor系统进行系统建模。
第4章梳理DDD的具体实现技术及实现模型,涉及Spring Boot、Spring Cloud等框架的应用,并介绍专门面向DDD的Axon框架。
第5章系统地阐述限界上下文的代码组织形式,并通过Spring Boot应用程序创建HealthMonitor案例系统中的各个限界上下文。
第6章阐述聚合、实体和值对象这三大类领域模型对象的创建方式,并实现HealthMonitor领域模型对象。
第7章引入命令服务和查询服务这两大类应用服务,并阐述其实现策略,完成聚合和应用服务之间的整合。
第8章引入Repository架构模式和Spring Data JPA框架,整合资源库和应用服务,并实现HealthMonitor资源库。
第9章对领域事件模型进行抽象,基于AbstractAggregateRoot和@TransactionalEventListener实现单个限界上下文中的领域事件发布,基于Spring Cloud Stream实现跨限界上下文的领域事件的消费。
第10章通过Spring Boot框架完成HealthMonitor案例系统中基于REST API的限界上下文集成,并在此基础上引入Spring Cloud来简化限界上下文集成的过程。
第11章详细介绍CQRS架构模式及事件溯源机制,引入Axon框架完成领域模型组件和分派模型组件的设计及实现,并最终完成对HealthMonitor案例系统的重构。
第12章分析DDD测试方法和类型,引入Spring Boot中的测试解决方案,然后基于这些解决方案完成对HealthMonitor案例系统中领域对象、应用服务、资源库及接口的测试。
第13章关注工程实践,对实现DDD的各种架构风格展开讨论,并梳理DDD应用程序的实施前提、DDD实施与现有系统之间的关系,以及DDD与微服务的整合。
其中,第5章到第12章构成了一个完整的实战案例,其中穿插着对Spring Boot、Spring Cloud和Axon等主流开源框架的介绍。这部分内容是全书重点,逐层递进,形成如下4个构建阶段。
第一阶段通过聚合、应用服务和资源库构建案例系统。
第二阶段通过领域事件和限界上下文集成完成案例系统。
第三阶段基于CQRS和事件溯源重构案例系统。
第四阶段基于测试类型和注解测试案例系统。
通过这部分内容的学习,读者可以从零开始构建一个完整的DDD系统。
在写作方式上,本书合理组织案例实现的过程,并详细介绍对应开发框架和工具的应用方式。整体上按照“业务案例分析→技术体系概述→实现过程详解→实践方法总结”的顺序来讲解,各章之间呈递进关系。
勘误和支持
本书尽管是笔者认真写就的,但难免会存在一些错误或者不准确的地方,恳请各位读者批评指正。如果读者朋友有更多宝贵意见,也欢迎来信交流。联系邮箱为tianyalan25@163.com。真诚期待你的反馈。本书的全部源文件可以从笔者的GitHub下载:https://github.com/tianminzheng。
|
|