CHN-11-drogon_ctl命令

Drogon框架编译安装后,一个命令行程序drogon_ctl也同时被安装于系统,为了方便,还安装了一个完全一样的副本dg_ctl。用户可以按喜好自行选用。

该程序目前的主要功能是为了方便用户创建各种drogon工程文件,使用dg_ctl help命令可以看到它支持的功能,如下:

dg_ctl help
usage: drogon_ctl <command> [<args>]
commands list:
create                  create some source files(Use 'drogon_ctl help create' for more information)
help                    display this message
version                 display version of this tool
press                   Do stress testing(Use 'drogon_ctl help press' for more information)

version子命令

version子命令用于打印目前安装于系统的drogon版本,如下:

 dg_ctl version
     _                             
  __| |_ __ ___   __ _  ___  _ __  
 / _` | '__/ _ \ / _` |/ _ \| '_ \ 
| (_| | | | (_) | (_| | (_) | | | |
 \__,_|_|  \___/ \__, |\___/|_| |_|
                 |___/             

drogon ctl tools
version:0.9.30.771
git commit:d4710d3da7ca9e73b881cbae3149c3a570da8de4
compile config:-O3 -DNDEBUG -Wall -std=c++17 -I/root/drogon/trantor -I/root/drogon/lib/inc -I/root/drogon/orm_lib/inc -I/usr/local/include -I/usr/include/uuid -I/usr/include -I/usr/include/mysql 

create子命令

create子命令用于创建各种对象,目前是drogon_ctl的主要功能,使用dg_ctl help create命令可以打印该命令的详细帮助,如下:

dg_ctl help create
Use create command to create some source files of drogon webapp

Usage:drogon_ctl create <view|controller|filter|project|model> [-options] <object name>

drogon_ctl create view <csp file name> //create HttpView source files from csp file

drogon_ctl create controller [-s] <[namespace::]class_name> //create HttpSimpleController source files

drogon_ctl create controller -h <[namespace::]class_name> //create HttpController source files

drogon_ctl create controller -w <[namespace::]class_name> //create WebSocketController source files

drogon_ctl create filter <[namespace::]class_name> //create a filter named class_name

drogon_ctl create project <project_name> //create a project named project_name

drogon_ctl create model <model_path> //create model classes in model_path
视图创建

dg_ctl create view命令用于从csp文件生成源文件,参见视图一节。一般情况下,该命令不需要直接使用,又cmake文件配置成自动执行是更好的方法。命令例子如下,假设csp文件是UsersList.csp.

dg_ctl create view UsersList.csp
控制器创建

dg_ctl create controller命令用于帮助用户创建控制器的源文件,drogon目前支持的三种控制器都可以由该命令创建,只是参数稍有差别。

  • 创建HttpSimpleController的命令如下:
dg_ctl create controller SimpleControllerTest
dg_ctl create controller webapp::v1::SimpleControllerTest

最后一个参数是控制器的类名,可以在前面附加命名空间。

  • 创建HttpController的命令如下:
dg_ctl create controller -h ControllerTest
dg_ctl create controller -h api::v1::ControllerTest
  • 创建WebSocketController的命令如下:
dg_ctl create controller -w WsControllerTest
dg_ctl create controller -w api::v1::WsControllerTest

参考wiki的控制器各个章节。

过滤器创建

dg_ctl create filter命令用于帮助用户创建过滤器的源文件,参见过滤器一节。

dg_ctl create filter LoginFilter
dg_ctl create filter webapp::v1::LoginFilter
创建工程

用户创建一个新的Drogon应用工程的方法是通过drogon_ctl命令实现,如下:

dg_ctl create project ProjectName

该命令执行完后,在当前目录会创建完整的工程目录,目录名是ProjectName,用户可以直接进build目录编译这个工程,当然他没有任何业务逻辑。

工程的目录结构如下:

├── build                         构建文件夹
├── CMakeLists.txt                工程的cmake配置文件
├── cmake_modules                 第三方库查找的cmake脚本
│   ├── FindJsoncpp.cmake
│   ├── FindMySQL.cmake
│   ├── FindSQLite3.cmake
│   └── FindUUID.cmake
├── config.json                   drogon应用的配置文件,请参考配置文件介绍章节
├── controllers                   存放控制器源文件的目录
├── filters                       存放过滤器文件的目录
├── main.cc                       主程序
├── models                        数据库模型文件的目录,模型源文件创建见11.2.5
│   └── model.json
├── tests                         存放测试程序的目录
│   └── test_main.cc              测试主程序
└── views                         存放视图csp文件的目录,源文件无需用户手动创建,工程编译时会自动预处理csp文件得到视图的源文件
创建模型

使用dg_ctl create model命令创建数据库模型源文件,最后一个参数是模型存放的目录,该目录里必须包含一个名为model.json的模型配置文件,用于告诉dg_ctl如何连接数据库以及映射哪些表。

比如,如果要在上面提到的工程目录里创建模型,请在工程目录下执行如下命令:

dg_ctl create model models

该命令会提示用户目录下已有的文件将被直接覆盖,用户输入y确认后就会生成所有模型文件。其他文件要引用模型类需要include模型的头文件,比如:

#include "models/User.h"

注意要包含models目录名,这是为了区分同一个工程中多个数据源的情况。参见ORM

压力测试

用户可以使用dg_ctl press命令进行压力测试,该命令有几个选项

  • -n num 设置请求的总数(默认是1)
  • -t num 设置线程总数(默认是1), 设置成CPU数目可以达到最大性能
  • -c num 设置并发连接数(默认是1)
  • -q 表示没有中间过程的信息输出(默认输出信息)

例子:

dg_ctl press -n1000000 -t4 -c1000 -q http://localhost:8080/
dg_ctl press -n 1000000 -t 4 -c 1000 https://www.domain.com/path/to/be/tested

12 AOP面向切面编程

Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。 本版本库是github上Drogon工程的镜像库。Drogon是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下。 Drogon是一个跨平台框架,它支持Linux,也支持macOS、FreeBSD,和Windows。它的主要特点如下: 1、网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO。详细请见TFB Tests Results; 2、全异步编程模式; 3、支持Http1.0/1.1(server端和client端); 4、基于template实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦; 5、支持cookies和内建的session; 6、支持后端渲染,把控制器生成的数据交给视图生成Html页面,视图由CSP模板文件描述,通过CSP标签把C++代码嵌入到Html页面,由drogon命令行工具在编译阶段自动生成C++代码并编译; 7、支持运行期的视图页面动态加载(动态编译和加载so文件); 8、非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案; 9、支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method约束验证等); 10、支持https(基于OpenSSL实现); 11、支持websocket(server端和client端); 12、支持Json格式请求和应答, 对Restful API应用开发非常友好; 13、支持文件下载和上传,支持sendfile系统调用; 14、支持gzip/brotli压缩传输; 15、支持pipelining; 16、提供一个轻量的命令行工具drogon_ctl,帮助简化各种类的创建和视图代码的生成过程; 17、基于非阻塞IO实现的异步数据库读写,目前支持PostgreSQL和MySQL(MariaDB)数据库; 18、基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口; 19、支持ARM架构; 20、方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作; 21、支持插件,可通过配置文件在加载期动态拆装; 22、支持内建插入点的AOP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值