Thrift使用文檔詳解(一步一步跟着做就可以)

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文件夾中的兩個文件,如下圖(由於文件所在位置不一樣路徑不同):

 

 

然後編譯,則可正常通過,服務器和客戶端所配環境和上一版本相同。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章