_intro.qbk 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. [/
  2. Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. Official repository: https://github.com/boostorg/beast
  6. ]
  7. [section Introduction]
  8. [block'''<?dbhtml stop-chunking?>''']
  9. Beast is a C++ header-only library serving as a foundation for writing
  10. interoperable networking libraries by providing [*low-level HTTP/1,
  11. WebSocket, and networking protocol] vocabulary types and algorithms
  12. using the consistent asynchronous model of __Asio__.
  13. This library is designed for:
  14. * [*Symmetry:] Algorithms are role-agnostic; build clients, servers, or both.
  15. * [*Ease of Use:] __Asio__ users will immediately understand Beast.
  16. * [*Flexibility:] Users make the important decisions such as buffer or
  17. thread management.
  18. * [*Performance:] Build applications handling thousands of connections or more.
  19. * [*Basis for Further Abstraction.] Components are well-suited for building upon.
  20. This library is not a client or server, but it can be used to build those
  21. things. Many examples are provided, including clients and servers, which may
  22. be used as a starting point for writing your own program.
  23. [heading Motivation]
  24. Beast empowers users to create their own libraries, clients, and servers
  25. using HTTP/1 and WebSocket. Code will be easier and faster to implement,
  26. understand, and maintain, because Beast takes care of the low-level
  27. protocol details.
  28. The HTTP and WebSocket protocols drive most of the World Wide Web.
  29. Every web browser implements these protocols to load webpages and
  30. to enable client side programs (often written in JavaScript) to
  31. communicate interactively. C++ benefits greatly from having a
  32. standardized implementation of these protocols.
  33. [section Requirements]
  34. [important
  35. This library is for programmers familiar with __Asio__. Users who
  36. wish to use asynchronous interfaces should already know how to
  37. create concurrent network programs using callbacks or coroutines.
  38. ]
  39. Beast requires:
  40. * [*C++11:] Robust support for most language features.
  41. * [*Boost:] Beast only works with Boost, not stand-alone Asio
  42. * [*OpenSSL:] Required to build the tests, examples, and to use TLS/Secure sockets.
  43. Tested with these compilers: msvc-14+, gcc 4.8.4+, clang 3.6+.
  44. Sources are [*header-only]. Adding additional libraries to the
  45. linking step for your programs to use Beast is normally not
  46. necessary, except for these cases:
  47. * When using coroutines created by calling
  48. [@boost:/doc/html/boost_asio/reference/spawn.html `boost::asio::spawn`],
  49. you will need to add the
  50. [@boost:/libs/coroutine/index.html Boost.Coroutine]
  51. library to your program.
  52. * When using
  53. [@boost:/doc/html/boost_asio/reference/ssl__stream.html `boost::asio::ssl::stream`],
  54. you will need to add the
  55. [@https://www.openssl.org/ OpenSSL]
  56. library to your program.
  57. Please visit the [@boost:/more/getting_started.html Boost documentation]
  58. for instructions on how to build and link with Boost libraries for your
  59. particular environment system.
  60. [endsect]
  61. [section Reporting Bugs]
  62. To report bugs or get help using Beast, GitHub issues are preferred.
  63. Please visit
  64. [@https://github.com/boostorg/beast/issues https://github.com/boostorg/beast/issues]
  65. to ask a question, report a defect, or request a feature. If you
  66. prefer to keep your issue or question confidential please email the author at
  67. [@mailto:vinnie.falco%40gmail.com vinnie.falco@gmail.com].
  68. [endsect]
  69. [section Credits]
  70. Boost.Asio is the inspiration behind which all of the interfaces and
  71. implementation strategies are built. Some parts of the documentation are
  72. written to closely resemble the wording and presentation of Boost.Asio
  73. documentation. Credit goes to
  74. [@https://github.com/chriskohlhoff Christopher Kohlhoff]
  75. for his wonderful Asio library and the ideas in
  76. [@http://cplusplus.github.io/networking-ts/draft.pdf [*C++ Extensions for Networking]]
  77. which power Beast.
  78. Beast would not be possible without the support of
  79. [@https://www.ripple.com Ripple]
  80. during the library's early development, or the ideas, time and patience
  81. contributed by
  82. [@https://github.com/JoelKatz David Schwartz],
  83. [@https://github.com/ximinez Edward Hennis],
  84. [@https://github.com/howardhinnant Howard Hinnant],
  85. [@https://github.com/miguelportilla Miguel Portilla],
  86. [@https://github.com/nbougalis Nik Bougalis],
  87. [@https://github.com/seelabs Scott Determan] and
  88. [@https://github.com/scottschurr Scott Schurr].
  89. Many thanks to
  90. [@https://github.com/K-ballo Agustín Bergé],
  91. [@http://www.boost.org/users/people/glen_fernandes.html Glen Fernandes],
  92. and
  93. [@https://github.com/pdimov Peter Dimov]
  94. for tirelessly answering questions on the
  95. [@https://slack.cpp.al/ C++ Language Slack Workspace].
  96. Thanks to
  97. [@https://github.com/djarek Damian Jarek]
  98. for his generous participation and source code contributions.
  99. [endsect]
  100. [endsect]
  101. [include 1_quick_look.qbk]