999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WCF的REST風(fēng)格服務(wù)與Android跨平臺數(shù)據(jù)通信

2016-11-19 18:52:01韓豐羽
中國科技縱橫 2016年4期

韓豐羽

【摘 要】為實現(xiàn)Android和.NET平臺的跨平臺的數(shù)據(jù)傳輸方式,本文運(yùn)用了REST風(fēng)格的WCF服務(wù)框架,并將WCF托管在IIS上,同時在Android客戶端上使用HttpClient,通過唯一標(biāo)識符調(diào)用相對應(yīng)的服務(wù)方法。經(jīng)過多次實驗表明,運(yùn)用這種方式進(jìn)行數(shù)據(jù)通信,可以減輕服務(wù)器的負(fù)擔(dān),降低與服務(wù)端通信的難度,且使程序更加可維護(hù)。

【關(guān)鍵詞】WCF RESTful Android 數(shù)據(jù)交互

1 WCF平臺概述

Windows Communication Foundation(WCF)是使用托管代碼建立和運(yùn)行面向服務(wù)的應(yīng)用程序框架,主要是用來做松耦合的分布式通訊,它提供的包括托管、安全、異步等豐富功能使得開發(fā)者能夠建立一個跨平臺、可信賴、服務(wù)實例實力管理、事務(wù)管理的解決方案,且融合了.Net 平臺下多種和分布式系統(tǒng)有關(guān)的技術(shù):

(1)WSE(2)Net Remoting(3)ASMX(4)MSMQ。

1.1 WCF要素

地址:服務(wù)托管地址,每個服務(wù)都具有唯一地址,用來指定服務(wù)所在位置和傳輸協(xié)議,以供其它服務(wù)和客戶端通過地址來對服務(wù)進(jìn)行訪問。每一個服務(wù)的地址由一個統(tǒng)一資源標(biāo)示符(URI)來表示。

契約:用來描述服務(wù)功能,屬于服務(wù)公開接口的一部分。契約分為:

(1)服務(wù)契約:定義了客戶端調(diào)用時所執(zhí)行的服務(wù)執(zhí)操作;

(2)數(shù)據(jù)契約:定義了數(shù)據(jù)類型;

(3)消息契約:直接對soap頭和soap體進(jìn)行交互和控制。

綁定:它封裝了傳輸協(xié)議、消息編碼、安全傳遞、通信模式等一組綁定元素組成的通信基礎(chǔ)結(jié)構(gòu)。綁定可以加速開發(fā)過程,且充分利用內(nèi)置的各種特性。

宿主:WCF服務(wù)需要承載在一個宿主上。WCF提供了多種宿主形式,包括自寄宿、IIS寄宿、Windows服務(wù)、Com+組件等。本文采用的是IIS寄宿。

1.2 REST風(fēng)格

REST(Representational State Transfer)是一種輕量級的Web Service架構(gòu)風(fēng)格,對比SOAP和WSDL等復(fù)雜接口,其實現(xiàn)和操作明顯更為簡潔,且降低了開發(fā)的復(fù)雜性。

REST架構(gòu)風(fēng)格遵循了CRUD原則,即只需要四種行為:Create(創(chuàng)建)、Read(讀取)、Update(更新)和Delete(刪除)就可以完成對資源的操作和處理,它并不關(guān)心消息的定義與方法的設(shè)計。本文中選定HTTP/HTTPS協(xié)議作為REST這種框架風(fēng)格的統(tǒng)一的網(wǎng)絡(luò)通信協(xié)議,REST充分的利用了HTTP協(xié)議提供的四中方法,其中:

(1)創(chuàng)建資源在服務(wù)器上,使用POST方法;

(2)查找某個資源,使用GET方法;

(3)更改資源狀態(tài)或?qū)ζ涓拢褂肞UT方法;

(4)刪除某個資源,使用DELETE方法。

REST支持HTML、XML、JSON等多種格式,本文采取的是JSON格式。

2 WCF服務(wù)端開發(fā)

服務(wù)端通過提供服務(wù)的訪問點,使客戶端可以調(diào)用其服務(wù)。本文中REST風(fēng)格的WCF服務(wù)端與客戶端之間的耦合度更低,服務(wù)端僅在收到客戶端請求使才有響應(yīng),平時完全不關(guān)心客戶端狀態(tài),減輕了服務(wù)端的負(fù)擔(dān),使其只保留資源狀態(tài)信息和提供給客戶端的接口功能。

2.1 創(chuàng)建WCF服務(wù)應(yīng)用程序

在新建了一個WCF服務(wù)應(yīng)用程序后,添加自定義的WCF服務(wù)文件WcfTest.svc,此時vs2012會自動生成接口文件IWcfTest.cs。接口文件如下:

要在WCF中創(chuàng)建REST風(fēng)格的應(yīng)用程序就必須用到System.ServiceModel.Web.dll組件。服務(wù)方法中[WebInvoke]特性是REST的重要元素,其屬性用于修改或刪除數(shù)據(jù)的操作,例如上述程序中UriTemplate屬性使URI定義了一個自定義資源,客戶端通過UriTemplate定義的資源名來訪問該服務(wù);對于ResponseFormat,RequestFormat屬性是用于定義對服務(wù)操作發(fā)出的請求和響應(yīng)格式,本文采用的是JSON格式。服務(wù)文件中就定義著接口的具體實現(xiàn),再次不在累述。

需注意的一點是,本文是搭建一個REST風(fēng)格的WCF服務(wù)應(yīng)用程序,所以需要設(shè)置綁定為webHttpBinding,它是REST風(fēng)格綁定,具體設(shè)置步驟:

(1)在解決方案框內(nèi)找到Web.config;

(2)右擊后找到WCF配置選項,選擇新建服務(wù);

(3)在bin文件夾里找到對應(yīng)的動態(tài)鏈接庫,選擇并找到對應(yīng)服務(wù)類型;

(4)設(shè)置服務(wù)終結(jié)點,找到Binding項,改為webHttpBinding。

2.2 IIS宿主

僅開發(fā)了自己的服務(wù)并不可以讓外部客戶端調(diào)用,還需要一個宿主進(jìn)程來承載這些服務(wù),WCF的托管服務(wù)包括:自托管和IIS托管。本文使用IIS托管,其優(yōu)點是可實現(xiàn)程序隔離,管理程序的生命周期。雖限制只能使用HTTP/HTTPS協(xié)議,但本文采取webHttpBinding綁定,限制協(xié)議類型也就不是缺點了。

首先在服務(wù)器上添加一個網(wǎng)站。由于.NET framework4.0才支持REST風(fēng)格,所以要將新添加網(wǎng)站的.NET framework版本改為v4.0。

接下來再次“重新生成解決方案”,右擊工程選擇“發(fā)布”選項,彈出web發(fā)布對話框。填寫信息后點擊“驗證連接”,當(dāng)出現(xiàn)綠色對號時說明連接成功。這時點擊發(fā)布,整個WCF就發(fā)布到服務(wù)器的IIS上了。具體內(nèi)容如下圖2-1。

由于IIS服務(wù)器默認(rèn)是不支持PUT和DELETE操作,返回“403-Forbidden”錯誤,因此需要修改IIS新建網(wǎng)站的屬性設(shè)置為全部動作。最后檢驗是否發(fā)布成功,在IIS管理器中找到新建好的網(wǎng)站,點擊瀏覽網(wǎng)站,當(dāng)出現(xiàn)下圖2-2時,證明發(fā)布成功了。

3 Android客戶端開發(fā)

在REST風(fēng)格下,Android客戶端只要通過資源的URI就可以輕松的訪問服務(wù),實現(xiàn)與服務(wù)的交互。相比于傳統(tǒng)JDK自帶的HttpURLConnection,本文運(yùn)用的HttpClient更簡單易用,靈活方便。

3.1 HttpClient介紹

HttpClient封裝了訪問http的請求頭,參數(shù),內(nèi)容體,響應(yīng)等等。具體步驟:

(1)首先創(chuàng)建HttpClient對象。本文采用創(chuàng)建POST請求方法HttpPost實例,并指定請求URL;

(2)接下來對HttpPost對象調(diào)用setHeader()方法設(shè)置HTTP協(xié)議的消息頭和交互信息的類型,同時規(guī)定setEntity()方法來設(shè)置請求參數(shù);

(3)調(diào)用HttpClient對象的execute()發(fā)送請求,該方法返回一個HttpResponse;

(4)調(diào)用返回的HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了服務(wù)器的響應(yīng)內(nèi)容。

3.2創(chuàng)建Android應(yīng)用程序

在了解HttpClient的操作方法后,我們知道它是和HTTP/HTTPS協(xié)議進(jìn)行交互,那么一定要設(shè)定Android的網(wǎng)絡(luò)訪問權(quán)限:

其次由于客戶端與服務(wù)端的數(shù)據(jù)交互是一個很費時的過程,為避免出現(xiàn)界面卡頓導(dǎo)致降低用戶體驗的問題,Android2.3開始要求網(wǎng)絡(luò)通信操作時要放在一個單獨的線程中,因此我們要把調(diào)用服務(wù)的過程放在子線程里面,具體過程如下:

4結(jié)語

本文詳述了REST風(fēng)格的WCF與Android客戶端進(jìn)行信息交互的方式,通過以上方法可以實現(xiàn)跨平臺通信。REST風(fēng)格使客戶端在訪問服務(wù)方法時不用關(guān)心服務(wù)端業(yè)務(wù)方法的復(fù)雜性。并且因為WCF的成熟性,使實現(xiàn)跨平臺通信的方法跟簡單易用,安全性高,健壯性強(qiáng)。

參考文獻(xiàn):

[1]袁贊.Java與RESTful Web Service[J].電腦知識與技術(shù) 學(xué)術(shù)交流,2007.

[2]趙海寧,李洋.基于WCF框架的應(yīng)用與研究[J].電腦知識與技術(shù),2010 .

[3]朱夏,王茜.異構(gòu)系統(tǒng)間數(shù)據(jù)交互模型的設(shè)計與實現(xiàn)[J].東南大學(xué)學(xué)報 自然科學(xué)版,2006 36(2):226-227.

[4]Pablo Cibraro,Kurt Claeys,F(xiàn)abio Cozzolino,Johann Grabner Professional WCF 4[M] Wiley 2010.05.28.

主站蜘蛛池模板: 日韩在线视频网| 亚洲啪啪网| aaa国产一级毛片| 国产玖玖玖精品视频| 亚洲精品在线观看91| 国产主播福利在线观看| 国产成年女人特黄特色大片免费| 国产成人综合日韩精品无码首页 | 国产成人久久777777| 香蕉伊思人视频| 99久久人妻精品免费二区| 中文字幕在线观看日本| 欧美色视频日本| 野花国产精品入口| 国产一区二区三区视频| 国产成人久视频免费| 白浆视频在线观看| 亚洲Av综合日韩精品久久久| 视频在线观看一区二区| 尤物精品视频一区二区三区| 色噜噜中文网| 欧美日韩精品一区二区视频| 美女一区二区在线观看| 亚洲AⅤ无码国产精品| 97久久超碰极品视觉盛宴| 天天摸天天操免费播放小视频| 久久精品女人天堂aaa| 无码专区在线观看| 色综合网址| 又爽又大又黄a级毛片在线视频| 久热99这里只有精品视频6| 88国产经典欧美一区二区三区| 国产精品女主播| 一级黄色欧美| 久久精品日日躁夜夜躁欧美| 亚洲天堂网在线播放| 无码视频国产精品一区二区| 美女毛片在线| 99re在线视频观看| 亚洲成a人在线观看| 影音先锋丝袜制服| 四虎影视8848永久精品| 国产欧美中文字幕| 国产综合精品日本亚洲777| 欧美一区中文字幕| 婷婷激情亚洲| 亚洲精品无码av中文字幕| 久久久久88色偷偷| 国产精品无码久久久久久| 99精品高清在线播放| 欧美成一级| 亚洲AV无码不卡无码| 亚洲无码高清视频在线观看| 成人午夜亚洲影视在线观看| 国产AV无码专区亚洲精品网站| 欧美成人午夜视频| 午夜a视频| 夜夜操国产| 国产精品私拍在线爆乳| 一级毛片在线免费视频| 四虎国产精品永久一区| 国产成人久久综合一区| 免费精品一区二区h| 国产成人免费手机在线观看视频| 亚洲欧美成人| 国产主播在线一区| 久久国产香蕉| 米奇精品一区二区三区| 婷婷激情五月网| 日韩A∨精品日韩精品无码| 91麻豆国产视频| 国产亚洲欧美日本一二三本道| 欧美在线网| 操美女免费网站| 婷婷六月色| 亚洲精品无码日韩国产不卡| 欧美一级特黄aaaaaa在线看片| 亚洲第一综合天堂另类专| 人妻中文久热无码丝袜| 2020精品极品国产色在线观看| 国产福利在线观看精品| 国产电话自拍伊人|