C Programer  - 讨论区

标题:使用cppcms开发高性能JSON_RPC服务

2014年01月24日 星期五 17:50

对于中小型互联网应用,开发语言并不会成为系统性能的瓶颈,但对于大型互联网应用,开发语言的影响就至关重要了。使用C++开发WEB服务是规避此瓶颈的杀手锏。cppcms是一套C++语言的Library,主要用于开发WEB应用,提供http、fastcgi、scgi协议的支持,可以很方便的融入现有的架构体系中。cppcms内置JSON_RPC的支持,可以快速构建高性能的JSON_RPC服务。

一个简单的JSON_RPC服务示例代码如下:

 

#include <cppcms/application.h>
#include <cppcms/applications_pool.h>
#include <cppcms/service.h>
#include <cppcms/http_response.h>
#include <cppcms/rpc_json.h>

#include <exception>
#include <iostream>

using namespace std;
using cppcms::rpc::json_rpc_server;
using cppcms::rpc::json_method;

class json_service : public json_rpc_server {
public:
    json_service(cppcms::service &srv) : json_rpc_server(srv) {
        bind("sum",json_method(&json_service::sum,this),method_role);
        bind("div",json_method(&json_service::div,this),method_role);
    }
    void sum(int x,int y) {
        return_result(x+y);
    }
    void div(int x,int y) {
        if(y == 0) {
            return_error("Division by zero.");
        } else {
            return_result(x/y);
        }
    }
        
};

int main(int argc,char **argv) {
    try {
        cppcms::service srv(argc,argv);
        srv.applications_pool().mount(
            cppcms::applications_factory<json_service>()
        );
        srv.run();
    } catch (exception const &e) {
        cerr << e.what() << endl;
    }
    return 0;
}

 

使用curl作为客户端调用服务的示例:

curl -v -H "Content-Type: application/json" -d '{"method":"sum","params":[100,1000],"id":1}' http://localhost:8080/json_services

参考资料:

http://cppcms.com/wikipp/en/page/main

http://cppcms.com/wikipp/en/page/cppcms_1x_json_rpc

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号