Thrift跨语言样例开发

标签: thrift 语言 开发 | 发表时间:2015-01-30 16:12 | 作者:san1156
分享到:
出处:http://blog.csdn.net

一、开发环境

  • 1、有一台部署好thrift框架的电脑,本人采用centos5下的thrift框架

(部署步骤可以参看 http://blog.csdn.net/san1156/article/details/41146483

  • 2、部署的thrift环境需要支持java和c++

二、样例功能

  • 使用c++做服务端,java做客户端,客户端远程调用服务端的服务

三、开发步骤

  • 1、创建接口IDL文件,后缀名为.thrift
文件名:strReversed.thrift
struct StrInfo {
  1: string str,
}
service StrScheduler{
   bool addStr(1:StrInfo str),
   StrInfo getStr()
}
  • 2、编译生成对应语言的头文件
编译语句: 
thrift -gen cpp strReversed.thrift
thrift -gen java strReversed.thrift
  • 3、编译之后,本目录下生成文件夹,类似gen-cpp、gen-java、 gen-py,cd进去,可以看到对应语言的头文件
gen-cpp下文件列表:
-rw-r--r-- 1 root root    281 Apr  9 15:05 strReversed_constants.cpp
-rw-r--r-- 1 root root    375 Apr  9 15:05 strReversed_constants.h
-rw-r--r-- 1 root root   1619 Apr  9 15:05 strReversed_types.cpp
-rw-r--r-- 1 root root   1230 Apr  9 15:05 strReversed_types.h
-rw-r--r-- 1 root root  16679 Apr  9 15:05 StrScheduler.cpp
-rw-r--r-- 1 root root   9410 Apr  9 15:05 StrScheduler.h
-rw-r--r-- 1 root root   4715 May 11 16:13 StrScheduler_server.skeleton.cpp
gen-java下文件列表:
-rw-r--r-- 1 root root 10754 May 11 15:28 StrInfo.java
-rw-r--r-- 1 root root 50847 May 11 15:28 StrScheduler.java
  • 4、利用编译出来的头文件,并编写server代码和client代码
修改文件列表
C++服务端:  StrScheduler_server.skeleton.cpp
java客户端:增加文件  JavaClient.java
  • 5、利用该语言的编译工具,生成可执行文件

例如:

C++:g++ -DHAVE_NETINET_IN_H -I/usr/local/include/thrift -I/usr/local/include/boost -I../gen-cpp -L/usr/local/lib/ -lthrift strReversed_constants.cpp strReversed_types.cpp StrScheduler.cpp StrScheduler_server.skeleton.cpp -o CppServer

Java:javac *.java

四、测试

  1. 启动服务,cd到gen-cpp目录下,执行命令:./CppServer
  2. 启动客户端,cd到gen-java目录下,执行命令:java JavaClient zhangshuaipeng
  3. 服务端收到数据 zhangshuaipeng

五、thrift支持的数据格式

类型           描述
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       服务,包含多个函数接口(纯虚函数)

六、其他

  • 1、C++客户端的开发
    • 1.1、添加文件 client.cpp
    • 1.2、编译语句:

g++ -DHAVE_NETINET_IN_H -I/usr/local/include/thrift -I/usr/local/include/boost -I../gen-cpp -L/usr/local/lib/ -lthrift strReversed_constants.cpp strReversed_types.cpp StrScheduler.cpp client.cpp -o CppClient

作者:san1156 发表于2015-1-30 16:12:02 原文链接
阅读:56 评论:0 查看评论

相关 [thrift 语言 开发] 推荐:

Thrift跨语言样例开发

- - CSDN博客推荐文章
1、有一台部署好thrift框架的电脑,本人采用centos5下的thrift框架. (部署步骤可以参看 http://blog.csdn.net/san1156/article/details/41146483 ). 2、部署的thrift环境需要支持java和c++. 使用c++做服务端,java做客户端,客户端远程调用服务端的服务.

thrift总结 - 跨语言服务开发

- - 企业架构 - ITeye博客
IBM-Apache Thrift - 可伸缩的跨语言服务开发框架. Thrift入门及Java实例演示. Thrift是一个软件框架,用来进行 可扩展且跨语言的服务的开发. thrift允许你定义一个简单的定义文件中的数据类型和服务接口. 以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言.

Apache Thrift - 可伸缩的跨语言服务开发框架

- - 开源软件 - ITeye博客
转载自:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/. 简介: Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架. 本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构、开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项.

Apache Thrift - java开发详解

- - 编程语言 - ITeye博客
2、编写IDL文件 Hello.thrift. 4、编写实现类、实现Hello.Iface:. 5、编写服务端,发布(阻塞式IO + 多线程处理)服务.      * 阻塞式、多线程处理 .             //设置传输通道,普通通道  .             //使用高密度二进制协议  .

多语言协作工具thrift

- - CSDN博客云计算推荐文章
如果讨论每个语言的特点,相信各个语言的程序员都能说得天花乱坠,争的面红耳赤. 但是在如今大互联网时代,没有哪种语言是银弹,各种语言都各有所长. 为了截取各家之长,各种跨语言通信框架涌现出来,thrift就是其中的一个典型代表. thrift是基于socket或者http协议来进行通信的,所以适合分布式的服务器之间进行通信.

【Thrift二】Thrift版的Hello World

- - 开源软件 - ITeye博客
本篇,不考虑细节问题和为什么,先照葫芦画瓢写一个Thrift版本的Hello World,了解Thrift RPC服务开发的基本流程. 在Intellij中创建一个Maven模块,加入对Thrift的依赖,同时还要加上slf4j依赖,如果不加slf4j依赖,在后面启动Thrift Server时会报错.

【Thrift一】Thrift编译安装

- - 开源软件 - ITeye博客
上面这段话选自Apache对Thrift的一句话介绍,Thrift是一个高性能的RPC服务框架. 在技术选型时,有如下三方面的需求时,考虑使用Thrift. 2.请求和响应的数据传输量大. 个人认为在没有特别strong的理由情况下,慎用Thrift. HTTP请求通常都能够满足需求,使用Thrift带来很多开发上的额外的工作量,一个简单的服务,就要写客户端代码,.thrift接口定义以及服务器端的服务响应代码,简单的事情复杂化.

Thrift入门试用

- - Java - 编程语言 - ITeye博客
在新的项目中公司在平台内部系统间使用Thrift通讯,都没有听说过. 然后听同事说,是跨语言Socket通讯的开源组件. 1.跨平台和语言的Socket通讯组件. 2.根据伪代码的结构语言定义对象和服务结构,然后生成各语言的代码和接口. 3.各语言根据组件提供的库,编写客户端和服务器端程序. 服务器端实现接口并编写业务逻辑.

thrift快速入门实例

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. Thrift是Facebook的核心框架之一,使不同的开发语言开发的系统可以通过该框架实现彼此的通信,类似于webservice,但是Thrift提供了近乎变态的效率和开发的方便性,是webservice所不能比拟的.  * @author 54chen(陈臻) [chenzhen@xiaomi.com czhttp@gmail.com] .

Thrift原理简析(JAVA)

- - ITeye博客
    本文以UserService为例,描述一下使用thrift的方式,以及其原理...     首先下载和安装thrift客户端,比如在windows平台下,下载thrift.exe,不过此处需要提醒,不同的thrift客户端版本生成的API可能不兼容.本例使用thrift-0.9.0.exe;通过"--gen"指定生成API所适配的语言.本实例为生成java客户端API..