V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
antao
V2EX  ›  C

分享一个基于 C++14/17 的 Http web 应用框架

  •  
  •   antao · 2019-03-09 17:52:09 +08:00 · 3210 次点击
    这是一个创建于 2097 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Build Status Codacy Badge Total alerts Language grade: C/C++

    Drogon是一个基于 C++14/17 的 Http 应用框架,使用 Drogon 可以方便的使用 C++构建各种类型的 Web 应用服务端程序。gitbub:Drogon

    Drogon是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是 dragon 的误写,为了不至于引起不必要的误会这里说明一下。

    Drogon 的主要应用平台是 Linux,也支持 Mac OS、FreeBSD,目前还不支持 Windows。它的主要特点如下:

    • 网络层使用基于 epoll(MacOS/FreeBSD 下是 kqueue)的 NIO 框架,提供高并发、高性能的网络 IO。详细请见性能测试
    • 全异步编程模式;
    • 支持 Http1.0/1.1(server 端和 client 端);
    • 基于 template 实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦;
    • 支持 cookies 和内建的 session ;
    • 支持后端渲染,把控制器生成的数据交给视图生成 Html 页面,视图由类似 JSP 的 CSP 文件描述,通过 CSP 标签把 C++代码嵌入到 Html 页面,由 drogon 的命令行工具在编译阶段自动生成 C++代码并编译;
    • 支持运行期的视图页面动态加载(动态编译和加载 so 文件);
    • 非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案;
    • 支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method 约束验证等);
    • 支持 https(基于 OpenSSL 实现);
    • 支持 websocket(server 端);
    • 支持 Json 格式请求和应答, 对 Restful API 应用开发非常友好;
    • 支持文件下载和上传,支持 sendfile 系统调用;
    • 支持 gzip 压缩传输;
    • 支持 pipelining ;
    • 提供一个轻量的命令行工具 drogon_ctl,帮助简化各种类的创建和视图代码的生成过程;
    • 基于 NIO 实现的异步数据库读写,目前支持 PostgreSQL 和 MySQL(MariaDB)数据库;
    • 基于线程池实现 sqlite3 数据库的异步读写,提供与上文数据库相同的接口;
    • 方便的轻量级 ORM 实现,支持常规的对象到数据库的双向映射操作;

    更多详情请浏览 wiki

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1114 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.