Thrift框架使用教程

Thrift框架使用教程

注:这个框架的强大之处在于它只需要写一个简单的thrift脚本就能生成不同语言的SourceCode,这些SourceCode包含了几乎所有Client端以及Server端代码,

你只需要简单几句代码的调用就能达到想要的结果,轻松实现C-S交互的跨平台。

1.安装

下载页面:http://thrift.apache.org/download/

              其中,thrift-0.8.0.tar.gz 是Thrift对应不同语言的源码,我们需要它来编译Library。

              Thrift compiler for Windows (thrift-0.8.0.exe)是针对windows平台的编译器,我们需要它在windows上编译thrift脚本。

 

2.编写thrift脚本

编写thrift脚本的基本教程在官方wiki上有:

              http://wiki.apache.org/thrift/Tutorial

 

以下是一个最简单的例子:

 

struct RequestStruct

{

              1: i32 requestId

              2: i32 requestData

}//定义一个请求包结构

 

struct ResponseStruct

{

              1: i32 requestId

              2: string responseData

}//定义一个响应包结构

 

 

//定义一个收发数据服务接口

service SharedService

{

              ResponseStruct SendReceive(1: RequestStruct request)

}

 

我们把它命名为sample.thrift

 

3.编译thrift脚本

解压下载好的windows编译器,执行以下命令行对脚本进行编译:

              thrift_0.8.0_win32.exe -r --gen csharp sample.thrift

其中,上面的csharp是要编译的目标语言,可以替换成你想要的语言。

编译生成的代码在gen-csharp文件夹里。

 

4.编译Library

解压下载好的Thrift源码,在lib文件夹下找到你所需语言的源码工程,使用该工程编译所需的Library。

 

5.使用

(1) 先把从thrift脚本编译得到的代码和编译好的Library添加到你的项目里。

 

(2) Client端使用例子:

              //创建传输协议,这里用的是Socket,你也可以用Http等其它Thrift支持的协议

              TTransport transport =newTSocket("localhost", 9090);

       //创建数据交互协议,这里用的是Binary,你也可以用JasonThrift支持的协议

       TProtocol protocol =newTBinaryProtocol(transport);

       //创建client,这个Client是由thrift脚本自动生成的

       SharedService.Client client = newSharedService.Client(protocol);

       //与服务器交互开始

       transport.Open();

       //发送一个请求并等待服务器返回结果

       //请求包是由脚本的SendReceive接口的参数指定,下面的request就是请求包

              //响应包是由脚本的SendReceive接口的返回值指定,下面的result就是接收包

       RequestStruct request = newRequestStruct

       {

              RequestId= 0,

              RequestData= 1

       };

       ResponseStruct result = client.SendReceive(request);

       //停止交互

       transport.Close();

 

(3)Server端使用例子:

       //Server端首先要实现Iface接口,在这里对client端的请求进行处理,返回结果数据

       classServerHandler :SharedService.Iface

       {

              publicServerHandler(){}

 

              publicResponseStruct SendReceive(RequestStruct request)

              {

                     ResponseStruct result = newResponseStruct()

                     {

                            RequestId = request.RequestId,

                            RequestData ="This is a return value from server"

                     };

                     return result;

              }

       }

 

       //根据我们上面实现的请求处理类,创建一个请求处理器

       ServerHandler handler = newServerHandler();

       SharedService.Processor processor = newSharedService.Processor(handler);

       //创建Server端传输协议并监听端口,这里的传输协议要与client端一致

       TServerTransport serverTransport =newTServerSocket(9090);

       //创建一个server,你也可以用多线程等Thrift支持的Server

       TServer server =newTSimpleServer(processor, serverTransport);

       //启动server并开始监听

       server.Serve();

 

 

好了,欢呼吧,就这样完成了,你是不是很惊讶使用thrift完成一个基本的C-S交互居然如此简单!!!!

 

 

 

 

 

你可能感兴趣的:(windows,框架,server,脚本,语言,library)