最后项目:构建一个多线程的 Web 服务器
Final Project: Building a Multithreaded Web Server
这是一个漫长的旅程,但我们已经到达了本书的结尾。在本章中,咱们将一起构建又一个项目,来演示咱们在最后这些章中,曾涉及到的一些概念,同时回顾一些较早的内容。
对于这个最后的项目,咱们将构造一个讲出 “你好”,且在浏览器中看起来如图 20-1 那样的一个 web 浏览器。
图 20-1:咱们最后一起做的项目
以下是构建这个 web 服务器的计划:
-
学习一点有关 TCP 与 HTTP 方面的知识;
-
在某个套接字上监听 TCP 连接;
-
解析少数几个 HTTP 请求;
-
创建出某种恰当的 HTTP 响应;
-
运用线程池,提升咱们服务器的吞吐量。
在咱们开始动手前,咱们应注意到一个情况:咱们将运用的方法,将不会是在 Rust 下构建 web 服务器的最佳方法。在 crates.io 上,一些社区成员已经发布了数个,适合用于生产环境,提供了更完整功能的 web 服务器,以及咱们将要构建的线程池实现的代码箱。但是,本章中咱们的意图,是要帮助咱们学习掌握,而非走那样的捷径。由于 Rust 是门系统编程语言,因此咱们可以选择咱们打算着手的抽象层次,并可以触及到相比其他语言中,可行的或可操作的更低级别。因此咱们将亲自编写这个基本的 HTTP 服务器与线程池,如此咱们便可以学习这些代码箱之后的,今后可能会用到的一些一般概念与技巧。