1. 程式人生 > >Thrift使用文件詳解(一步一步跟著做就可以)

Thrift使用文件詳解(一步一步跟著做就可以)

Linux下使用Thrift詳細步驟

一、下載

下載 boostc++靜態庫,必須),官方網址 

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

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