C++ restful 网络框架
共 5252字,需浏览 11分钟
·
2023-08-24 08:33
“ 文章所涉及内容更多来自网络,在此声明,并感谢知识的贡献者!”
boost.beast
—
Boost.Beast
使用Boost Software License 1.0开源协议,提供了HTTP、WebSocket、SSL等协议的客户端和服务端实现,具有高度的可扩展性和灵活性。
官网链接
https://www.boost.org/doc/libs/develop/libs/beast/doc/html/index.html
Github仓库
https://github.com/boostorg/beast
boost.http
—
Boost.Http
Boost正式Review的一个HTTP库,由于功能上的问题(API层次偏低,无HTTP客户端API,无HTTP/2等
Github仓库
https://github.com/BoostGSoC14/boost.http
cpp-httplib
—
cpp-httplib
cpp-httplib是一个单头文件的库,用于创建C++的HTTP服务器和客户端。它支持异步的HTTP请求和响应处理。
GitHub仓库
https://github.com/yhirose/cpp-httplib
cpp-netlib
—
cpp-netlib
使用Boost Software License 1.0开源协议,提供了HTTP、HTTPS、WebSocket等协议的客户端和服务端实现。
官网链接
https://cpp-netlib.org/
cweb
—
cweb
一个RESTful风格的C++Web框架
功能概述:
-支持协程版线程版两种模式
-支持路由注册、路由分组
RESTful风格的注册接口
-支持动态路由
-支持全局中间件、分组中间件
支持HTTP1.1部分能力
JSON数据,项目中使用JSONCPP能力支持
表单数据
multipart数据
文件
-支持WebSocket协议
-支持部分数据库操作
mysql
redis单机与集群
redis分布式锁
Github仓库:
https://github.com/Nodesheep/RESTfulCweb
crow
—
crow
使用MIT开源协议,是一个现代化的C++微框架,提供了HTTP和WebSocket等协议的支持,具有易用性和高性能的特点。Crow是一个轻量级的C++微框架,专为构建高性能的RESTful API而设计。它使用简单的路由配置和中间件机制来处理HTTP请求,并支持JSON和XML等常见数据格式。
官网链接
https://crowcpp.org/
Github仓库
https://github.com/ipkn/crow
chttplib
—
chttplib
chttplib是一个简单易用的C++ HTTP库,适用于编写客户端和服务端应用程序。它支持HTTP/1.0和HTTP/1.1协议,并提供了易于使用的API接口,可以用于发送HTTP请求和处理HTTP响应,也可以用于构建HTTP服务器和处理HTTP请求。该库的协议是MIT License。
https://github.com/yhirose/cpp-httplib
cppcms
—
CPPCMS
CPPCMS是一个高性能的C++ Web开发框架,它采用了模块化的设计和MVC架构。CPPCMS提供了丰富的功能和工具,如URL路由、模板引擎、国际化支持和数据库访问。
cpprestsdk
—
CppRESTSDK (Casablanca)
CppRESTSDK,也称为Casablanca,是一个功能强大的C++库,用于构建各种网络应用,包括RESTful服务。它由Microsoft开发,提供异步操作和现代的异步编程模型。
Github仓库
https://github.com/microsoft/cpprestsdk
libcurl
—
libcurl
libcurl是一个强大的开源项目,用于支持各种协议,包括HTTP。它可以用于构建高性能的异步RESTful API请求,支持多个并发连接和异步事件处理。
官网链接
https://curl.se/libcurl/
libmicrohttpd
—
libmicrohttpd
使用LGPL开源协议,是一个轻量级的C语言HTTP服务器库,支持HTTP和HTTPS协议。
官网链接
https://www.gnu.org/software/libmicrohttpd/
poco
—
Poco
使用Boost Software License 1.0开源协议,包含了丰富的网络和HTTP相关功能,可以用于构建高性能的网络应用程序。
官网链接
https://pocoproject.org/
pistache
—
Pistache
Pistache是一个跨平台的C++ RESTful API框架,它提供了一个简单且易于使用的接口,用于处理HTTP请求和响应。Pistache支持异步操作和多线程,并提供了一些有用的工具和功能,如身份验证、日志记录和错误处理。
GitHub仓库
https://github.com/pistacheio/pistache
drogon
—
Drogon
Drogon是一个跨平台框架,可以方便地使用 C++ 构建各种类型的 Web 应用服务端程序。其网络层使用基于 epoll,使用全异步编程模式;实现了简单的反射机制,支持后端渲染,支持运行期的视图页面动态加载;支持过滤器链,支持 websocket,支持pipelining
官网链接
http://www.manongjc.com/detail/59-tnluqrgndwstwai.html
GitHub仓库
https://github.com/an-tao/drogon
webcc
—
Webcc
Webcc 是基于 Boost Asio 开发的轻量级 C++ HTTP 程序库,同时支持客户端与服务端。
功能概述
跨平台: Windows,Linux 及 MacOS
简单好用的客户端 API,借鉴了 Python 的 requests 程序库
支持 SSL/HTTPS,依赖 OpenSSL(可选)
支持 GZip 压缩,依赖 Zlib(可选)
持久连接 (Keep-Alive)
数据串流 (Streaming)
客户端:可以上传、下载大型文件
服务端:可以伺服、接收大型文件
支持 Basic & Token 认证/授权
超时控制(目前仅客户端)
代码遵守 Google C++ Style
自动化测试和单元测试保证质量
无内存泄漏(VLD 检测)
Github仓库:
https://github.com/sprinfall/webcc
web toolkit
—
Wt(Web Toolkit)
Wt是一个C++编写的开源Web应用程序框架,它提供了一套完整的组件和工具,用于构建高性能的Web应用程序。Wt支持MVC架构,并且提供了对HTML、CSS和JavaScript的全面支持。
wfrest
—
wfrest
wfrest是一个快速, 高效, 简单易用的 c++ 异步web框架.
wfrest基于C++ Workflow开发. C++ Workflow 是一个设计轻盈优雅的企业级程序引擎.
官网链接
https://github.com/wfrest/wfrest/blob/main/README_cn.md
Github仓库
https://github.com/wfrest/wfrest
simple-web-server
—
simple-web-server
一个纯头文件库,只依赖Boost和OpenSSL(HTTPS支持),4个头文件分别对应HTTP客户端/服务端/HTTPS客户端/服务端,可单独使用。适合嵌入C++程序提供RESTful Web服务,性能很好。
Github仓库
https://github.com/eidheim/Simple-Web-Server
tuf
—
Tuf
在Qt Network基础上实现的HTTP库,性能比上面三个差些,写基于Qt Framework的程序可以考虑采用。
Github仓库
https://github.com/vinipsmaker/tufao
evpp
—
evpp
基于libevent实现的C++11风格网络库, evpp是奇虎360开源的一款基于libevent开发的现代化C++11高性能网络服务器,自带TCP/UDP/HTTP等协议的异步非阻塞式的服务器和客户端库。
功能
1、现代版的C++11接口
2、非阻塞异步接口都是C++11的functional/bind形式的回调仿函数(不是libevent中的C风格的函数指针)
3、CPU多核友好和线程安全
4、非阻塞纯异步多线程TCP服务器/客户端
5、非阻塞纯异步多线程HTTP服务器/客户端
6、非阻塞纯异步多线程UDP服务器
7、支持多进程模式
8、优秀的跨平台特性和高性能(继承自libevent的优点)
9、已经经过详尽的测试,并已经用于生产环境,每天承载数万亿次的网络通信
10、非常容易安装和集成,evpp 能够很容易就打包出 deb/rpm/tar.gz 等格式的安装包
除此之外,基于该库之上,还提供两个附带的应用层协议库:
evmc :一个纯异步非阻塞式的memcached的C++客户端库,支持membase集群模式。该库已经用于生产环境,每天发起3000多亿次memcache查询请求。详情请见:evmc readme
evnsq :一个纯异步非阻塞式的NSQ的C++客户端库,支持消费者、生产者、服务发现等特性。该库已经用于生产环境,每天生产1300多亿条日志消息。详情请见:evnsq readme
将来还会推出redis的客户端库。
Github仓库
https://gitcode.net/mirrors/qihoo360/evpp?utm_source=csdn_github_accelerator
tinyhttpd
—
Tinyhttpd
tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。
Github仓库
https://link.csdn.net/?target=https%3A%2F%2Fgithub.com%2FLippiOuYang%2FTinyhttpd
silicon
—
Silicon
Silicon是一个C++14编写的高性能、异步的Web应用框架,专注于快速构建RESTful API和Web服务。
Github仓库
https://github.com/matt-42/silicon
mongoose
—
Mongoose
Mongoose是一个轻量级的Web服务器和客户端库,用于处理HTTP请求和WebSocket通信。它支持异步和非阻塞操作。
Github仓库
https://github.com/cesanta/mongoose
参考资料
—
参考资料:
https://segmentfault.com/a/1190000020068205?sort=votes
https://www.zhihu.com/question/29612371?sort=created
https://blog.csdn.net/PRML_MAN/article/details/129250230
https://www.sg-info.cn/article/show/13848
https://www.zhihu.com/question/29612371
https://blog.csdn.net/caoshangpa/article/details/51712697
https://blog.csdn.net/eastlhu/article/details/52956461