.NET整洁架构之道
作 者:(意)迪诺·埃斯波西托(Dino Esposito) 著 著 叶伟民,涂曙光 译 译
定 价:99
出 版 社:机械工业出版社
出版日期:2025年09月01日
页 数:282
装 帧:平装
ISBN:9787111789895
目录
●译者序
前言
致谢
第一部分 理论
第1章 模块化软件架构的历史和演变 2
1.1 模块化三层架构 3
1.1.1 三层架构的主要特点 4
1.1.2 逻辑层、物理层和模块化 6
1.2 DDD的典型架构 8
1.2.1 DDD配套的支持架构 8
1.2.2 其他补充 11
1.3 不同类型的分层架构 15
1.3.1 六边形架构 15
1.3.2 整洁架构 16
1.3.3 特性驱动架构 17
1.4 本章小结 19
第2章 DDD的核心精髓 20
2.1 DDD简介 21
2.1.1 战略分析 21
2.1.2 战术设计 23
2.1.3 DDD的误解 24
2.1.4 战略设计工具 26
2.2 UL 26
2.2.1 领域语言术语表 27
2.2.2 构建术语表 28
2.2.3 保持业务和代码的一致性 30
2.3 限界上下文 33
2.3.1 处理歧义 34
2.3.2 设计限界上下文 36
2.4 上下文映射 39
2.4.1 上游和下游 39
2.4.2 上下文映射示例 40
2.4.3 部署映射示例 41
2.5 本章小结 42
第3章 模块化设计的基础 43
3.1 模块化设计的要素与原则 44
3.1.1 SoC 44
3.1.2 松耦合 45
3.1.3 可复用性 45
3.1.4 依赖项管理 46
3.1.5 文档 46
3.1.6 可测试性 46
3.2 应用模块化设计 47
3.2.1 表示层:与外界交互 47
3.2.2 应用层:处理接收到的指令 48
3.2.3 领域层:表示领域实体 48
3.2.4 数据/基础设施层:持久化数据 48
3.3 实现模块化 48
3.3.1 在单体中增添模块化设计 49
3.3.2 微服务简介 50
3.4 最简方案原则 52
3.4.1 可维护性 53
3.4.2 可测试性 54
3.5 本章小结 56
第二部分 实现
第4章 表示层 60
4.1 Renoir项目:最终目标 61
4.1.1 应用程序介绍 61
4.1.2 抽象上下文映射 63
4.1.3 物理上下文映射 66
4.2 业务需求工程 69
4.2.1 分解软件项目 70
4.2.2 基于事件的故事板 70
4.2.3 Renoir项目的基本任务 72
4.3 表示层的边界和部署 73
4.3.1 敲开Web服务器的门 74
4.3.2 ASP.NET应用程序端点 75
4.4 表示层开发 76
4.4.1 连接到业务工作流 76
4.4.2 前端及相关技术 81
4.4.3 纯API表示层 82
4.5 本章小结 83
第5章 应用层 85
5.1 Renoir项目架构图 86
5.1.1 访问控制子系统 86
5.1.2 文档管理子系统 88
5.1.3 在Visual Studio中打开Renoir项目 89
5.2 任务编排 90
5.2.1 任务简介 90
5.2.2 分布式任务示例 91
5.2.3 Renoir项目中的任务示例 93
5.3 数据传输 93
5.3.1 从表示层到应用层 94
5.3.2 从应用层到持久化层 98
5.4 实现细节 100
5.4.1 应用层概要 101
5.4.2 应用程序设置 104
5.4.3 日志记录 108
5.4.4 处理和抛出异常 113
5.4.5 缓存及其模式 117
5.4.6 注入SignalR连接中心 121
5.5 应用层的边界和部署 123
5.5.1 依赖列表 123
5.5.2 部署选项 123
5.6 本章小结 125
第6章 领域层 126
6.1 分解领域层 126
6.1.1 业务领域模型 126
6.1.2 辅助领域服务 129
6.2 构建领域模型 131
6.2.1 将焦点从数据转向行为 131
6.2.2 领域模型的组成部分 134
6.2.3 Renoir项目的领域模型 138
6.3 领域漫游指南 139
6.3.1 治疗软件贫血症 140
6.3.2 实体类的共同特征 141
6.3.3 代码礼仪 144
6.3.4 代码风格规范 153
6.3.5 编写真正易读的代码 157
6.4 本章小结 160
第7章 领域服务层 161
7.1 领域服务的定义 162
7.1.1 领域服务的无状态特征 162
7.1.2 标记领域服务类别 162
7.1.3 领域服务和UL 163
7.1.4 领域服务的数据访问 163
7.1.5 领域服务的数据注入 164
7.2 常见的领域服务场景 164
7.2.1 确定客户的忠诚度状态 164
7.2.2 领域事件 165
7.2.3 发送业务邮件 166
7.2.4 为密码加密服务 167
7.3 具体实现 168
7.3.1 领域服务的一个例子 168
7.3.2 有用且相关的模式 170
7.3.3 REPR模式 171
7.4 其他问题 176
7.4.1 领域服务是否有必要 176
7.4.2 领域服务的其他应用场景 178
7.5 本章小结 179
第8章 基础设施层 180
8.1 基础设施层的职责 181
8.1.1 数据持久化和存储 181
8.1.2 与外部服务的通信 182
8.1.3 与内部服务的通信 182
8.2 实现持久化层 183
8.2.1 仓库类 184
8.2.2 使用EF Core 188
8.2.3 使用Dapper 196
8.2.4 在数据库中托管业务逻辑 197
8.3 数据存储架构 199
8.3.1 介绍命令/查询分离 199
8.3.2 ES执行摘要 203
8.4 本章小结 204
第三部分 应用
第9章 微服务和模块化单体架构 206
9.1 远离遗留的单体系统 207
9.1.1 并非所有单体架构都是糟糕的 207
9.1.2 单体架构的潜在缺点 208
9.2 关于微服务 210
……
内容介绍
本书分为三部分。第一部分为理论,为软件模块化奠定了基础,追溯了软件架构的历史,并总结了领域驱动设计(DDD)的要点——这是一种非常有助于拆解业务领域的方法,尽管在项目中并非必要。第二部分为实现,讲述了构成“整洁”架构的五个层。这部分的重点并不在于架构的同心圆形式,这种形式已经被大量的书籍和文章所普及,而在于各个构成层次所提供的实际价值:表示层、应用层、领域层、领域服务层和基础设施层。第三部分为应用,主要关注三个经常遇到的话题:是选择单体应用还是微服务,是选择客户端渲染还是服务器端渲染,以及技术债务和技术信用。
(意)迪诺·埃斯波西托(Dino Esposito) 著 著 叶伟民,涂曙光 译 译
迪诺·埃斯波西托(Dino Esposito),软件开发领域享有盛誉的权威专家,IT团队领导者,他拥有超过25年的编程经验,职业生涯始于1992年的C语言开发,亲身见证并参与了.NET框架的诞生、Silverlight技术的兴衰以及各种架构模式的演进。作为16次微软MVP(最有价值专家)得主,迪诺已撰写了20多本技术书籍和超过1000篇文章,其著作和见解对全球数千名.NET开发人员和架构师的职业成长产生了深远影响。他善于将复杂的架构概念转化为可实践的指导原则,他领导的团队在全球范围内参与构建和维护ASP.NET平台。
叶伟民,冯·诺依曼经典著作《计算机与人脑》译者,《.NET并发编......