Rust 最后的項(xiàng)目: 構(gòu)建多線程 web server

2023-03-22 15:07 更新
ch20-00-final-project-a-web-server.md
commit c084bdd9ee328e7e774df19882ccc139532e53d8

這是一次漫長(zhǎng)的旅途,不過(guò)我們到達(dá)了本書(shū)的結(jié)束。在本章中,我們將一同構(gòu)建另一個(gè)項(xiàng)目,來(lái)展示最后幾章所學(xué),同時(shí)復(fù)習(xí)更早的章節(jié)。

作為最后的項(xiàng)目,我們將要實(shí)現(xiàn)一個(gè)返回 “hello” 的 web server,它在瀏覽器中看起來(lái)就如圖例 20-1 所示:


圖例 20-1: 我們最后將一起分享的項(xiàng)目

如下是我們將怎樣構(gòu)建此 web server 的計(jì)劃:

  1. 學(xué)習(xí)一些 TCP 與 HTTP 知識(shí)
  2. 在套接字(socket)上監(jiān)聽(tīng) TCP 請(qǐng)求
  3. 解析少量的 HTTP 請(qǐng)求
  4. 創(chuàng)建一個(gè)合適的 HTTP 響應(yīng)
  5. 通過(guò)線程池改善 server 的吞吐量

不過(guò)在開(kāi)始之前,需要提到一點(diǎn)細(xì)節(jié):這里使用的方法并不是使用 Rust 構(gòu)建 web server 最好的方法。crates.io 上有很多可用于生產(chǎn)環(huán)境的 crate,它們提供了比我們所要編寫的更為完整的 web server 和線程池實(shí)現(xiàn)。

然而,本章的目的在于學(xué)習(xí),而不是走捷徑。因?yàn)?Rust 是一個(gè)系統(tǒng)編程語(yǔ)言,我們能夠選擇處理什么層次的抽象,并能夠選擇比其他語(yǔ)言可能或可用的層次更低的層次。因此我們將自己編寫一個(gè)基礎(chǔ)的 HTTP server 和線程池,以便學(xué)習(xí)將來(lái)可能用到的 crate 背后的通用理念和技術(shù)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)