暂无商品咨询信息 [发表商品咨询]
理论与实践深度融合:不仅解析模块化架构的理论基础,更通过具体实现层(五层架构)和实际应用场景(单体/微服务、渲染模式选择等)提供可落地的解决方案。
本书分为三部分。第一部分为理论,为软件模块化奠定了基础,追溯了软件架构的历史,并总结了领域驱动设计(DDD)的要点——这是一种非常有助于拆解业务领域的方法,尽管在项目中并非必要。第二部分为实现,讲述了构成“整洁”架构的五个层。这部分的重点并不在于架构的同心圆形式,这种形式已经被大量的书籍和文章所普及,而在于各个构成层次所提供的实际价值:表示层、应用层、领域层、领域服务层和基础设施层。第三部分为应用,主要关注三个经常遇到的话题:是选择单体应用还是微服务,是选择客户端渲染还是服务器端渲染,以及技术债务和技术信用。
译者序<br />前言<br />致谢<br />第一部分 理论<br />第1章 模块化软件架构的历史和演变 2<br />1.1 模块化三层架构 3<br />1.1.1 三层架构的主要特点 4<br />1.1.2 逻辑层、物理层和模块化 6<br />1.2 DDD的典型架构 8<br />1.2.1 DDD配套的支持架构 8<br />1.2.2 其他补充 11<br />1.3 不同类型的分层架构 15<br />1.3.1 六边形架构 15<br />1.3.2 整洁架构 16<br />1.3.3 特性驱动架构 17<br />1.4 本章小结 19<br />第2章 DDD的核心精髓 20<br />2.1 DDD简介 21<br />2.1.1 战略分析 21<br />2.1.2 战术设计 23<br />2.1.3 DDD的误解 24<br />2.1.4 战略设计工具 26<br />2.2 UL 26<br />2.2.1 领域语言术语表 27<br />2.2.2 构建术语表 28<br />2.2.3 保持业务和代码的一致性 30<br />2.3 限界上下文 33<br />2.3.1 处理歧义 34<br />2.3.2 设计限界上下文 36<br />2.4 上下文映射 39<br />2.4.1 上游和下游 39<br />2.4.2 上下文映射示例 40<br />2.4.3 部署映射示例 41<br />2.5 本章小结 42<br />第3章 模块化设计的基础 43<br />3.1 模块化设计的要素与原则 44<br />3.1.1 SoC 44<br />3.1.2 松耦合 45<br />3.1.3 可复用性 45<br />3.1.4 依赖项管理 46<br />3.1.5 文档 46<br />3.1.6 可测试性 46<br />3.2 应用模块化设计 47<br />3.2.1 表示层:与外界交互 47<br />3.2.2 应用层:处理接收到的指令 48<br />3.2.3 领域层:表示领域实体 48<br />3.2.4 数据/基础设施层:持久化数据 48<br />3.3 实现模块化 48<br />3.3.1 在单体中增添模块化设计 49<br />3.3.2 微服务简介 50<br />3.4 最简方案原则 52<br />3.4.1 可维护性 53<br />3.4.2 可测试性 54<br />3.5 本章小结 56<br />第二部分 实现<br />第4章 表示层 60<br />4.1 Renoir项目:最终目标 61<br />4.1.1 应用程序介绍 61<br />4.1.2 抽象上下文映射 63<br />4.1.3 物理上下文映射 66<br />4.2 业务需求工程 69<br />4.2.1 分解软件项目 70<br />4.2.2 基于事件的故事板 70<br />4.2.3 Renoir项目的基本任务 72<br />4.3 表示层的边界和部署 73<br />4.3.1 敲开Web服务器的门 74<br />4.3.2 ASP.NET应用程序端点 75<br />4.4 表示层开发 76<br />4.4.1 连接到业务工作流 76<br />4.4.2 前端及相关技术 81<br />4.4.3 纯API表示层 82<br />4.5 本章小结 83<br />第5章 应用层 85<br />5.1 Renoir项目架构图 86<br />5.1.1 访问控制子系统 86<br />5.1.2 文档管理子系统 88<br />5.1.3 在Visual Studio中打开Renoir项目 89<br />5.2 任务编排 90<br />5.2.1 任务简介 90<br />5.2.2 分布式任务示例 91<br />5.2.3 Renoir项目中的任务示例 93<br />5.3 数据传输 93<br />5.3.1 从表示层到应用层 94<br />5.3.2 从应用层到持久化层 98<br />5.4 实现细节 100<br />5.4.1 应用层概要 101<br />5.4.2 应用程序设置 104<br />5.4.3 日志记录 108<br />5.4.4 处理和抛出异常 113<br />5.4.5 缓存及其模式 117<br />5.4.6 注入SignalR连接中心 121<br />5.5 应用层的边界和部署 123<br />5.5.1 依赖列表 123<br />5.5.2 部署选项 123<br />5.6 本章小结 125<br />第6章 领域层 126<br />6.1 分解领域层 126<br />6.1.1 业务领域模型 126<br />6.1.2 辅助领域服务 129<br />6.2 构建领域模型 131<br />6.2.1 将焦点从数据转向行为 131<br />6.2.2 领域模型的组成部分 134<br />6.2.3 Renoir项目的领域模型 138<br />6.3 领域漫游指南 139<br />6.3.1 治疗软件贫血症 140<br />6.3.2 实体类的共同特征 141<br />6.3.3 代码礼仪 144<br />6.3.4 代码风格规范 153<br />6.3.5 编写真正易读的代码 157<br />6.4 本章小结 160<br />第7章 领域服务层 161<br />7.1 领域服务的定义 162<br />7.1.1 领域服务的无状态特征 162<br />7.1.2 标记领域服务类别 162<br />7.1.3 领域服务和UL 163<br />7.1.4 领域服务的数据访问 163<br />7.1.5 领域服务的数据注入 164<br />7.2 常见的领域服务场景 164<br />7.2.1 确定客户的忠诚度状态 164<br />7.2.2 领域事件 165<br />7.2.3 发送业务邮件 166<br />7.2.4 为密码加密服务 167<br />7.3 具体实现 168<br />7.3.1 领域服务的一个例子 168<br />7.3.2 有用且相关的模式 170<br />7.3.3 REPR模式 171<br />7.4 其他问题 176<br />7.4.1 领域服务是否有必要 176<br />7.4.2 领域服务的其他应用场景 178<br />7.5 本章小结 179<br />第8章 基础设施层 180<br />8.1 基础设施层的职责 181<br />8.1.1 数据持久化和存储 181<br />8.1.2 与外部服务的通信 182<br />8.1.3 与内部服务的通信 182<br />8.2 实现持久化层 183<br />8.2.1 仓库类 184<br />8.2.2 使用EF Core 188<br />8.2.3 使用Dapper 196<br />8.2.4 在数据库中托管业务逻辑 197<br />8.3 数据存储架构 199<br />8.3.1 介绍命令/查询分离 199<br />8.3.2 ES执行摘要 203<br />8.4 本章小结 204<br />第三部分 应用<br />第9章 微服务和模块化单体架构 206<br />9.1 远离遗留的单体系统 207<br />9.1.1 并非所有单体架构都是糟糕的 207<br />9.1.2 单体架构的潜在缺点 208<br />9.2 关于微服务 210<br />9.2.1 早期采用者 211<br />9.2.2 微服务架构和SOA的原则 211<br />9.2.3 微服务的“微”到底有多微 212<br />9.2.4 微服务的优点 214<br />9.2.5 微服务的缺点 215<br />9.3 微服务是否适用于所有应用程序 222<br />9.3.1 大型企业的一个大误解 222<br />9.3.2 SOA和微服务 223<br />9.3.3 微服务是否适合你的场景 224<br />9.3.4 规划和部署 227<br />9.4 模块化单体 231<br />9.4.1 适用于新项目的架构 232<br />9.4.2 模块化单体策略更适用于新项目 232<br />9.4.3 从模块到微服务 235<br />9.5 本章小结 238<br />第10章 客户端渲染和服务器端渲染 239<br />10.1 Web应用程序简史 240<br />10.1.1 史前时代 240<br />10.1.2 服务器端脚本时代 242<br />10.1.3 客户端脚本时代 244<br />10.2 客户端渲染 246<br />10.2.1 HTML层 247<br />10.2.2 API层 250<br />10.2.3 迈向更现代的史前时代 253<br />10.3 SSR 257<br />10.3.1 前后端分离 258<br />10.3.2 ASP.NET前端选项 259<br />10.3.3 ASP.NET Core与Node.js的对比 262<br />10.3.4 阻塞式/非阻塞式传说 265<br />10.4 本章小结 267<br />第11章 技术债务与技术信用 268<br />11.1 技术债务的隐藏成本 269<br />11.1.1 处理技术债务 269<br />11.1.2 解决债务的方法 271<br />11.1.3 会放大债务的行为 273<br />11.2 技术信用的隐藏收益 275<br />11.2.1 破窗理论 276<br />11.2.2 重构 278<br />11.2.3 做正确的事情 280<br />11.3 本章小结 281
基本信息 | |
---|---|
出版社 | 机械工业出版社 |
ISBN | 9787111789895 |
条码 | 9787111789895 |
编者 | [意]迪诺·埃斯波西托(Dino Esposito) 著 |
译者 | |
出版年月 | 2025-09-01 00:00:00.0 |
开本 | 16开 |
装帧 | 平装 |
页数 | 284 |
字数 | 397 |
版次 | 1 |
印次 | 1 |
纸张 |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]