boost/libs/beast/doc/html/beast/introduction.html
2021-10-05 21:37:46 +02:00

203 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Introduction</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.Beast">
<link rel="up" href="../index.html" title="Chapter 1. Boost.Beast">
<link rel="prev" href="release_notes.html" title="Release Notes">
<link rel="next" href="quick_start.html" title="Quick Look">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="release_notes.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quick_start.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="beast.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
</h2></div></div></div>
<p>
Beast is a C++ header-only library serving as a foundation for writing interoperable
networking libraries by providing <span class="bold"><strong>low-level HTTP/1, WebSocket,
and networking protocol</strong></span> vocabulary types and algorithms using the
consistent asynchronous model of <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a>.
</p>
<p>
This library is designed for:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<span class="bold"><strong>Symmetry:</strong></span> Algorithms are role-agnostic;
build clients, servers, or both.
</li>
<li class="listitem">
<span class="bold"><strong>Ease of Use:</strong></span> <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a>
users will immediately understand Beast.
</li>
<li class="listitem">
<span class="bold"><strong>Flexibility:</strong></span> Users make the important
decisions such as buffer or thread management.
</li>
<li class="listitem">
<span class="bold"><strong>Performance:</strong></span> Build applications handling
thousands of connections or more.
</li>
<li class="listitem">
<span class="bold"><strong>Basis for Further Abstraction.</strong></span> Components
are well-suited for building upon.
</li>
</ul></div>
<p>
This library is not a client or server, but it can be used to build those things.
Many examples are provided, including clients and servers, which may be used
as a starting point for writing your own program.
</p>
<h4>
<a name="beast.introduction.h0"></a>
<span class="phrase"><a name="beast.introduction.motivation"></a></span><a class="link" href="introduction.html#beast.introduction.motivation">Motivation</a>
</h4>
<p>
Beast empowers users to create their own libraries, clients, and servers using
HTTP/1 and WebSocket. Code will be easier and faster to implement, understand,
and maintain, because Beast takes care of the low-level protocol details. The
HTTP and WebSocket protocols drive most of the World Wide Web. Every web browser
implements these protocols to load webpages and to enable client side programs
(often written in JavaScript) to communicate interactively. C++ benefits greatly
from having a standardized implementation of these protocols.
</p>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="beast.introduction.requirements"></a><a class="link" href="introduction.html#beast.introduction.requirements" title="Requirements">Requirements</a>
</h3></div></div></div>
<div class="important"><table border="0" summary="Important">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../../doc/src/images/important.png"></td>
<th align="left">Important</th>
</tr>
<tr><td align="left" valign="top"><p>
This library is for programmers familiar with <a href="../../../../../libs/asio/index.html" target="_top">Boost.Asio</a>.
Users who wish to use asynchronous interfaces should already know how to
create concurrent network programs using callbacks or coroutines.
</p></td></tr>
</table></div>
<p>
Beast requires:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<span class="bold"><strong>C++11:</strong></span> Robust support for most language
features.
</li>
<li class="listitem">
<span class="bold"><strong>Boost:</strong></span> Beast only works with Boost,
not stand-alone Asio
</li>
<li class="listitem">
<span class="bold"><strong>OpenSSL:</strong></span> Version 1.0.2 or higher. Required
to build the tests, examples, and to use TLS/Secure sockets.
</li>
</ul></div>
<p>
Tested with these compilers: msvc-14+, gcc 4.8.4+, clang 3.6+.
</p>
<p>
Sources are <span class="bold"><strong>header-only</strong></span>. Adding additional
libraries to the linking step for your programs to use Beast is normally
not necessary, except for these cases:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
When using coroutines created by calling <a href="../../../../../doc/html/boost_asio/reference/spawn.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">spawn</span></code></a>, you will need to add
the <a href="../../../../../libs/coroutine/index.html" target="_top">Boost.Coroutine</a>
library to your program.
</li>
<li class="listitem">
When using <a href="../../../../../doc/html/boost_asio/reference/ssl__stream.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">asio</span><span class="special">::</span><span class="identifier">ssl</span><span class="special">::</span><span class="identifier">stream</span></code></a>, you will need to add
the <a href="https://www.openssl.org/" target="_top">OpenSSL</a> library to
your program.
</li>
</ul></div>
<p>
Please visit the <a href="../../../../../more/getting_started.html" target="_top">Boost documentation</a>
for instructions on how to build and link with Boost libraries for your particular
environment system.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="beast.introduction.reporting_bugs"></a><a class="link" href="introduction.html#beast.introduction.reporting_bugs" title="Reporting Bugs">Reporting Bugs</a>
</h3></div></div></div>
<p>
To report bugs or get help using Beast, GitHub issues are preferred. Please
visit <a href="https://github.com/boostorg/beast/issues" target="_top">https://github.com/boostorg/beast/issues</a>
to ask a question, report a defect, or request a feature. If you prefer to
keep your issue or question confidential please email the author at <a href="mailto:vinnie.falco%40gmail.com" target="_top">vinnie.falco@gmail.com</a>.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="beast.introduction.credits"></a><a class="link" href="introduction.html#beast.introduction.credits" title="Credits">Credits</a>
</h3></div></div></div>
<p>
Boost.Asio is the inspiration behind which all of the interfaces and implementation
strategies are built. Some parts of the documentation are written to closely
resemble the wording and presentation of Boost.Asio documentation. Credit
goes to <a href="https://github.com/chriskohlhoff" target="_top">Christopher Kohlhoff</a>
for his wonderful Asio library and the ideas in <a href="http://cplusplus.github.io/networking-ts/draft.pdf" target="_top"><span class="bold"><strong>C++ Extensions for Networking</strong></span></a> which power
Beast.
</p>
<p>
Beast would not be possible without the support of <a href="https://www.ripple.com" target="_top">Ripple</a>
during the library's early development, or the ideas, time and patience contributed
by <a href="https://github.com/JoelKatz" target="_top">David Schwartz</a>, <a href="https://github.com/ximinez" target="_top">Edward Hennis</a>, <a href="https://github.com/howardhinnant" target="_top">Howard
Hinnant</a>, <a href="https://github.com/miguelportilla" target="_top">Miguel Portilla</a>,
<a href="https://github.com/nbougalis" target="_top">Nik Bougalis</a>, <a href="https://github.com/seelabs" target="_top">Scott
Determan</a> and <a href="https://github.com/scottschurr" target="_top">Scott Schurr</a>.
Many thanks to <a href="https://github.com/K-ballo" target="_top">Agustín Bergé</a>,
<a href="http://www.boost.org/users/people/glen_fernandes.html" target="_top">Glen Fernandes</a>,
and <a href="https://github.com/pdimov" target="_top">Peter Dimov</a> for tirelessly
answering questions on the <a href="https://slack.cpp.al/" target="_top">C++ Language
Slack Workspace</a>.
</p>
<p>
Thanks to <a href="https://github.com/djarek" target="_top">Damian Jarek</a> for
his generous participation and source code contributions.
</p>
<p>
Thanks to <a href="https://github.com/madmongo1" target="_top">Richard Hodges</a>
(hodges.r@gmail.com) for maintaining Beast on behalf of the <a href="https://cppalliance.org" target="_top">C++
Alliance</a>.
</p>
<p>
Many thanks to <a href="https://www.jetbrains.com" target="_top">Jetbrains s.r.o.</a>
for generously providing the Beast development team with All Product Developmnent
Licenses.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2016-2019 Vinnie
Falco<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="release_notes.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="quick_start.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>