Финальный проект: создание многопоточного веб-сервера

Это был долгий путь, но мы дошли до финала книги. В этой главе мы создадим ещё один проект для демонстрации некоторых концепций, которые мы рассмотрели в последних главах, а также резюмировать некоторые предыдущие уроки.

Для нашего финального проекта мы создадим веб-сервер, который говорит “hello” и выглядит как рисунке 20-1 в веб-браузере.

hello from rust

Рисунок 20-1: Наш последний совместный проект

Вот план по созданию веб-сервера:

  1. Узнать немного о протоколах TCP и HTTP.
  2. Прослушивать TCP соединения у сокета.
  3. Разобрать небольшое количество HTTP-запросов.
  4. Создать правильный HTTP ответ.
  5. Улучшите пропускную способность нашего сервера с помощью пула потоков.

Но прежде чем мы начнём, мы должны упомянуть одну деталь. Способ который мы будем использовать не является лучшим способом построения веб-сервер в Rust. Несколько готовых к использованию крейтов доступны на crates.io, и способны обеспечить более полную реализацию веб-сервера и пула потоков, чем сделаем мы сами.

Однако в этой главе мы хотим помочь вам научиться, а не выбирать лёгкий путь. Поскольку Rust является языком системного программирования, мы можем выбрать тот уровень абстракции на котором мы хотим работать и можем перейти на более низкий уровень, чем возможно или практично для использования в других языках. Мы напишем базовый HTTP сервер и пул потоков вручную, чтобы вы могли изучить общие идеи и техники из крейтов, которые вы могли бы использовать в будущем.