posts - 155,  comments - 601,  trackbacks - 0
Thrift出自Facebook用于后台各个服务间的通讯,Thrift的设计强调统一的编程接口的多语言通讯框架.

下面将通过一个实例来讲解Thrift的使用方法:

1. 定义 idl文件,用来描述将要生成的数据通讯内容API接口,以下面一个简单例子来说明service.idl
namespace java com.xmatthew.thrift.demo

struct Info {
  
1: string key,
  
2: binary value,
}

service    DemoService{
    void add(
1:string key, 2:binary value);
    binary get(1:string key),
}
说明:
namespace 表示目录结构,生成java时会产生java的package
struct 表示数据结构体,在java下是一个bean对象,在c则对应struct结构
service 表示服务类, 在java会生成DemoService.java。 提供两个接口方法,客户端和服务端都会拥有

2. 生成特定语言源文件,下面以java为例

thrift-0.6.0.exe -r --gen java service.idl

运行成功后,会生成gen-java文件,下面就是源码文件
本例中会产生两个文件
Info.java
DemoService.java

3. 开发客户端
有了这两个文件后,接下来就需要把thrift的java类库引进来,就可以开发客户端部分了

首先新建一个LocalClient类,继承于DemoServer.Client类,源码如下:
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;

import com.xmatthew.thrift.demo.DemoService.Client;

/**
 * 
@author xiemalin
 *
 
*/
public class LocalClient extends Client {
    
private TTransport transport;
    
    
public LocalClient(TProtocol prot,int port, TTransport ftransport) throws TTransportException {
        
super(prot);
        
this.transport  = ftranspor