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