1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 webcppd v1.0.8 发布,升级为 httpevent 下载

本帖由 漂亮的石头2017-03-08 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    487,979
    赞:
    47
    httpevent


    c++ and lua web framework

    缘起


    httpevent是webcppd的继承者。

    由于webcppd内核采用的是Poco内置的多线程服务器,虽然性能不错,但是依然存在不小的提升空间。

    httpevent不仅包含webcppd的全部特性,而且改进和增加了新的功能

    主要改进


    httpevent主要在以下三个方面了改进了webcppd:


    • 内核采用libevent2,性能倍增,稳定性更好,对信号处理更友好


    • handler采用基于libevent2的轻包装类,不再受限于Poco。


    • 不仅轻松支持C++开发,而且轻松支持lua开发
    基本特性


    • HTTP 1.1


    • HTTPS


    • 支持多种服务器类型选择,可通过配置文件轻松配置


      • 0=static


      • 1=0+dynamic


      • 2=1+session


      • 3=1+cache


      • 4=3+session


      • 5=all


      • default=5

    • c++ 开发


    • lua 开发(支持lua v5.1,v5.2,v5.3以及luajit)


    • 会话管理


    • 自动缓存管理


    • ip动、静态黑名单


    • 正则路由(PCRE)


    • 防盗链


    • 日志
    lua api


    使用方法参见plugin/lua


    • httpevent.response : lua 对象实例


      • send_head


      • send_body

    • httpevent.request : lua 对象实例


      • get_client


      • get_method


      • get_uri


      • get_user_agent

    • httpevent.ROUTE : 一个 lua 表


    • httpevent.CONFIG : 一个 lua 表


    • httpevent.form_tool : lua 对象实例 包含GET,POST,可上传域为upload的文件


      • has


      • get

    • httpevent.cookie_tool : lua 对象实例


      • has


      • set


      • get

    • httpevent.session_tool : lua 对象实例


      • has


      • set


      • get

    • httpevent.util_tool : lua 对象实例


      • error


      • submit


      • redirect
    c++ hello world


    #include <httpevent.hpp>
    namespace httpevent {
    class hello : public view {

    void handler(const request& req, response& res) {
    res.send_head("Content-Type", "text/plain;charset=UTF-8")
    .send_body("hello,world");
    }

    };
    }
    lua hello world


    local hello={}
    function hello.main()
    httpevent.response:send_head("Content-Type", "text/plain;charset=UTF-8")
    :send_body('hello,world')
    end

    return hello
    服务器选型


    • 做纯静态文件服务器,推荐0型


    • 作后端应用服务器,推荐1、2、3、4型,视乎业务需要选择是否需要缓存管理器或(和)会话管理器


    • 作通用服务器,推荐选择默认的5型
    自动缓存服务


    httpevent提供系统级的缓存服务,对于3、4、5型服务器,只要没有调用submit方法,系统都将自动缓存内容。 一旦调用submit方法,系统就会认为该内容无需缓存。

    压力测试

    以下数据以3型服务器为基准,压力测试工具为ab(ubuntu 16.10,i5-5200U,4G,笔记本)



    • c++ hello world

      ab -c500 -n 50000 http://localhost/
      Requests per second: 24538.13 [#/sec] (mean)

    • lua hello world

      ab -c500 -n 50000 http://localhost/demo/hello.lua
      Requests per second: 20470.11 [#/sec] (mean)
    依赖


    • libevent v2.1.8+


    • Poco framework v1.6+


    • lua devel v5.1+


    • openssl devel
    安装


    build.sh

    配置


    /etc/httpevent/httpevent.properties

    运行


    sudo systemctl enable httpevent
    sudo systemctl (start|stop|restart|status) httpevent
    优化使用建议


    • C/C++可能比lua更适合需要密集计算的业务


    • 尽量使用通用性较强的路由规则,缩短路由表的长度


    • 绝不要require包含lua api的模块,用dofile替代
    下载地址

    webcppd v1.0.8 发布,升级为 httpevent下载地址
     
正在加载...