如果你想用C/C++写一个轻量或者高性能的web服务器,你可以参考下文中列出的C/C++ web库。
从https://www.reddit.com/r/cpp/comments/cjj9t5/what_c_web_server_library_one_should_use_nowadays/ 这个问题得到启发,并了解到了之前没有听过的一些C++服务器框架,所以对目前成熟的、轻量的、高性能的C++ web库进行了总结和归纳。选择使用哪一个库可以根据自己的自身需要,比如说你不想依赖boost,就可以选择没有使用boost asio的库或者boost的库;如果你想使用现代C++语言进行编程,你就可以选择非C的库;如果不想重度耦合,可以选择只有单个头文件的库。
1 C/C++ web服务第三方库、框架整理
1.1 Crow
Github:https://github.com/CrowCpp/Crow
Crow 是一个用于创建 HTTP 或 Websocket Web 服务的 C++ 框架。它使用类似于 Python 的 Flask 的路由,这使得它易于使用。它的速度也非常快,击败了多个现有的 C++ 框架以及非 C++ 框架。
1.2 Mongoose
Github:https://github.com/cesanta/mongoose
Mongoose 是一个 C/C++ 网络库。它为 TCP、UDP、HTTP、WebSocket、MQTT 实现事件驱动的非阻塞 API。它专为连接设备并使它们上线而设计。自 2004 年上市以来,被大量开源和商业产品使用 - 它甚至在国际空间站上运行!Mongoose 使嵌入式网络编程变得快速、健壮且简单。
1.3 restinio
Github:https://github.com/Stiffstream/restinio
跨平台、高效、可定制且强大的异步 HTTP/WebSocket 服务器 C++14 库,在性能和易用性之间取得了适当的平衡。
1.4 proxygen
Github:https://github.com/facebook/proxygen
Facebook的C++ Http库,该框架支持 HTTP/1.1、SPDY/3、SPDY/3.1、HTTP/2 和 HTTP/3。目标是提供一个简单、高性能、现代的 C++ HTTP 库。
1.5 pistache
Github:https://github.com/pistacheio/pistache
Pistache 是一个现代且优雅的 C++ HTTP 和 REST 框架。它完全用纯 C++17 编写,并提供清晰且令人愉快的 API。
1.6 uWebsockets
Github:https://github.com/uNetworking/uWebSockets
简单、安全且符合标准的 Web 服务器,适合最苛刻的应用程序
1.7 Simple-Web-Server
Gitlab:https://gitlab.com/eidheim/Simple-Web-Server
一个非常简单、快速、多线程、平台独立的 HTTP 和 HTTPS 服务器和客户端库,使用 C++11 和 Boost.Asio 实现。创建为一种从 C++ 应用程序中提供 REST 资源的简单方法。
1.8 libmicrohttpd
官网:https://www.gnu.org/software/libmicrohttpd/
GNU libmicrohttpd 是一个小型 C 库,可以轻松地将 HTTP 服务器作为另一个应用程序的一部分运行。GNU Libmicrohttpd 是免费软件,是GNU 项目的一部分。
1.9 libhttpserver
Github:https://github.com/etr/libhttpserver
libhttpserver 是一个用于构建高性能 RESTful Web 服务器的 C++ 库。libhttpserver 基于 libmicrohttpd构建,为开发人员提供简单的 API 以使用 C++ 创建 HTTP 服务。
1.10 cpprestsdk
Github:https://github.com/Microsoft/cpprestsdk
C++ REST SDK 是一个 Microsoft 项目,用于使用现代异步 C++ API 设计以本机代码进行基于云的客户端-服务器通信。该项目旨在帮助 C++ 开发人员连接到服务并与之交互。
1.11 Poco
Github:https://github.com/pocoproject/poco
POCO C++ 库是功能强大的跨平台 C++ 库,用于构建在桌面、服务器、移动、物联网和嵌入式系统上运行的基于网络和互联网的应用程序。
1.12 H2O
Github:https://github.com/h2o/h2o
H2O - 优化的 HTTP/1、HTTP/2、HTTP/3 服务器,H2O 是新一代 HTTP 服务器。与老一代的 HTTP 服务器相比,它不仅速度非常快,而且还为最终用户提供更快的响应。
1.13 Beast
Github:https://github.com/boostorg/beast
Beast 是一个仅包含 C++ 标头的库,通过使用 Boost.Asio 的一致异步模型提供低级 HTTP/1、WebSocket 和网络协议词汇类型和算法,作为编写可互操作网络库的基础。
1.14 civetweb
Github:https://github.com/civetweb/civetweb
提供易于使用、功能强大、C (C/C++) 嵌入式 Web 服务器,并具有可选的 CGI、SSL 和 Lua 支持。CivetWeb 拥有 MIT 许可证,因此您可以不受限制地进行创新。
CivetWeb 于 2013 年 8 月从 Mongoose 的最后一个 MIT 版本分叉出来。
1.15 oat++
Github:https://github.com/oatpp/oatpp
轻量且功能强大的 C++ Web 框架,用于高度可扩展且资源高效的 Web 应用程序。它是零依赖且易于移植的。
1.16 cpp-httplib
Github:https://github.com/yhirose/cpp-httplib
一个 C++11 单文件头跨平台 HTTP/HTTPS 库。
1.17 libhv
github:https://github.com/ithewei/libhv
libhv是一个比libevent、libev、libuv更易用的跨平台国产网络库,可用来开发TCP/UDP/SSL/HTTP/WebSocket客户端/服务端。
libhv是一个类似于libevent、libev、libuv的跨平台网络库,提供了带非阻塞IO和定时器的事件循环。 libhv的名称也正是继承此派,寓意高性能的事件循环High-performance event loop library。
1.18 其他
肯定还有其他非常优秀的库,不过不在本文中一一例举了。
参考链接
- https://www.reddit.com/r/cpp/comments/cjj9t5/what_c_web_server_library_one_should_use_nowadays/
- https://www.reddit.com/r/cpp/comments/4o5zdm/a_good_c_or_c_honestly_so_long_as_it_works_http/
- https://github.com/fffaraz/awesome-cpp#web-application-framework
- https://www.reddit.com/r/cpp_questions/comments/t0grcc/making_a_web_server_in_c/
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 想用C++写服务器?C/C++ web服务第三方库、框架整理
原文链接:https://www.stubbornhuang.com/2695/
发布于:2023年06月26日 11:03:48
修改于:2023年12月19日 11:51:17
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52