Thrift的簡(jiǎn)單使用 - Season In The Code - 博客頻道 - CSDN.NET
Thrift( ?
http://github.com/facebook/thrift
)是一個(gè)跨語(yǔ)言服務(wù)部署架構(gòu),2007年由Facebook開(kāi)發(fā),之后在2008年加到Apache計(jì)劃中( ?
http://incubator.apache.org/thrift/
)。它是類似于SOAP,CORBA以及Google Protocol Buffers這樣的服務(wù)架構(gòu)。Thrift提供了完整client/server RPC的實(shí)現(xiàn),只需要定義好中間定義語(yǔ)言,就可以生成指定語(yǔ)言的代碼(包括client和server)。?
Thrift能生成的語(yǔ)言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml
?
?
使用thrift,以下例子你可以在
?
http://incubator.apache.org/thrift/
中找到。
定義.thrift接口文件。
你需要知道thrift所支持的類型( ?
http://wiki.apache.org/thrift/ThriftTypes
)下面是一個(gè)簡(jiǎn)述:
類型 描述 bool true, false byte 8位的有符號(hào)整數(shù) i16 16位的有符號(hào)整數(shù) i32 32位的有符號(hào)整數(shù) i64 64位的有符號(hào)整數(shù) double 64位的浮點(diǎn)數(shù) string UTF-8編碼的字符串 binary 字符數(shù)組 struct 結(jié)構(gòu)體 list<type> 有序的元素列表,類似于STL的vector set<type> 無(wú)序的不重復(fù)元素集,類似于STL的set map<type1,type2> key-value型的映射,類似于STL的map exception 是一個(gè)繼承于本地語(yǔ)言的exception基類 service 服務(wù)。包含多個(gè)函數(shù)接口(純虛函數(shù)) ?
?
在了解過(guò)thrift內(nèi)置類型之后,我們可以簡(jiǎn)單地定義一個(gè)服務(wù),把用戶的信息從前端發(fā)送到服務(wù)器,然后當(dāng)需要的時(shí)候再?gòu)姆?wù)器獲取某個(gè)用戶的信息:
- struct?UserProfile?{??
- ?? 1 :?i32?uid,??
- ?? 2 :?string?name,??
- }??
- ??
- service?UserStorage?{??
- ??void?store( 1 :?UserProfile?user),??
- ??UserProfile?retrieve( 1 :?i32?uid)??
- }??
把以上代碼存到 service.thrift文件中。
?
如果我們需要用python來(lái)做輸出語(yǔ)言。就在命令行中輸入:
- thrift??–r??–gen??py??service.thrift??
之后,你就會(huì)在當(dāng)前目錄下看到一個(gè)新建的目錄叫”gen-py”,在里面你就可以看到由service.thrift生成的python服務(wù)接口代碼。
?
UserStorage.py中的Client就是客戶端調(diào)用的接口,只需要?jiǎng)?chuàng)建一個(gè)Client實(shí)例就可以調(diào)用例子中的store和retrieve的接口。而Iface就是服務(wù)端所需要實(shí)現(xiàn)的接口,對(duì)應(yīng)例子中的store和retrieve的邏輯處理。
?
ttypes.py是存放枚舉類型的結(jié)構(gòu)。
?
UserStorage-remote.py是一個(gè)客戶端調(diào)用服務(wù)接口的demo示例,想知道詳細(xì)的可以去看看。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
