paozhu c++ web framework 框架原理

paozhu c++ web framework 使用 asio 网络库,如果用动态库方式还要boost库。

paozhu框架 使用两个线程池,一个是框架使用的解析协议,连接保持线程池,一个是运行用户业务代码的线程池。

webserver

流程是 http/https 连接进来

判断http链接类型。

如果是http1走http1解析,然后是不是静态文件,是直接发送,如果是动态,走用户线程池,加载用户业务代码运行。

如果进http2走http2解析,丢到用户线程池,多线程返回给用户数据,如果是静态文件直接发送,如果是动态,加载用户业务代码运行。

ORM

orm 模块是直接用paozhu_cli生成orm文件,解决了c++ 一些缺点,目前可以从数据库生成orm文件,支持mysql,因为网络公司都是用mysql多。

数据库配置文件在conf目录 mysqlorm.conf 文件

提前建好数据库和表,在根目录运行paozhu_cli,选择m 可以进入orm 文件生成

auto users = orm::cms::User();
users.where("name=", username).whereAnd("password=", md5string).limit(1).fetch();
users.sqlstring;

orm 是命名空间,cms是数据库标签,在mysqlorm.conf 里面标注,用来隔离orm文件,这样数据库和另一个数据表名相同不会冲突。

User是表名,第一个字母大写,sql操作是链式操作。

最后拼装sql。有一个字符安全过滤函数。

sqlstring 是拼装好的sql语句,然后发给mysql线程池,选择一个链接,然后返回数据,第一行记录会在

users.data;

完整记录在users.record 这是一个vector数组。users.data.userid 就是字段访问方式。所以建数据表名和字段有要求,字段类型有8到9种,详细看orm模块

view

html视图模块

view 目录是原始html文件,在里面加上标签,然后paozhu_cli

里面选择 v或f生成 cpp文件

v 是生成动态库

f 是生成.h和.cpp文件到viewsrc 目录,然后随框架一起编译,建议测试时候使用v生成,产品开发完毕使用f

初学者可以选择f。

controller

控制器模块

如果是请求是动态内容,那么在用户线程池运行,用户运行在一个线程中,框架会调用用户注册函数。

common 目录

reghttpmethod.hpp

reghttpmethod_pre.hpp

里面两个文件是 控制器注册点,pre的是需要前置方法调用,比如权限认证,是否已经登录了

控制器文件在 controller 目录

里面有一个include 目录和src目录 里面放着的是控制器函数代码,具体怎么放,用户自己把握,如果代码多可以一个文件一个函数。

第一层cpp文件,是用来生成动态库的,这样运行可以动态加载,不用重新编译整个框架,初学者建议用文件模式。

因为生成动态库,还要使用paozhu_cli 去生成。

框架会传一个httppeer指针,里面可以取get post files header cookie session等值

 std::string testhello(std::shared_ptr<httppeer> peer)
{
httppeer &client = peer->getpeer();
client << " Hello world! "; return "";
}

client 是重载了输出符号,所以输出比较方便。

client.output 是一个string 对象,所有输出都保存在这里。

peer->getpeer() 是取得原始指针,可以重载输出符号,但是如果还要传给其它函数最好还是传智能指针。

websockets

在websockets目录,里面pushloop 方法是 框架定时调用方法,如果你有推送需求可以放这里,有timeloop_num变量控制,如果为0,会退出。

timeloop_num建议大于2,就是2秒间隔,一般5秒以上比较好。

服务器往客户端推送 5秒左右可以了,目前是单线程运行,所以看自己业务。以后再加入多线程。

试试框架hello world输出教程

最新文章

  1. winform右下角弹窗
  2. OVER(PARTITION BY)函数用法
  3. Android SurfaceView
  4. BOM(Bill of Material)详解
  5. 利用Apriori算法对交通路况的研究
  6. iOS之事件穿透
  7. winform 导出TXT 分类: WinForm 2014-05-15 15:29 128人阅读 评论(0) 收藏
  8. Spring3 MVC DispatcherServlet 配置问题
  9. 新一代开源Android渠道包生成工具Walle
  10. MySQL的字符编码设置
  11. Python Django的生产部署方式
  12. php ReflectionClass类遍历类中包含元素的方法
  13. Filebeat工作过程(二)
  14. maven跳过测试编译命令
  15. 关于TP5.0搜索后分页
  16. AngularJS实战之ngAnimate插件实现轮播
  17. 对MP4一些概念的理解
  18. Windows-DB2 9.7安装图解
  19. 使用 Gogs 搭建自己的 Git 服务器
  20. 第五章&#160;二叉树(e4)层次遍历

热门文章

  1. WhereIf 扩展
  2. .NET周报【10月第1期 2022-10-11】
  3. Docker | 容器互联互通
  4. Mysql 用户远程登录数据库
  5. SpringBoot自动配置(装配)流程
  6. .Net 文件导出下载
  7. SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架
  8. zk系列二:zookeeper实战之分布式统一配置获取
  9. 【题解】CF1503B 3-Coloring
  10. [CS61A] Lecture 4. Higher-Order Functions &amp; Project 1: The Game of Hog