最终项目:构建多线程 Web 服务器
这是一段漫长的旅程,但我们已经到达了本书的结尾。在本章中,我们将一起构建最后一个项目,以演示我们在最后几章中介绍的一些概念,并回顾一些之前的课程。
作为我们的最终项目,我们将制作一个 Web 服务器,它会说“你好”,并在 Web 浏览器中显示如图 20-1 所示的内容。
以下是我们构建 Web 服务器的计划
- 学习一些关于 TCP 和 HTTP 的知识。
- 在套接字上监听 TCP 连接。
- 解析少量 HTTP 请求。
- 创建正确的 HTTP 响应。
- 使用线程池提高服务器的吞吐量。
在我们开始之前,我们应该提到一个细节:我们将使用的方法并不是使用 Rust 构建 Web 服务器的最佳方法。社区成员已经在 crates.io 上发布了许多生产就绪的箱,它们提供了比我们将要构建的更完整的 Web 服务器和线程池实现。但是,我们在本章中的目的是帮助您学习,而不是走捷径。因为 Rust 是一种系统编程语言,所以我们可以选择我们想要使用的抽象级别,并且可以达到其他语言不可能或不切实际的更低级别。因此,我们将手动编写基本的 HTTP 服务器和线程池,以便您可以了解将来可能使用的箱背后的总体思路和技术。