Thrift的简单使用

Thrift的简单使用 - Season In The Code - 博客频道 - CSDN.NET


Thrift的简单使用


分类:
Facebook技术


3658人阅读
评论(0)
收藏
举报

 

Thrift(  
http://github.com/facebook/thrift

)是一个跨语言服务部署架构,2007年由Facebook开发,之后在2008年加到Apache计划中(  
http://incubator.apache.org/thrift/

)。它是类似于SOAP,CORBA以及Google Protocol Buffers这样的服务架构。Thrift提供了完整client/server RPC的实现,只需要定义好中间定义语言,就可以生成指定语言的代码(包括client和server)。

 

Thrift能生成的语言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml

 

 

使用thrift,以下例子你可以在
 
http://incubator.apache.org/thrift/

中找到。

定义.thrift接口文件。



你需要知道thrift所支持的类型( 
http://wiki.apache.org/thrift/ThriftTypes

)

下面是一个简述:

类型描述
booltrue, false
byte8位的有符号整数
i1616位的有符号整数
i3232位的有符号整数
i6464位的有符号整数
double64位的浮点数
stringUTF-8编码的字符串
binary字符数组
struct结构体
list<type>有序的元素列表,类似于STL的vector
set<type>无序的不重复元素集,类似于STL的set
map<type1,type2>key-value型的映射,类似于STL的map
exception是一个继承于本地语言的exception基类
service服务。包含多个函数接口(纯虚函数)

 

 

在了解过thrift内置类型之后,我们可以简单地定义一个服务,把用户的信息从前端发送到服务器,然后当需要的时候再从服务器获取某个用户的信息:

 
      
[python] view plain copy print ?
  1. struct UserProfile {  
  2.   1: i32 uid,  
  3.   2: string name,  
  4. }  
  5.   
  6. service UserStorage {  
  7.   void store(1: UserProfile user),  
  8.   UserProfile retrieve(1: i32 uid)  
  9. }  
struct UserProfile { 1: i32 uid, 2: string name, } service UserStorage { void store(1: UserProfile user), UserProfile retrieve(1: i32 uid) }

把以上代码存到 service.thrift文件中。

 



如果我们需要用python来做输出语言。就在命令行中输入:

 
      
  1. thrift  –r  –gen  py  service.thrift  
thrift –r –gen py service.thrift

之后,你就会在当前目录下看到一个新建的目录叫”gen-py”,在里面你就可以看到由service.thrift生成的python服务接口代码。

 

UserStorage.py中的Client就是客户端调用的接口,只需要创建一个Client实例就可以调用例子中的store和retrieve的接口。而Iface就是服务端所需要实现的接口,对应例子中的store和retrieve的逻辑处理。

 

ttypes.py是存放枚举类型的结构。

 

UserStorage-remote.py是一个客户端调用服务接口的demo示例,想知道详细的可以去看看。

posted on 2012-11-20 00:34  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/11/20/2778262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值