zoukankan      html  css  js  c++  java
  • C++异步网络库workflow及基于workflow实现的网络框架wfrest的安装使用心得

    最近在划水时接触到一个非常强大的开源C++异步网络库workflow以及其一种实现框架wfrest

    原帖链接:

    workflow: https://www.zhihu.com/question/41609070/answer/2073049547

    wfrest: https://www.zhihu.com/people/liyingxin1412

    作者工作时主要使用的java语言,然而也偶尔需要用到c++,也是第一次接触到c++的网络服务器,这也可以作为一种C++/Java之间的RPC通信方式,因此进行了简单了解。

    安装

    安装环境:ubuntu20.04

    首先需要前往Git下载workflow与wfrest

    workflow: https://github.com/sogou/workflow

    wfrest: https://github.com/wfrest/wfrest

    使用Git clone命令下载到本地,按照项目中的readme文档install项目

    安装成功后,可以在/usr/local文件夹中看到libwfrest.a libworkflow.a libworkflow.so 其中.a .so分别为静态库与动态库文件(有其中的一个就可以使用,只是二者有区别,会影响项目文件的大小)

    使用

    创建一个新的C++项目

    在CMakeList文件中链接库wfrest workflow ssl crypto pthread z

    target_link_libraries(webserver wfrest workflow ssl crypto pthread z)
    

    如果不使用cmake工具,则需要在编译时手动链接这些库
    编译成功后,即可启动一个服务,附作者的demo

    #include "wfrest/HttpServer.h"
    using namespace wfrest;
    
    int main()
    {
        HttpServer svr;
    
        // curl -v http://ip:port/hello
        svr.GET("/hello", [](const HttpReq *req, HttpResp *resp)
        {
            resp->String("world\n");
        });
        // curl -v http://ip:port/data
        svr.GET("/data", [](const HttpReq *req, HttpResp *resp)
        {
            std::string str = "Hello world";
            resp->String(std::move(str));
        });
    
        // curl -v http://ip:port/post -d 'post hello world'
        svr.POST("/post", [](const HttpReq *req, HttpResp *resp)
        {
            // reference, no copy here
            std::string& body = req->body();
            fprintf(stderr, "post data : %s\n", body.c_str());
        });
    
        if (svr.start(8888) == 0)
        {
            getchar();
            svr.stop();
        } else
        {
            fprintf(stderr, "Cannot start server");
            exit(1);
        }
        return 0;
    }
    
  • 相关阅读:
    shipyard-----------docker容器的可视化管理
    dockerfile制作镜像
    docker容器ip地址的设定
    docker镜像文件的安装和容器的操作
    Docker网络模式
    docker整体了解
    spring的aop学习(1)
    SqlSessionFactory的创建过程
    spring+springMVC+Maven+mysql环境搭建
    dubbo入门示例
  • 原文地址:https://www.cnblogs.com/xusirui/p/15798663.html
Copyright © 2011-2022 走看看