boostorg / beast: HTTP и WebSocket, построенные на Boost.Asio в C ++ 11
Все про Блоггинг

boostorg / beast: HTTP и WebSocket, построенные на Boost.Asio в C ++ 11

Boost.Beast Название

Содержание

Введение

Beast — это библиотека C ++ только для заголовков, служащая основой для написания совместимых сетевых библиотек, предоставляя низкоуровневый HTTP / 1, WebSocket и сетевой протокол типы словаря и алгоритмы, использующие согласованную асинхронную модель Boost.Asio.

Эта библиотека предназначена для:

  • Симметрия: Алгоритмы не зависят от ролей; создавать клиентов, серверы или и то, и другое.

  • Легкость использования: Пользователи Boost.Asio сразу поймут Beast.

  • Гибкость: Пользователи принимают важные решения, такие как управление буфером или потоками.

  • Производительность: Создавайте приложения, обрабатывающие тысячи и более соединений.

  • Основа для дальнейшего абстрагирования. Компоненты хорошо подходят для наращивания.

Появления

Описание

Это программное обеспечение находится в его первом официальном выпуске. Интерфейсы могут измениться в ответ на отзывы пользователей. Последние изменения см. В ИЗМЕНЕНИИ.

Требования

Эта библиотека предназначена для программистов, знакомых с Boost.Asio. Пользователи, которые хотят использовать асинхронные интерфейсы, должны уже знать, как создавать параллельные сетевые программы, используя обратные вызовы или сопрограммы.

  • С ++ 11: Надежная поддержка большинства языковых функций.
  • Увеличение: Boost.Asio и некоторые другие части Boost.
  • OpenSSL: Требуется для использования TLS / Secure сокетов и примеров / тестов

При использовании Microsoft Visual C ++ требуется Visual Studio 2017 или более поздней версии.

Один из этих компонентов необходим для создания тестов и примеров:

  • Правильно настроенный bjam / b2
  • CMake 3.5.1 или новее (только для Windows)

Здание

Зверь только заголовок. Чтобы использовать его, просто добавьте необходимое #include строку в исходные файлы, например:

#include <boost/beast.hpp>

Если вы используете сопрограммы, вам необходимо связать их с библиотекой Boost.Coroutine. Пожалуйста, посетите документацию по Boost, чтобы узнать, как это сделать для вашей конкретной системы сборки.

GitHub

Чтобы использовать последний официальный выпуск Beast, просто загрузите последний дистрибутив Boost и следуйте инструкциям по его интеграции в среду разработки. Если вы хотите создать примеры и тесты или если вы хотите предварительно просмотреть предстоящие изменения и функции, рекомендуется клонировать «суперпроект Boost» и работать с Beast «в дереве» (то есть подкаталогом libs / beast в суперпроект).

Официальный репозиторий содержит следующие ветки:

  • мастер Это самый последний снимок с кодом, который известен как стабильный.

  • развиваться Это самый последний снимок. Он может содержать нестабильный код.

Для каждой из этих ветвей требуется соответствующая ветвь Boost и все ее подпроекты. Например, если вы хотите использовать мастер
ветки Beast необходимо клонировать суперпроект Boost, переключиться на мастер в суперпроекте и приобретите все библиотеки Boost, соответствующие этой ветке, включая Beast.

Чтобы клонировать суперпроект локально и переключиться в каталог основного проекта, используйте:

git clone --recursive https://github.com/boostorg/boost.git
cd boost

«bjam» используется для создания библиотек Beast и Boost. В системе, отличной от Windows, используйте эту команду для создания bjam:

./bootstrap.sh

Из командной строки Windows создайте bjam с помощью этой команды:

.BOOTSTRAP.BAT

Сборка тестов и примеров

Для сборки тестов и примеров требуется установленный OpenSSL. Если OpenSSL установлен вне системы, вам нужно будет скопировать файл user-config.jam в свой домашний каталог и установить OPENSSL_ROOT переменную среды в путь, содержащий установку OpenSSL.

Ubuntu / Debian

При установке в системный каталог OpenSSL будет автоматически найден и использован.

sudo apt install libssl-dev

Windows

Заменить path в следующих фрагментах кода укажите путь, по которому вы установили vcpkg. Примеры предполагают 32-битную сборку, если вы собираете 64-битную версию, замените
x32-windows с участием x64-windows в пути.

vcpkg install openssl --triplet x32-windows
SET OPENSSL_ROOT=pathinstalledx32-windows
  • Используя vcpkg и PowerShell:
vcpkg install openssl --triplet x32-windows
$env:OPENSSL_ROOT = "pathx32-windows"
vcpkg.exe install openssl --triplet x32-windows
export OPENSSL_ROOT=path/x32-windows

Mac OS

Использование заварки:

brew install openssl
export OPENSSL_ROOT=$(brew --prefix openssl)
# install bjam tool user specific configuration file to read OPENSSL_ROOT
# see https://boostorg.github.io/build/manual/develop/index.html
cp ./libs/beast/tools/user-config.jam $HOME

Убедитесь, что инструмент bjam (также называемый «b2») доступен в пути, который ваша оболочка использует для поиска исполняемых файлов. Проект Beast находится в «libs / beast» относительно каталога, содержащего суперпроект Boot. Для создания тестов, примеров и документации Beast используйте следующие команды:

export PATH=$PWD:$PATH
b2 -j2 libs/beast/test cxxstd=11      # bjam must be in your $PATH
b2 -j2 libs/beast/example cxxstd=11   # "-j2" means use two processors
b2 libs/beast/doc                     # Doxygen and Saxon are required for this

Дополнительные инструкции по настройке, использованию и созданию библиотек в суперпроекте можно найти в Boost Wiki.

Visual Studio

CMake можно использовать для создания очень красивого решения Visual Studio и набора файлов проекта Visual Studio с помощью следующих команд:

cd libs/beast
mkdir bin
cd bin
cmake ..                                    # for 32-bit Windows builds, or
cmake -G"Visual Studio 15 2017 Win64" ..    # for 64-bit Windows builds (VS2017)

Файлы в репозитории расположены так:

./
    bin/            Create this to hold executables and project files
    bin64/          Create this to hold 64-bit Windows executables and project files
    doc/            Source code and scripts for the documentation
    include/        Where the header files are located
    example/        Self contained example programs
    meta/           Metadata for Boost integration
    test/           The unit tests for Beast
    tools/          Scripts used for CI testing

Применение

Эти примеры представляют собой законченные автономные программы, которые вы можете создавать и запускать самостоятельно (они находятся в example каталог).

https://www.boost.org/doc/libs/develop/libs/beast/doc/html/beast/quick_start.html

Лицензия

Распространяется по лицензии Boost Software, версия 1.0. (См. Сопроводительный файл LICENSE_1_0.txt или скопируйте на https://www.boost.org/LICENSE_1_0.txt)

Связаться с нами

Сообщайте о проблемах или вопросах здесь: https://github.com/boostorg/beast/issues


Содействие (нам нужна ваша помощь!)

Если вы хотите внести свой вклад в Beast и помочь нам поддерживать высокое качество, подумайте о выполнении проверки кода по активным запросам на вытягивание. Любая обратная связь от пользователей и заинтересованных сторон, даже простые вопросы о том, как все работает или почему они были сделаны определенным образом, имеют ценность и могут быть использованы для улучшения библиотеки. Проверка кода дает следующие преимущества:

  • Выявить ошибки
  • Корректура документации
  • Настройте интерфейсы в соответствии с вариантами использования
  • Упростить код

Вы можете просмотреть закрытые запросы на включение, чтобы получить представление о том, как выполняются проверки. Чтобы дать обзор кода, просто войдите в свою учетную запись GitHub, а затем добавьте комментарии к любым открытым запросам на вытягивание ниже, не стесняйтесь!

https://github.com/boostorg/beast/pulls

Вот несколько ресурсов, чтобы узнать больше об обзоре кода:

Beast любит обзоры кода и любые отзывы пользователей и заинтересованных сторон о своих интерфейсах. Даже если у вас просто есть вопросы, их ответы в обзоре кода или в проблемах предоставляют ценную информацию, которую можно использовать для улучшения библиотеки — не сомневайтесь, ни один вопрос не будет незначительным или несущественным!

Вам также может понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *