搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
领域驱动设计.Net实践
0.00     定价 ¥ 138.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购25本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787302649359
  • 作      者:
    甄镭
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2024-01-01
收藏
编辑推荐

《领域驱动设计.Net实践》是一本重要的指南,旨在帮助.NET开发者掌握领域驱动设计的核心概念和实践技巧。本书不仅涵盖了领域驱动设计的基本原理,还以实际项目为例,详细介绍了如何应用领域驱动设计构建可靠的应用系统。

本书还涵盖了不同应用场景下的实践,包括构建Web应用、桌面应用、移动应用和微服务架构。同时,你还将学习到关于团队组织、代码管理、自动化测试和项目重构等方面的实践经验。

无论你是初学者还是有经验的.NET开发者,本书都将成为你的重要参考,帮助你理解和应用领域驱动设计,构建出可靠、高效的应用系统。不容错过的一本指南,助你在.NET开发领域取得更大的成功!


展开
作者简介

甄镭,1992年同济大学毕业获学士学位,1995年北京科技大学毕业获硕士学位。1996年开始从事企业信息系统开发和建设工作,涉及石化、政务、汽车制造、机械制造、电力、房地产等诸多领域。参与过的重大项目包括“金陵石化公司炼油厂NR-CIMS应用示范工程”(863科技攻关计划项目)、“全国人大办公资源信息系统”等。著有《信息系统升级与整合》、《.Net与设计模式》

展开
目录



第1部分  创建领域模型

第1章  领域驱动设计的概念 2

1.1  软件的复杂性 2

1.2  领域驱动设计简介 3

1.2.1  限界上下文 3

1.2.2  战略设计 4

1.2.3  领域模型 5

1.2.4  通用语言 5

1.3  领域驱动设计使用中的难点 5

1.3.1  对软件复杂性理解的偏差 6

1.3.2  术语的理解 6

1.3.3  技术框架问题 7

1.3.4  英语障碍 8

1.4  学习和使用领域驱动设计的一些体会 9

1.4.1  理解领域驱动设计的精髓 9

1.4.2  使用“战略设计”规划项目 9

1.4.3  在开发过程中使用“战术设计” 10

1.4.4  在学习中尽量尝试各种技术,在实践中保持简洁 11

1.4.5  实事求是,避免将理论当作教条 11

1.5  本书概况 11

1.5.1  本书的目标和结构 11

1.5.2  为什么选择.Net 12

1.5.3  本书选择的示例 12

1.5.4  本书使用的开发环境 12

1.5.5  本书中的数据和代码 13

1.6  本章小结 13

第2章  从零开始构建诗词游戏 14

2.1  需求概述 14

2.2  领域、子域与限界上下文 15

2.3  限界上下文的初步确定 16

2.3.1  用户认证上下文 18

2.3.2  诗词游戏上下文 19

2.3.3  诗词服务上下文 19

2.3.4  游戏管理上下文 19

2.4  限界上下文映射 19

2.4.1  各行其道 20

2.4.2  已发布语言 20

2.4.3  开放主机服务 20

2.4.4  客户-供应商 21

2.4.5  跟随者 21

2.4.6  防腐层 21

2.4.7  合作方式 21

2.4.8  共享内核 22

2.5  诗词游戏上下文的通用语言 22

2.6  创建第一个版本 23

2.7  本章小结 27

第3章  理解领域模型 28

3.1  领域模型概述 28

3.2  实体 28

3.2.1  实体的基本概念 29

3.2.2  从业务概念中发现实体 31

3.2.3  实体中数据的封装 33

3.2.4  实体中的方法 35

3.2.5  为什么要避免“贫血”模型 37

3.3  值对象 38

3.3.1  值对象的概念 38

3.3.2  值对象的实现 39

3.3.3  在模型中使用值对象的好处 41

3.4  聚合和聚合根 42

3.5  存储库 43

3.5.1  存储库的概念 43

3.5.2  存储库接口示例 44

3.5.3  是否可以使用EF Core等技术代替存储库 46

3.5.4  构建测试用的存储库实现 46

3.6  领域事件 48

3.6.1  为什么需要领域事件 48

3.6.2  领域事件的概念 49

3.6.3  在项目中增加领域事件 49

3.7  重构项目框架 57

3.8  完善诗词服务 58

3.9  本章小结 62

第4章  领域服务与应用服务 63

4.1  第一个领域服务 63

4.2  对游戏进行优化 65

4.2.1  问题分析 65

4.2.2  设计模式的使用 66

4.2.3  解决方案 67

4.3  领域服务的引入 69

4.4  应用服务 72

4.4.1  创建游戏 73

4.4.2  游戏过程 77

4.5  领域服务与应用服务的区别 83

4.6  避免滥用领域服务 84

4.7  本章小结 84

第5章  领域模型的验证与演化 85

5.1  领域模型构建过程回顾 85

5.2  领域模型设计需要注意的几个问题 86

5.2.1  学习领域知识,充分沟通 86

5.2.2  分析模式与设计模式的使用 86

5.2.3  遵守软件设计的一般规律 86

5.2.4  避免过度抽象 87

5.3  使用测试框架创建验证领域模型的测试用例 87

5.3.1  创建测试项目 87

5.3.2  模拟对象的使用 91

5.3.3  对异常的测试 92

5.4  使用行为驱动设计工具SpecFlow验证领域模型 93

5.4.1  行为驱动设计与领域驱动设计 94

5.4.2  使用SpecFlow验证领域模型 94

5.5  创建控制台应用验证领域模型 98

5.6  领域模型发布 98

5.7  领域模型的演化与持续集成 102

5.8  本章小结 103

第6章  创建基于控制台的人机游戏 104

6.1  已完成工作回顾 104

6.2  人机游戏说明 105

6.3  系统结构 105

6.4  创建应用层 106

6.5  模拟机器人作答 110

6.6  编写客户端 114

6.7  需要解决的问题 118

6.7.1  对象创建方式过于复杂 118

6.7.2  简单工厂不能满足扩展需求 119

6.7.3  应用层没有隔离领域层 119

6.7.4  其他需要解决的问题 120

6.8  本章小结 121

第2部分  DDD .Net工具箱

第7章  DDD .Net相关技术概述 124

7.1  .Net简介 124

7.1.1  .Net的发展简史 124

7.1.2  .Net的版本 125

7.1.3  .Net的跨平台支持 125

7.2  .Net功能 125

7.2.1  异步编程模式 125

7.2.2  特性 126

7.2.3  反射 128

7.2.4  委托 129

7.2.5  事件 131

7.2.6  泛型 132

7.2.7  LINQ 133

7.3  与领域驱动设计实现相关的技术框架 134

7.3.1  依赖注入框架 134

7.3.2  ORM框架 134

7.3.3  对象映射框架 135

7.3.4  实时通信框架 135

7.3.5  进程内消息框架 135

7.4  本章小结 136

第8章  依赖倒置原则、控制反转与DDD架构 137

8.1  依赖倒置原则 137

8.1.1  概述 137

8.1.2  在设计中引入依赖倒置原则 138

8.1.3  设计期依赖与运行期依赖 140

8.1.4  依赖倒置实例 143

8.2  控制反转 144

8.2.1  问题的提出 144

8.2.2  理解控制反转 146

8.2.3  IoC容器 146

8.3  架构结构的转变 146

8.4  本章小结 148

第9章  工厂与依赖注入容器 149

9.1  工厂 149

9.1.1  工厂的概念 149

9.1.2  工厂设计模式 150

9.2  依赖注入容器 151

9.2.1  问题的提出 152

9.2.2  理解依赖注入 152

9.3  .Net内置的依赖注入容器 153

9.3.1  基本使用方法 153

9.3.2  服务对象的生命周期 153

9.3.3  服务的注册方法 154

9.3.4  多个构造函数的情况 156

9.4  依赖注入容器的使用 156

9.4.1  在控制台应用中使用依赖注入 156

9.4.2  改造简单工厂 157

9.4.3  可插拔组件架构实现 159

9.5  使用第三方DI容器满足高级需求 159

9.5.1  基本使用方法 160

9.5.2  属性注入 161

9.5.3  使用基于名称的注入改造工厂 161

9.5.4  程序集注册 163

9.6  本章小结 163

第10章  基于关系数据库的存储库实现 164

10.1  EF Core的基本功能 164

10.2  使用EF Core实现存储库 167

10.2.1  创建PlayerRepository 167

10.2.2  创建GameRepository 170

10.3  EF Core的深入应用 173

10.3.1  多数据库类型支持 173

10.3.2  生产环境的数据库部署 178

10.3.3  数据库生成标识 182

10.3.4  Data Annotations vs Flunt API 183

10.4  在控制台应用中使用新的存储库 184

10.5  使用其他数据库访问框架实现存储库 185

10.5.1  存储库的持久层框架需要满足的条件 185

10.5.2  Dapper 186

10.5.3  FreeSql 187

10.6  本章小结 187

第11章  存储库与NoSQL数据库 188

11.1  NoSQL数据库概述 188

11.1.1  键值对存储数据库 188

11.1.2  列存储数据库 188

11.1.3  文档型数据库 189

11.1.4  Graph数据库 189

11.1.5  实时数据库 189

11.2  文档数据库MongoDB概述 189

11.2.1  MongoDB介绍 189

11.2.2  MongoDB的安装 190

11.2.3  MongoDB的管理 190

11.2.4  MongoDB的基本概念 191

11.2.5  MongoDB的基本数据类型 191

11.3  创建面向MongoDB的存储库 192

11.3.1  使用MongoDB.Driver操作MongoDB 192

11.3.2  创建存储库 194

11.3.3  使用依赖注入传入MongoDB数据库访问对象 200

11.3.4  注意事项 201

11.4  聚合根在MongoDB中存储与在关系数据库中存储的比较 202

11.5  本章小结 202

第12章  认证 203

12.1  基本概念 203

12.2  Asp.Net Core Identity 204

12.2.1  简介 205

12.2.2  创建使用Identity的Web应用 205

12.2.3  集成Identity与诗词游戏 207

12.2.4  Identity的配置 210

12.2.5  个性化Identity页面 212

12.2.6  Identity的使用场景 214

12.3  基于OpenId Connect的认证服务 214

12.3.1  OAuth 2.0、OpenId和OpenId Connect介绍 214

12.3.2  使用Identity Server 4创建用户管理和认证功能 215

12.3.3  使用Identity Server 4保护Web 应用 217

12.3.4  集成Identity Server 4与诗词游戏 222

12.4  在实际项目中使用认证服务 222

12.4.1  单点登录 222

12.4.2  前后端分离的应用 223

12.4.3  分布式应用 224

12.5  本章小结 225

第13章  领域事件实现 226

13.1  领域事件的工作过程 226

13.2  观察者模式、中介者模式与订阅/发布模式 229

13.2.1  观察者模式 230

13.2.2  中介者模式 231

13.2.3  订阅/发布模式 232

13.3  使用MediatR实现领域事件发布 233

13.3.1  引入MediatR 233

13.3.2  将领域事件封装为MediatR消息 233

13.3.3  事件总线实现 234

13.3.4  事件的接收和处理实现 237

13.3.5  事件发布 239

13.4  外部事件发布与消息中间件 240

13.5  本章小结 246

第14章  应用层开发 247

14.1  应用层概述 247

14.1.1  应用服务 247

14.1.2  数据传输对象 247

14.1.3  工作单元 248

14.2  应用层创建示例 249

14.2.1  控制台应用与Web应用的不同 249

14.2.2  创建新的应用层接口 252

14.2.3  应用层实现 255

14.3  创建应用层的Web API 257

14.4  引入工作单元 263

14.4.1  工作单元的定义 263

14.4.2  工作单元的实现 263


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证