作品简介

本书结合现代C++特性,详细介绍软件架构的实用方法及实践,探索了如何在单体应用程序中使用成熟的设计模式,如何使应用程序具有健壮性、安全性、高性能和可维护性,以及如何使用面向服务的架构、微服务、容器和无服务器计算等架构模式构建连接多个单体应用程序的高级服务。

全书共分为四部分:第一部分包含第1—3章,介绍软件架构的概念及组件,包括软件架构的重要性和良好的设计原则、架构风格、功能性和非功能性需求;第二部分包含第4—7章,介绍C++软件的开发和设计,包括架构与系统设计、C++语言特性、设计模式,以及构建和打包;第三部分包含第8—11章,介绍架构的质量属性,包括测试、持续集成和持续部署、安全性、性能;第四部分包含第12—15章,介绍云原生设计原则,包括面向服务的架构、微服务、容器、云原生设计。本书适合C++程序员、架构师等相关技术人员阅读。

作品目录

  • Preface 前言
  • Part 1 第一部分 软件架构的概念和组成部分
  • Chapter 1 第1章 软件架构的重要性和良好的设计原则
  • 1.1 技术要求
  • 1.2 软件架构
  • 1.3 适当架构的重要性
  • 1.4 优秀架构的基本原理
  • 1.5 使用敏捷原则开发架构
  • 1.6 C++的哲学思想
  • 1.7 SOLID和DRY原则
  • 1.8 耦合和内聚
  • 1.9 总结
  • 问题
  • 进一步阅读
  • Chapter 2 第2章 架构风格
  • 2.1 技术要求
  • 2.2 有状态风格和无状态风格
  • 2.3 单体风格
  • 2.4 服务和微服务
  • 2.5 基于事件的架构
  • 2.6 分层架构
  • 2.7 基于模块的架构
  • 2.8 总结
  • 问题
  • 进一步阅读
  • Chapter 3 第3章 功能性和非功能性需求
  • 3.1 从源代码生成文档必备的技术要求
  • 3.2 需求的类型
  • 3.3 架构级重要需求
  • 3.4 从各种来源收集需求
  • 3.5 文档化需求
  • 3.6 文档化系统架构
  • 3.7 选择文档的正确视图
  • 3.8 生成文档
  • 3.9 总结
  • 问题
  • 进一步阅读
  • Part 2 第二部分 C++软件的设计和开发
  • Chapter 4 第4章 架构与系统设计
  • 4.1 技术要求
  • 4.2 分布式系统的特性
  • 4.3 系统容错性和可用性
  • 4.4 系统集成
  • 4.5 在规模化部署时保持性能
  • 4.6 系统部署
  • 4.7 管理API
  • 4.8 总结
  • 问题
  • 进一步阅读
  • Chapter 5 第5章 利用C++语言特性
  • 5.1 技术要求
  • 5.2 设计优秀的API
  • 5.3 编写声明式代码
  • 5.4 在编译时移动计算
  • 5.5 利用安全类型的力量
  • 5.6 编写模块化的C++代码
  • 5.7 总结
  • 问题
  • 进一步阅读
  • Chapter 6 第6章 设计模式和C++
  • 6.1 技术要求
  • 6.2 C++编程习语
  • 6.3 奇异递归模板模式
  • 6.4 创建对象
  • 6.5 在C++中跟踪状态和访问对象
  • 6.6 有效地处理内存
  • 6.7 总结
  • 问题
  • 进一步阅读
  • Chapter 7 第7章 构建和打包
  • 7.1 技术要求
  • 7.2 充分利用编译器
  • 7.3 抽象构建过程
  • 7.4 使用外部模块
  • 7.5 重用高质量代码
  • 7.6 使用Conan打包
  • 7.7 总结
  • 问题
  • 进一步阅读
  • Part 3 第三部分 架构的质量属性
  • Chapter 8 第8章 编写可测试代码
  • 8.1 技术要求
  • 8.2 为什么要测试代码
  • 8.3 测试框架
  • 8.4 模拟和伪装
  • 8.5 测试驱动的类设计
  • 8.6 自动化测试以实现持续集成和持续部署
  • 8.7 总结
  • 问题
  • 进一步阅读
  • Chapter 9 第9章 持续集成和持续部署
  • 9.1 技术要求
  • 9.2 CI简介
  • 9.3 审查代码更改
  • 9.4 测试驱动的自动化
  • 9.5 将部署作为代码管理
  • 9.6 构建部署代码
  • 9.7 构建CD管道
  • 9.8 使用不可变基础设施
  • 9.9 总结
  • 问题
  • 进一步阅读
  • Chapter 10 第10章 代码安全性和部署安全性
  • 10.1 技术要求
  • 10.2 代码安全性检查
  • 10.3 检查依赖项是否安全
  • 10.4 强化代码
  • 10.5 强化环境
  • 10.6 总结
  • 问题
  • 进一步阅读
  • Chapter 11 第11章 性能
  • 11.1 技术要求
  • 11.2 性能测量
  • 11.3 帮助编译器生成高性能代码
  • 11.4 计算并行化
  • 11.5 使用协程
  • 11.6 总结
  • 问题
  • 进一步阅读
  • Part 4 第四部分 云原生设计原则
  • Chapter 12 第12章 面向服务的架构
  • 12.1 技术要求
  • 12.2 理解面向服务的架构
  • 12.3 采用消息传递原则
  • 12.4 使用Web服务
  • 12.5 利用托管服务和云厂商
  • 12.6 总结
  • 问题
  • 进一步阅读
  • Chapter 13 第13章 微服务设计
  • 13.1 技术要求
  • 13.2 深入微服务
  • 13.3 构建微服务
  • 13.4 观测微服务
  • 13.5 连接微服务
  • 13.6 扩展微服务
  • 13.7 总结
  • 问题
  • 进一步阅读
  • Chapter 14 第14章 容器
  • 14.1 技术要求
  • 14.2 重新介绍容器
  • 14.3 构建容器
  • 14.4 测试和集成容器
  • 14.5 容器编排
  • 14.6 总结
  • 问题
  • 进一步阅读
  • Chapter 15 第15章 云原生设计
  • 15.1 技术要求
  • 15.2 云原生
  • 15.3 使用Kubernetes编排云原生工作负载
  • 15.4 分布式系统中的可观测性
  • 15.5 使用服务网格连接服务
  • 15.6 走向GitOps
  • 15.7 总结
  • 问题
  • 进一步阅读
  • 附录
  • 问题解答
  • 推荐阅读
展开全部