Thrift服務(wù)開(kāi)發(fā)框架
Thrift 是一個(gè)軟件框架(遠(yuǎn)程過(guò)程調(diào)用框架),用來(lái)進(jìn)行可擴(kuò)展且跨語(yǔ)言的服務(wù)的開(kāi)發(fā)。它結(jié)合了功能強(qiáng)大的軟件堆棧和代碼生成引 擎,以構(gòu)建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語(yǔ)言間無(wú)縫結(jié)合的、高效的服務(wù)。
thrift最初由facebook開(kāi)發(fā),07年四月開(kāi)放源碼,08年5月進(jìn)入apache孵化器,現(xiàn)在是 Apache 基金會(huì)的頂級(jí)項(xiàng)目
thrift允許你定義一個(gè)簡(jiǎn)單的定義文件中的數(shù)據(jù)類型和服務(wù)接口,以作為輸入文件,編譯器生成代碼用來(lái)方便地生成RPC客戶端和服務(wù)器通信的無(wú)縫跨編程語(yǔ)言。。
著名的 Key-Value 存儲(chǔ)服務(wù)器 Cassandra 就是使用 Thrift 作為其客戶端API的。
服務(wù)定義文件:
service Calculator extends shared.SharedService {
/**
* A method definition looks like C code. It has a return type, arguments,
* and optionally a list of exceptions that it may throw. Note that argument
* lists and exception lists are specified using the exact same syntax as
* field lists in struct or exception definitions.
*/
void ping(),
i32 add(1:i32 num1, 2:i32 num2),
i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),
/**
* This method has a oneway modifier. That means the client only makes
* a request and does not listen for any response at all. Oneway methods
* must be void.
*/
oneway void zip()
}評(píng)論
圖片
表情
