Thrift使用文档详解(一步一步跟着做就可以)

原创 2015年07月09日 09:57:29

Linux下使用Thrift详细步骤

一、下载

下载 boostc++静态库,必须),官方网址 

http://sourceforge.net/projects/boost/files/boost/1.58.0/

 

下载thrift 0.8.0版本(由于版本较老官方没有,可以自行下载)

下载thrift-0.8.0.exe (大部分是编译产生,但是由于0.8.0版本无法产生有效的可行文件,所以要下载使用,不过网上资源基本无法找到,我在所需文件的包中给了一版)

下载libevent-2.0.22-stablewindows版本所需,Linux下不需要)

 

二、上传

Linux虚拟机上创建目录叫thrift,并将boostthrfit压缩文件上传(boost较大所需时间比较长)

 

 

三、修改文件夹中所有文件的权限

由于linux对文件的权限要求比较高,所以要将文件夹中的所有文件权限修改为可执行,在此推荐一款修改权限的软件WinSCP,这款软件不仅能修改文件夹本身同时还能修改其子文件夹和文件。

 

四、编译boost

(所有安装请不要指定目录安装,除非你能找到,否则会导致后边无法安装thrift,因为找不到路径)

输入 ./bootstrap.sh(如果不是将所有子文件改为可执行时,此处可能导致无法通过) 

再输入  ./b2

最后执行  sudo ./b2  install

 

第一次圈出来的时未将全部文件改为可读可执行文件夹而导致结果

第二次圈出来的是正确结果

第三次是输入./b2后的效果

 

五、编译thrift

1) tar -xvf thrift-0.7.0.tar.gz 解压缩文件

2) cd thrift-0.7.0 进入Thrift安装主目录

3) ./configure (可能出现权限不够,可以根据boost方法修改文件夹权限)

4) sudo make(此过程较慢)

5) sudo make install

 

然后再重新执行一次编译,原因是thrfit所产生的头文件和thrift文件方便查找,否则你在引入的时候不知道去哪找thrift相关的库文件和头文件,因此建议再编译一次并制定目录,由于你制定了目录,后期执行的时候又找不到执行命令会出现没有thrift这个命令的问题,所以建议编译两次,第二次编译代码从之前版本的第3步开始,并把之前的第3步改为如下:

./configure --prefix=/home/ngos/thrift/demo

 

所圈出的是thrift编译时产生的文件夹。

(--prefix=/root/thrift/File为要制定的生成路径,中间绝对不可以有空格)

六、制作.thrift文件

在做完以上几步之后再做.thrift文件编译才能产生正确的库,如果没有安装boost会产生头文件,但是不会产生依赖的库文件。

Demo.thrift文件内容如下

 

struct stuData{

        1:byte stuMemory, 

        2:i32 iLength,

 

service OptionalFun{

        void SaveData(1: stuData user), 

        stuData GetData()

}

 

网上也给出一些相关案例,在这我具体解释一下,因为这块花费了我一些时间去查资料。结构体里的内容可以写成如下格式,

struct stuData{

        1:required byte stuMemory, 

        2:required i32 iLength,

Required所代表的意义是必须添加此参数的赋值,如果在使用此结构体的时候此参数不复制是不正确的,把required换成optional则代表可选择填入此参数信息,如果不填入也可以。如果前面不加此标识符,则默认是optional

 

Service是你所要产生的接口,在编译的时候thrift会自动产生相关接口,在你调用此接口时会自行发送或接受你想要的数据。(由于前期研究较为浅薄,是否有client端接口还未验证,如有需要请自行查阅资料。)

 

七、生成相应的库文件和头文件

创建目录,把demo.thrift文件拷贝到该目录下,并在命令行中输入

thrift -r --gen cpp demo.thrift 

 

 

      

所圈出的是产生的新产生的文件,后边是产生文件夹中的内容,其中

OptionalFun_server.skeleton.cpp的内容是服务器程序,其中的内容可以按照自己需求更改。同时,我们拷贝一个Client.cpp到文件夹下修改,同时也更改OptionalFun_server.skeleton.cppOptionalFun_server.cpp,并进行内容上的修改。

把之前thrift产生的静态库和include文件拷贝到gen-cpp中,为了方便直接将include下的thrift文件夹中的内容全部拷贝到当前目录下,lib文件直接拷贝过来便可。

 

然后输入  make

再输入   ./CppServer 

再输入  ./CppClient 

OK,以上就是全部过程

 

Windows版本下使用Thrift详细步骤

建议使用vs 2010

1、准备相关的文件

thrift-0.8.0.tar.gz libevent-2.0.22-stable.tar.gzboost解压到一个文件夹下。

 

2、编译boost

1) 从开始菜单启动vs2010下的x64 win64 cmd窗口

 

2) BOOST下执行boostrap.bat生成相应版本的bjam

 

3) 输入 bjam.exe --toolset=msvc-10.0 architecture=x86 address-model=64 link=static --build-type=complete --with-system --with-thread --with-date_time --with-filesystem --with-serialization

4) 输入 b2 install  --toolset=msvc-10.0 --stagedir="C:\Boost\boost_vc_100" threading=multi debug release  

(根据本机电脑版本不同选择不同的编译窗口)

编译好了把产生的libinclude拷贝到boost文件夹下。(编译好的文件在cboost目录下)

 

2、准备环境

进入\thrift-0.8.0\lib\cppVS2010打开Thrift.sln,有libthrift,libthriftnb两个工程。

 

 

两个工程的区别是,libthriftnb工程是非阻塞(non-blocking)模式的服务器,非阻塞模式需要依赖libevent库。

 

libthrift工程配置:

libthrift>属性->C/C++->常规->附加包含目录->\boost

libthrift>属性->库管理器->常规->附加库目录->\boost\lib

 

libthriftnb工程配置:

libthriftnb>属性->C/C++->常规->附加包含目录->

\boost

\libevent-2.0.21-stable

\libevent-2.0.21-stable\include

\libevent-2.0.21-stable\WIN32-Code

 

libthriftnb>属性->库管理器->常规->附加库目录->

\boost\lib   

 

(根据名字不同选择不同自己写路径) 编译两个工程。

3、创建工程

Visual Studio 2010新建空程序。

gen-cpp中的文件和client客户端文件拷贝过来,目录结构如下

其中标红的是我自己写的程序,最初应该不产生。

 

 

4、配置项目属性

(由于windows版本只提供客户端版本所以不提供代码)

Sever工程 Server>属性->C/C++->常规->附加包含目录->\boost\boost_1_51

Sever工程 Server>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src

Sever工程 Server>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src\thrift

 

Sever工程 Server>属性->连接器->附加库目录->\boost\boost_1_51\lib

Sever工程 Server>属性->连接器->附加库目录->\thrift-0.9.1\lib\cpp\Debug

附加库目录指向的是刚刚编译出的Debug目录(或者release目录)

 

类似的,Client工程也做这样的配置。

Client工程 Client>属性->C/C++->常规->附加包含目录->\boost\boost_1_51

Client工程 Client>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src

Client工程 Client>属性->C/C++->常规->附加包含目录->\thrift-0.9.1\lib\cpp\src\thrift

 

Client工程 Client>属性->连接器->附加库目录->\boost\boost_1_51\lib

Client工程 Client>属性->连接器->附加库目录->\thrift-0.9.1\lib\cpp\Debug

 

至此以上windows端和linux端就介绍完全了!需要编写代码请自己编写吧。

 

 

 

 

Windows版本下使用Thrift0.9.2详细步骤

由于thrift0.9.2用到了openssl库,所以thrift 0.8.0版本的教程不适用此版本,所以重写此版本的服务器和客户端方法。

由于opensll为开源库,不同的电脑环境编译结果可能不一样,所以在此给出opensll1.0.1版本的静态库,省去编译麻烦,同时给出了所需要的头文件和源文件。

Boost文件编译模式没有改变,遵从thrift0.8.0版本即可。

Libthriftnb的配置方法也没有改变,遵从上一版本即可。

Libthrift的配置如下:

附加包目录下增加 \openssl-1.0.1h\inc32此文件夹,如下图:

 

 

 

库链接增加 openssl_lib文件夹中的两个文件,如下图(由于文件所在位置不一样路径不同):

 

 

然后编译,则可正常通过,服务器和客户端所配环境和上一版本相同。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

由浅入深了解Thrift(一)——Thrift介绍与用法

一、  Thrift简单介绍 1.1、  Thrift是什么?能做什么? Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过...
  • hjx_1000
  • hjx_1000
  • 2015年01月16日 16:27
  • 15319

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Thrift官方安装手册(译)

本篇是Thrift官网安装文档的翻译。介绍了Thrift安装的环境要求,以及在centos,Debian/Ubuntu,OS X和Windows的不同系统下的安装过程。并提出了一些安装过程中可能遇到的...

Thrift官方安装手册(译)

本篇是Thrift官网安装文档的翻译,原地址点击这里。Thrift之前是不支持Windows的。但是似乎0.9版本以后已经支持Window了。介绍了Thrift安装的环境要求以及在centos,Deb...

Thrift使用指南

本文转载自董的博客 1. 内容概要 本文档比较全面的介绍了thrift(关于thrift框架的介绍,参考我这篇文章:Thrift框架介绍)语法,代码生成结构和应用经验。本文主要讲述的对象是...

使用 Thrift 进行文件传输

这里简单展现一下 Thrift 的文件传输功能

win64 IDEA meaven 配置安装Thrift自动生成代码到目录

1.下载  thrift   exe  到指定目录,记得修改为thrift.exe 然后将目录添加到环境变量 2. meaven       dependency> groupId>or...

thrift简单使用

转载地址:  http://www.micmiu.com/soa/rpc/thrift-sample/   thrift:   系统之间的数据的传输, 调用对外暴露的接口,然后获取封装的具体的业...

thrift系列 - thrift类型定义

1.简介 上一篇对thrift的快速入门做了简要介绍,本篇主要讲一下thrift接口文件的定义方式,即类型定义的详解。 2.命名空间 接口文件部分示例: namespace java test...
  • hrn1216
  • hrn1216
  • 2016年05月03日 17:36
  • 30204

Apache Thrift 配置环境

Apache Thrift配置环境安装Thrift的官方文档地址: http://thrift.apache.org/docs/install/ 当我看到windows安装需要Cygwin或Min...
  • isea533
  • isea533
  • 2015年09月19日 14:28
  • 5602
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Thrift使用文档详解(一步一步跟着做就可以)
举报原因:
原因补充:

(最多只允许输入30个字)