最後のプロジェクト: マルチスレッドのWebサーバを構築する

長い旅でしたが、本の末端に到達しました。この章では、共にもう一つプロジェクトを構築して最後の方の章で講義した概念の一部をデモしつつ、 それより前の方で学習した内容を思い出してもらいます。

最後のプロジェクトでは、helloと話すWebサーバを作り、Webブラウザでは、図20-1のような見た目になります。

hello from rust

図20-1: 最後の共有されたプロジェクト

こちらがWebサーバを構築するプランです:

  1. TCPとHTTPについて少し学ぶ。
  2. ソケットでTCP接続をリッスンする。
  3. 少量のHTTPリクエストを構文解析する。
  4. 適切なHTTPレスポンスを生成する。
  5. スレッドプールでサーバのスループットを強化する。

ですが、取り掛かる前に、ある小さな事実に触れなければなりません: わたしたちがこれから行うやり方は、RustでWebサーバを構築する最善の方法ではないだろうということです。 これから構築するよりもより完全なWebサーバとスレッドプールの実装を提供する製品利用可能な多くのクレートが、 https://crates.io/ で利用可能なのです。

しかしながら、この章での意図は、学習を手助けすることであり、簡単なやり方を選ぶことではありません。 Rustはシステムプログラミング言語なので、取りかかる抽象度を選ぶことができ、 他の言語で可能だったり実践的だったりするよりも低レベルまで行くことができます。一般的な考えと将来使う可能性のあるクレートの背後にある技術を学べるように、 手動で基本的なHTTPサーバとスレッドプールを書きます。