<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="">Design Choices</string>
    <string name="">"The implementations were originally driven by business needs of cryptocurrency server applications (e.g.  [@https://github.com/ripple/rippled rippled]), written in C++. These needs were not met by existing solutions so Beast was written from scratch as a solution. Beast\'s design philosophy avoids flaws exhibited by other libraries:"</string>
    <string name="">* Don\'t try to do too much.</string>
    <string name="">* Don\'t sacrifice performance.</string>
    <string name="">* Mimic __Asio__; familiarity breeds confidence.</string>
    <string name="">* Role-symmetric interfaces; client and server the same (or close to it).</string>
    <string name="">* Leave important decisions, such as allocating memory or</string>
    <string name="">Beast uses the __DynamicBuffer__ concept presented in the __NetTS__, and relies heavily on the __ConstBufferSequence__ and __MutableBufferSequence__ concepts for passing buffers to functions. The authors have found the dynamic buffer and buffer sequence interfaces to be optimal for interacting with Asio, and for other tasks such as incremental parsing of data in buffers (for example, parsing websocket frames stored in a [link beast.ref.boost__beast__static_buffer `static_buffer`]).</string>
    <string name="">During the development of Beast the authors have studied other software packages and in particular the comments left during the Boost Review process of other packages offering similar functionality. In this section and the FAQs that follow we attempt to answer those questions that are also applicable to Beast.</string>
    <string name="">For HTTP we model the message to maximize flexibility of implementation strategies while allowing familiar verbs such as [*`read`] and [*`write`]. The HTTP interface is further driven by the needs of the WebSocket module, as a WebSocket session requires a HTTP Upgrade handshake exchange at the start. Other design goals:</string>
    <string name="">* Keep it simple.</string>
    <string name="">* Stay low level; don\'t invent a whole web server or client.</string>
    <string name="">* Allow for customizations, if the user needs it.</string>
    <string name="">The following video presentation was delivered at [@https://cppcon.org/ CppCon] in 2016. It provides a light introduction to some of the earliest interfaces of Beast (which have since changed).</string>
</resources>
