现代C++软件架构:方法与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

Preface
前言

现代C++允许程序员用高级语言编写高性能的应用程序,而不牺牲可读性和可维护性。不过,软件架构还不仅仅是编程语言的问题,还包括很多其他的方面。在本书中,我们将展示如何设计和构建健壮、可扩展且性能良好的应用程序。

通过对基本概念、实例和自测问题的逐步解释,你将首先理解架构的重要性并学习一个实际应用程序的案例。

你将学习如何在单体应用程序级别使用成熟的设计模式,探索如何使应用程序具有健壮性、安全性、高性能和可维护性。然后,你将使用面向服务的架构、微服务、容器和无服务器(serverless)计算技术等架构模式构建连接多个单体应用程序的高级服务。

最后,你将能够使用现代C++和相关工具来构建分布式服务,以提供客户满意的解决方案。

你是否有兴趣成为一名软件架构师,或者想了解更多关于架构的最新趋势?如果是,那么本书应该能帮助你!

读者定位

使用现代C++的开发人员能够将他们的知识与这本实用的软件架构指南结合到一起。本书以一种侧重实践的方式来实现相关方法,这可以让你立即运用本书的知识来提高工作效率。

本书的主要内容

第1章讲述为什么设计软件。

第2章涵盖在架构方面可以采取的不同方式。

第3章探讨对客户需求的理解。

第4章探讨如何创建有效的软件解决方案。

第5章介绍如何使用原生C++。

第6章重点介绍现代C++习语和有用的代码构造。

第7章介绍如何把代码部署到生产环境。

第8章介绍如何比客户先发现bug。

第9章介绍自动化软件发布的现代方法。

第10章探讨如何确保系统不容易被破坏。

第11章关注性能。C++应该更快,它能更快吗?

第12章介绍如何基于服务来构建系统。

第13章只关注一件事,即如何设计微服务。

第14章提供一个构建、打包和运行应用程序的统一接口。

第15章超越传统的基础设施,探索云原生设计。

如何充分利用这本书

本书中的代码示例大多是针对GCC 10编写的。尽管C++20的某些特性可能在旧版本的编译器中缺失,但这些示例也应该兼容Clang或微软的Visual C++。为了尽可能接近作者的开发环境,我们建议你在类Linux环境中使用Nix(https://nixos.org/download.html)和direnv(https://direnv.net/)。如果你在包含代码示例的目录中运行direnv allow,那么这两个工具将会配置好编译器和支持包。

如果没有Nix和direnv,就不能保证这些示例正常工作。如果使用的是macOS,Nix应该可以正常工作。如果使用的是Windows,那么(AWS的)Linux 2的Windows子系统是一个使用带Nix的Linux开发环境的好方法。

要安装这两个工具,需要运行以下命令:

在执行上述命令后,Nix应该下载并安装所有必要的依赖项。这虽然需要一段时间,但有助于确保我们使用的是完全相同的工具。

下载示例代码文件

你可以从GitHub地址https://github.com/PacktPublishing/Software-Architecture-with-Cpp下载本书的示例代码文件。必要时,我们将在现有的GitHub代码库上对代码进行更新。

下载彩色图片

我们还提供了一个PDF文件,里面有本书中使用的屏幕截图的彩色图片,详见地址https://static.packt-cdn.com/downloads/9781838554590_ColorImages.pdf。

排版约定

本书中使用的文本格式约定如下。

代码体文本:代表文本中的代码、数据库表名称、文件夹名、文件名、文件扩展名、路径名、用户输入和Twitter句柄,例如“前两个字段(openapi和info)是描述文档的元数据”。

代码块的设置如下:

代表警告或重要的提示事项。

代表提示和技巧。