首页 > 编程语言 >paozhu c++ web framework 框架原理

paozhu c++ web framework 框架原理

时间:2022-12-11 23:22:53浏览次数:79  
标签:web users 框架 文件 c++ framework orm 线程 paozhu

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输出教程

标签:web,users,框架,文件,c++,framework,orm,线程,paozhu
From: https://www.cnblogs.com/paozhu/p/16974855.html

相关文章

  • C++代码到可执行二进制文件的过程
    C++工程从代码到可运行文件要经历四个过程,分别是预编译、编译、汇编、链接。1、预编译(1)将所有的#define删除,并展开宏定义。意味着代码替换。(2)处理所有的条件预编译指令,......
  • C++
    通讯录管理系统1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中......
  • JavaWeb
    JavaWeb1、基本概念1.1、前言web开发:web,网页的意思,www.baidu.com静态webhtml,css提供给所有人看的数据始终不会发生变化!动态web淘宝,几乎所有的网站都是动态......
  • [BUUCTF][WEB][极客大挑战 2019]PHP 1
    打开靶机URL看到字面提示因为每次猫猫都在我键盘上乱跳,所以我有一个良好的备份网站的习惯不愧是我!!!说明该网站有备份,说不定放在了Http服务器的某个目录下那么这里我们......
  • [BUUCTF][WEB][极客大挑战 2019]BabySQL 1
    靶机打开url界面上显示,它做了更严格的过滤。看来后台是加了什么过滤逻辑老规矩先尝试时候有sql注入的可能,密码框输入123'爆出sql错误信息,说明有注入点构造万能密码注......
  • [BUUCtF][WEB][ACTF2020 新生赛]Upload 1
    打开靶机url,右键查看网页源代码其中有一段代码<divclass="light"><spanclass="glow"> <formenctype="multipart/form-data"method="post"onsubmit="returncheck......
  • [BUUCTF][WEB][极客大挑战 2019]Upload 1
    打开靶机url,看到一个页面可以上传文件上传一个图片试一下,发现上传的路径是http://a7661b03-4852-41de-9ea4-d48c47cb50f0.node4.buuoj.cn:81/upload_file.php试一下获......
  • c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
    前言说到编译工具,在windows下必言vs,在linux下必言make。0.shell如果编译一个库的命令太复杂或者为了方便,我们更愿意将编译命令写成一个shell脚本来执行,比如build.sh编译ffmp......
  • c++构建工具之cmake使用小结
    0.前言使用cmake的过程先是要编写一个cmakelists.txt的文本,然后使用cmake命令生成对应平台的工程。在windows下命令行或者使用cmakegui工具,生成v......
  • Web应用开发必知的HTML 5编码实践方法
    本人作品,转载请注明出处HTML5现在的发展相当迅速,越来越多的浏览器开始支持HTML5的新特性,也涌现出越来越多的基于HTML5的App应用,毫无疑问,作为web开发者,必须了解和懂得HTML......