文章插图
一、Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序 。本版本库是github上Drogon工程的镜像库 。Drogon是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下 。
Drogon是一个跨平台框架,它支持linux,也支持macOS、FreeBSD,和windows 。
二、它的主要特点如下:
网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO 。详细请见TFB Tests Results;
全异步编程模式;
支持Http1.0/1.1(server端和client端);
基于template实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦;
支持cookies和内建的session;
支持后端渲染,把控制器生成的数据交给视图生成html页面,视图由CSP模板文件描述,通过CSP标签把C++代码嵌入到Html页面,由drogon的命令行工具在编译阶段自动生成C++代码并编译;
支持运行期的视图页面动态加载(动态编译和加载so文件);
非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案;
支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method约束验证等);
支持https(基于OpenSSL实现);
支持websocket(server端和client端);
支持Json格式请求和应答, 对Restful API应用开发非常友好;
支持文件下载和上传,支持sendfile系统调用;
支持gzip/brotli压缩传输;
支持pipelining;
提供一个轻量的命令行工具drogon_ctl,帮助简化各种类的创建和视图代码的生成过程;
基于非阻塞IO实现的异步数据库读写,目前支持PostgreSQL和MySQL(MariaDB)数据库;
基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口;
支持ARM架构;
方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作;
支持插件,可通过配置文件在加载器动态拆装;
支持内建插入点的AOP
https://gitee.com/an-tao/drogon?_from=gitee_search
三、 其安装环境比较麻烦 。故选择用Docker搭建开发环境
#docker pull drogonf ramework/drogon
docker run -p 8778:8777 -v /Users/Apple/data/drogon:/data/drogon -it drogonframework/drogon /bin/bash
将本地8778端口映射到容器的8777,本地的 /Users/apple/data/drogon目录 映射到容器的 /data/drogon同时进入到 容器bash
drogon_ctl create project first#创建项目
drogon_ctl create project your_project_name
.新建项目录为下面
├── CMakeLists.txt
├── build
├── config.json
├── controllers
├── filters
├── main.cc
├── models
│ └── model.json
├── plugins
└── views
修改main.cc
cat main.cc
#include <drogon/drogon.h>
int main() {
【用docker搭建 drogon 环境 世界最快WEB】//Set HTTP listener address and port
drogon::app().addListener("0.0.0.0",8777);
//Load config file
//drogon::app().loadConfigFile("../config.json");
//Run HTTP framework,the method will block in the internal event loop
drogon::app().run();
return 0;
}
8777表示用8777端口启动 。
然后构建项目:
cd build
cmake ..
make
在build创建index.html
在 echo '<h1>Hello Drogon!</h1>' >>index.html
运行项目
./first
在本地服务器打开:http://localhost:8778发现项目启动 。
dr.png
文章插图
文章插图
推荐阅读
- Centos8.2 使用 Openldap 认证登录
- 金尖藏茶食用禁忌,藏茶的保存方法
- 黑苦芥茶的作用和功能,苦甘露茶的功效
- 如何使用Word里的论文版式功能
- 皇菊的功效与作用,红枣菊花茶的功效
- Windows下安装及使用NVM
- 黑砖茶的副作用,黑砖茶的泡冲水温
- 华花郎茶有什么作用,素茶是什么茶
- 用Python识别图片中的文字
- EXCEl提取字符串中的数字不用愁