模拟生产环境使用thrift c++版
1. 简介
本文简单的模拟了实际生成环境场景中使用的C/S模型,使用thrift作为框架来进行开发,服务端实现了两个接口,使用ThreadPoolServer模型提供服务,由于只是学习thrift相关的使用,本文的代码不是很严谨,代码设计基本没有,请阅读本文之前最好有基本的thrift相关的知识。如
* thrift文件中的基本数据类型
* thrift文件中的简单的结构体定义
* 如何用thrift文件生成代码
2. thrift文件
在生成环境中,每次调用rpc都必须要有返回值,以标识rpc在业务层面的成功与否。
本次实验定义了一个通用返回结构体,由于thrift文件支持包含语法,所以将该结构体
定义在comm.thrift文件中,用于被其他thrift文件包含
comm.thrift:
struct ReturnMessage
{
1: i32 ret_code;
2: string ret_msg
}
业务接口和接口定义test.thrift文件:
include "comm.thrift"
namespace cpp xbshop.manage.login
struct ReqLoginService
{
1: string strUserName;
2: string strPassword;
}
//req+服务名定义的结构体代表该服务的请求参数,res+服务名定义的结构体代表该服务的返回参数
struct ResLoginService
{
1: comm.ReturnMessage stReturnMessage, //注意使用包含文件中定义的结构体时,需要加上文件名前缀,例如使用comm.thrfit文件中的结构体,需要加上comm.
2: bool logged
}
struct ReqQryOrderService
{
1: string order_no;
}
struct ResQryOrderService
{
1: comm.ReturnMessage stReturnMessage,
2: i64 total_fee;
}
//定义了两个服务,一个是LoginService登录服务,一个是QyrOrderService查询订单服务
service LoginService
{
comm.ReturnMessage login(1: ReqLoginService reqParams);
}
service QryOrderService
{
ResQryOrderService qryOrder(1: ReqQryOrderService reqParams);
}
使用命令thrift -r –gen cpp test.thrift , -r参数的含义是编译test.thrift文件的同时还会编译其包含文件comm.thrift