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用戶端和伺服器通信的無縫跨程式設計語言。
基本類型: bool:布爾值,true 或 false,對應 java 的 boolean byte:8 位有符号整數,對應 java 的 byte i16:16 位有符号整數,對應 java 的 short i32:32 位有符号整數,對應 java 的 int i64:64 位有符号整數,對應 java 的 long double:64 位浮點數,對應 java 的 double string:utf-8編碼的字元串,對應 java 的 string 結構體類型: struct:定義公共的對象,類似于 c 語言中的結構體定義,在 java 中是一個 javabean 容器類型: list:對應 java 的 arraylist set:對應 java 的 hashset map:對應 java 的 hashmap 異常類型: exception:對應 java 的 exception 服務類型: service:對應服務的類
實作服務處理接口impl 建立tprocessor 建立tservertransport 建立tprotocol 建立tserver 啟動server 3.用戶端編碼基本步驟:
建立transport 建立tprotocol 基于ttransport和tprotocol建立 client 調用client的相應方法 4.資料傳輸協定
tbinaryprotocol : 二進制格式. tcompactprotocol : 壓縮格式 tjsonprotocol : json格式 tsimplejsonprotocol : 提供json隻寫協定, 生成的檔案很容易通過腳本語言解析 tips:用戶端和服務端的協定要一緻
test.thrift namespace java com.xzw.thrift namespace as3 com.xzw.thrift struct user{ 1:i32 userid, 2:string loginname, 3:string password, 4:string name }
通過指令生成java代碼
thrift --gen java test.thrift
以上指令會生成gen-java的目錄拷貝裡面的代碼到你的項目中。如圖com.xzw.thrift就是
工具生成java類。
其中我們需要去實作userservice類中的iface接口。代碼如下: / * to change this template, choose tools | templates * and open the template in the editor. / package com.xzw.service;
編寫servlet,servlet需要繼承thrift提供的類包tservlet即可,不需要去重寫doget,dopost方法。 / * to change this template, choose tools | templates * and open the template in the editor. / package com.xzw.service;
以上就完成伺服器端的編寫了。
可以使用junit測試一下: / * to change this template, choose tools | templates * and open the template in the editor. /
接下來生成as3代碼
thrift --gen as3 test.thrift www.it165.net
以上代碼會生成gen-as3的目錄,拷貝目錄下的代碼到你的工程中。
編寫as3用戶端類:
寫完了,測試結果