ApacheThrift的简单使用----------------------1.简单介绍Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它
Apache Thrift的简单使用
----------------------
1. 简单介绍
Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自动生成服务代码框架。用户只要在其之前进行二次开发就行,对于底层的RPC通讯等都是透明的。目前它支持的语言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml.
2. 下载与安装
可以在http://incubator.apache.org/thrift/download/去下载它的最新版本,目前最新版本是0.5.0。另外你也可以check出它的svn,方法如下:
svn co http://svn.apache.org/repos/asf/thrift/trunk thrift
cd thrift
在它的jira中看到,它的0.6版本也很快就会出来了。
我的本本是debian 6.0,如果用ubuntu的兄弟安装方法也是一样的
这时thrift的代码生成器和一些库文件就生成好了。
你可以用如下命令看一下thrift的版本信息
3. 一个简单的例子
在thrift源代码目录有一个叫tutorial的目录,进行其中后运行thrift命令生成相应的服务代码:
运行完之后会在当前目录看到一个gen-cpp目录,其中就是thrfit命令生成的代码
这时你cd到tutorial/cpp目录,运行make,生成相应的CppServer与CppClient程式。
这时你可以用./CppServer运行服务端,让其监听一个特定的端口
这时你可以用./CppClient运行客户端程式,让其去连接服务端,调用其所对应的服务。默认调用后会输出如下信息:
如果你的终端中也出现了如上的信息,恭喜你,运行成功了。如果在运行CppServer的时候找不到动态库,看看你是不是运行了make install,如果运行了,再运行一下sudo ldconfig试试。再用ldd CppServer看一下它有没有找到相应的动态库了。
4. 例子分析
4.1 Thrift IDL的分析
这边有两个IDL文件,内容如下:
4.2 服务端与客户端代码的分析
4.2.1 c++服务端
在tutorial/cpp目录中的CppServer.cpp是它的服务代码,主要分成两部分,
一部分是main方法用于做一些初始化与服务的启动,第二部分对于IDL中定义的接口的实现
另一部分如下:
4.2.2 c++客户端
4.2.3 其它代码的实现
在tutorial目录中有其它代码的例子,如erl,java,python,perl,ruby等。
5 参考
1. http://incubator.apache.org/thrift/
2. http://incubator.apache.org/thrift/static/thrift-20070401.pdf