thrift是Facebook开源出来的项目,现在交给了Apache来管理。thrift是用来针对不同语言系统之间数据调用的。thrift支持c,c++,Erlang,java,python,ruby,php等语言。thrift允许定义一个简单的定义文件中的数据类型和服务接口,这个文件就是IDL(Interface Definition Language),以作为输入文件,编译器生成代码。简单的说就是thrift定义了统一的文件(对象或者结构体,服务接口),使用thrift的编译器能够生成对应语言的代码文件。thrft之所以是跨语言的原意就是他通过语言无关的自定义语言来生成语言相关的代码。
仰望明天thrift服务端的c++语言实现
1.thrift 概念1
thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。
thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。
thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。
2.生成c++语言的thrift服务端
利用thrift软件框架进行开发要首先进行环境的搭建,安装thrift运行库。
基本流程如下:
1)定义数据类型和服务接口文件:test.thrift;
2)利用代码生成引擎生成服务端框架,thrift --gen cpp test.thrift;
3)在./gen-cpp/test_server.skeleton.cpp文件中添加定制的服务;
4)编写客户端程序向服务端请求服务。
详细过程可以参加注释2给出的链接地址。
thrift定义了自己的数据类型,从而实现了跨语言平台之间的数据交换,关于thrift数据类型的详细说明可以参加注释3给出的链接地址。
3.php客户端
基于c++语言实现的thrift服务端程序经常被用在网站的后台提供实时且高效的服务,通常客户端程序是php语言的实现版本。只要根据数据类型和服务接口文件test.thrift生成php语言的接口文件即可用来调用。方法是thrift --gen php test.thrift,调用该命令后会在工作目录下生成./gen-php目录,里面有php语言的接口文件。
注释:
package net.johnc.thriftimport org.apache.thrift.TException
public class TestImpl implements Test.Iface {
public void ping(int length) throws TException {
System.out.println("calling ping ,length=" + length)
}
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)