Facebook开源的C++ HTTP 框架:Proxygen【初见】

本文详细介绍了开源项目Proxygen,一个支持HTTP/1.1、SPDY3和SPDY/3.1的C++ HTTP库与HTTP服务器。它依赖最新C++特性和底层网络库,采用高级语法避免内存泄露,利用非阻塞IO和Linux epoll技术实现高效服务器。通过探索其文件布局和核心特性,读者可以深入了解Proxygen在现代HTTP处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在这里激动的宣布开源我们的Proxygen,一个C++ HTTP库的集合,连同一个简单易用的HTTP服务器。除了HTTP/1.1之外,Proxygen还支持SPDY3和SPDY/3.1,目前正在添加HTTP/2的支持。

###Get Source

听到这消息,心中有种莫名的兴奋感!于是,打开 terminal 输入自己从githubfork出来的proxygen.git,迫不及待的敲下了命令git clone https://github.com/ittomato/proxygen.git

然后,经过漫长的等待(网速不给力,木办法啊)

终于见到真代码了,这个所谓

很是依赖最新的C++特性,并且依赖 ThriftFolly底层网络库和数据抽象,并使用了很多高级语法避免对大的对象,例如body缓存head representations进行拷贝,同时避免了典型的一些内存泄露的天坑;另外,使用了非阻塞IOLinux epoll技术的一个能够创建出高效服务器的代码框架。

终于见到祖师爷真身了,心存兴奋(源码面前,了无秘密,我可以学到更多)

###文件布局

让我先来看下此大神级的框架的文件目录是如何布局的:

proxygen目录结构

转载于:https://my.oschina.net/ittomato/blog/373413

基于C ++ 14/17的HTTP应用程序框架drogon,Drogon可用于使用C ++轻松构建各种类型的Web应用程序服务器程序。 Drogon是一个跨平台框架,它支持Linux,macOS,FreeBSD和Windows。其主要特点如下: *使用基于epoll的非阻塞I / O网络库(macOS / FreeBSD下的kqueue)提供高并发,高性能的网络IO,请访问[TFB测试结果](https://www.techempower。 com / benchmarks /#section = data-r19&hw = ph&test = composite)以获取更多详细信息; *提供完全异步的编程模式; *支持Http1.0 / 1.1(服务器端和客户端); *基于模板,实现了一种简单的反射机制,以完全解耦主程序框架,控制器和视图。 *支持cookie和内置会话; *支持后端渲染,控制器将数据生成到视图以生成Html页面。视图由CSP模板文件描述,C ++代码通过CSP标记嵌入到HTML页面中。 drogon命令行工具会自动生成C ++代码文件进行编译; *支持视图页面动态加载(运行时动态编译和加载); *提供从路径到控制器处理程序的便捷灵活的路由解决方案; *支持过滤器链,以方便在处理HTTP请求之前执行统一的逻辑(例如登录验证,Http方法约束验证等); *支持https(基于OpenSSL); *支持WebSocket(服务器端和客户端); *支持JSON格式的请求和响应,对Restful API应用程序开发非常友好; *支持文件下载和上传; *支持gzip,brotli压缩传输; *支持流水线; *提供轻量级的命令行工具drogon_ctl,以简化Drogon中各种类的创建以及视图代码的生成; *支持基于非阻塞I / O的异步读写数据库(PostgreSQL和MySQL(MariaDB)数据库); *支持基于线程池的异步读写sqlite3数据库; *支持ARM体系结构; *提供方便的轻量级ORM实现,支持常规的对象到数据库双向映射; *支持可在加载时由配置文件安装的插件; *通过内置连接点支持AOP。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值