热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Thrift的简单使用

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


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



)

下面是一个简述:

































































类型

描述

bool

true, false

byte

8位的有符号整数

i16

16位的有符号整数

i32

32位的有符号整数

i64

64位的有符号整数

double

64位的浮点数

string

UTF-8编码的字符串

binary

字符数组

struct

结构体

list

有序的元素列表,类似于STL的vector

set

无序的不重复元素集,类似于STL的set

map

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. }  





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

 









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








[cpp]


view plain


copy


print


?










  1. 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示例,想知道详细的可以去看看。



Thrift的简单使用




推荐阅读
author-avatar
小菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有