Clone this wiki locally
The motivation of pion is not to build yet another web server or web application framework, but to help provide basic HTTP(S) functionality to new or existing C++ applications. If you're working on a Boost C++ application and would just like to use HTTP to provide a simple user interface or interact with run-time data, then pion might be for you.
pion uses Boost and its ASIO library for multi-threading and asynchronous I/O. Multi-threading allows the use of multiple CPUs or processing cores to process HTTP requests simultaneously. Asynchronous I/O allows each thread to handle many connections simultaneously (otherwise, a single thread would be required for every connection to the server). The combination of these technologies takes full advantage of the most modern CPUs, and allows servers implemented using pion to very efficiently handle many thousands of connections simultaneously with a single physical server.
Pion lets you run multiple servers listening to any number of ports and network devices. Each server may have its own collection of web services defined which are bound to HTTP resources. Protocols other than HTTP can also easily be implemented for any server. A common thread pool is used to handle operations for all servers. pion also supports server-side SSL & TLS encryption when built with the OpenSSL library.
[Disambiguation: "pion" was previously used as a brand name for a collection of products from Atomic Labs. Following the renaming of the company to Cloudmeter, we decided to also rename our product line and use the pion name only to describe the original open source project it was first used for (this one).]