黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

四步完成跨平臺調用——thrift的開發應用 - Bir

系統 2580 0

四步完成跨平臺調用——thrift的開發應用 - Birdshover - 博客園

四步完成跨平臺調用——thrift的開發應用

一、安裝thrift

首先,你要有個Linux平臺,反正安裝好了就行,用不著太多的東西。

?

thrift這個東東可以在http://www.thrift-rpc.org/下載。

具體在http://www.thrift-rpc.org/?p=thrift.git;a=shortlog;h=refs/misc/instant,一般點第一個snapshot就行了,這是最新的。版本幾個小時更新一個,太牛叉了。

接下來,安裝thrift。到thrift的解壓目錄,執行命令:

#chmod +x *? //設置執行權限

#./bootstrap.sh

#./configure

#make

#make install

二、確定接口

平臺與平臺的方法調用或數據交換,需要依賴一組結構和一些方法。需要定義好這個方法,才可以進行接下來的開發。比如,我現在需要通過C#調用Java。如果說Java的服務端已經開發好了,那就非常像是適配器模式了。

現在書寫一個簡單的接口:

service ThriftTest
{
?void work();
?i32 test(1:string s);
}

service ThriftTest

{

????????? void work();

????????? i32 test(1:string s);

}

(注:復雜一些的接口可以參考下載來包里的thrift\test目錄下的*.thrift文件。)

現在開始生成代碼:

# /home/xieping/thrift/compiler/cpp/thrift -gen java test.thrift

# /home/xieping/thrift/compiler/cpp/thrift -gen csharp test.thrift

分別生成了java和csharp的應用,在gen-java和gen-csharp目錄下。

三、開發服務端

把Java下的ThriftTest類拷貝到項目中,注意添加package。定義服務類ThriftServer,實現ThriftTest.Iface接口。(項目需要引用thrift\lib\java\src里的項目。同時需要引用slf4j-log4j12-1.5.11.jar,slf4j-api-1.5.11.jar,log4j-1.3alpha-8.jar三個包。)

import org.apache.thrift.TException;

public class ThriftServer implements ThriftTest.Iface {

@Override

public int test(String s) throws TException {

// TODO Auto-generated method stub

return Integer.parseInt(s);

}

@Override

public void work() throws TException {

// TODO Auto-generated method stub

System.out.println("ccc");

}

}

在main方法中寫入:

try {

ThriftServer t = new ThriftServer();

ThriftTest.Processor p = new ThriftTest.Processor(t);

???? TServerTransport serverTransport = new TServerSocket(9090);

???? TServer server = new TThreadPoolServer(p, serverTransport);

???? // Use this for a multithreaded server

???? // server = new TThreadPoolServer(processor, serverTransport);

???? System.out.println("Starting the server...");

???? server.serve();

?? } catch (Exception x) {

???? x.printStackTrace();

?? }

?? System.out.println("done.");

這里的Server有好幾種,我使用了TThreadPoolServer.運行,服務端就OK了。

四、客戶端調用

客戶端把gen-csharp里的類,拷貝到項目中。引用thrift\lib\csharp\src里的項目。

然后編寫代碼:

static void Main(string[] args) {

TTransport transport = new TSocket("localhost",9090);

TProtocol protocol = new TBinaryProtocol(transport);

ThriftTest.Client client = new ThriftTest.Client(protocol);

transport.Open();

int val = client.test("1213");

client.work();

transport.Close();

Console.WriteLine(val);

}

運行,出結果了。

四步就完成了通過Thrift跨平臺調用的目的。Java和C#還好些,php調用Java的相對來說使用上更廣泛一些。

分類: .Net language and other

四步完成跨平臺調用——thrift的開發應用 - Birdshover - 博客園


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論