25

04-2014

来现在这个公司之后,开始接触了thrift接口,从开始的一窍不通,到现在终于是能够理解并且熟练使用了,当然理解的不是很深,但是足够可以用了,一直想找个时间总结一下的。现在终于是可以简单的总结一下了。

百度百科是这样定义thrift的thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

有一定开发经验的人,都应该懂利用接口和模块化的好处。thrift可以很方便的实现跨语言的通信,并且其效率非常的高。是由facebook开发的。其实其原理是根据开发人员定义的.thrift文件,用生成器生成相应语音的接口脚本。这个脚本主要是由数据类型和server组成。并且是强类型的。对于php开发人员来说也是要特别注意的,因为php是弱类型的。你用’1′和1在其他时候使用可能感觉不到,但是在用thrift时就要注意了。下面就结合一个thrift文件简单将一下。

thrift文件内容如下

首先看service,定义了一个multiCall方法,传入参数是GenData类型的一个数据,后面这个genData不用关系可以随便定义,因为这就好像是funtion a($b)里面的$b一样,他是给接口内部使用的,接收传入参数的,需要注意的是,这个数据类型是前面定义的,struct GenData这个数据类型,他有4个参数,三个必选参数,一个可选参数。一个string类型的nameSpace,一个string类型的funcName,一个二维数组的params,一个可选的string类型的token。这几个参数是需要一一对应的,名字,类型也需要一样。ParamItem是一个返回类型,即调用这个接口后的返回值,同理也是在上面定义的。大家可以看一下是一个道理。包含文件,是thrift的一个文件。总体的意思就是,你客户端的传入产生和服务端的返回参数要符合接口文件的定义。

这个文件有了,就需要用接口编译工具编译一下,下载一个thrift.exe,我用的是0.8的。

我以php为例;编译后会生成一个gen-php目录,目录里面是以接口文件定义的service目录,里面有两个文件,一个server一个类型,都是php文件。

使用:

客户端:

这里也使用php做客户端,用什么语言做客户端,你需要下载对应语言的thrift框架库,包含。

这样服务端就可以接收到

服务端根据传入参数进行操作就可以了。就是需要满足接口文件返回值数据类型的定义。只要参数可以传递,我们就可以根据自己的需要和逻辑加上彼此的约定来实现功能了。

使用起来还是很好用的。尤其是配合try catch使用

程序本天成,妙手偶得之!我们只是代码的搬运工!

转载请注明:http://www.521php.com/archives/1691/

目前有1 条留言

  1. 2014年04月26日 下午 1:56 任务易   |  引用  |  #1     

    谢谢分享,学习了

发表评论

昵称:

网址:

eg.博客主题调用的是Gravatar头像,你可以通过邮箱注册获得头像.
/ 快捷键:Ctrl+Enter