国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Web Service的大文件傳輸設(shè)計(jì)與實(shí)現(xiàn)

2014-04-29 00:44:03李文杰高鵬翔
計(jì)算機(jī)時(shí)代 2014年1期
關(guān)鍵詞:多線程用戶體驗(yàn)

李文杰 高鵬翔

摘 要: 分析了目前一些主流的文件傳輸方法,包括文件傳輸?shù)南嚓P(guān)協(xié)議以及Web Service技術(shù)等。在綜合考慮用戶對(duì)于跨防火墻通信和大數(shù)據(jù)量文件傳輸?shù)确矫嫘枨蟮幕A(chǔ)上,采用了基于Web Service技術(shù)的解決方案來實(shí)現(xiàn)文件傳輸系統(tǒng)。結(jié)合運(yùn)用其他如多線程等多種技術(shù),來有效解決一些大文件傳輸時(shí)經(jīng)常遇到的如超時(shí)、用戶體驗(yàn)等問題。

關(guān)鍵詞: 大文件傳輸; Web Service; 跨防火墻通信; 超時(shí); 多線程; 用戶體驗(yàn)

中圖分類號(hào):TP315 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)01-27-02

0 引言

文件傳輸技術(shù)在企業(yè)中得到了廣泛應(yīng)用。但對(duì)于跨防火墻傳輸(如圖1所示)和文件傳輸超時(shí)等問題,目前還缺少相關(guān)研究。為此,本文在分析各種文件傳輸技術(shù)的基礎(chǔ)上,提出了一種基于Web Service技術(shù)實(shí)現(xiàn)文件傳輸?shù)姆椒ā?/p>

1 數(shù)據(jù)傳輸技術(shù)

自60年代末電子數(shù)據(jù)交換技術(shù)出現(xiàn)以來,已發(fā)展出多種數(shù)據(jù)傳輸方式,如:遠(yuǎn)程拷貝技術(shù),各種文件傳輸協(xié)議,以及使用軟件制造技術(shù)開發(fā)的數(shù)據(jù)傳輸系統(tǒng)等。下面對(duì)運(yùn)用最廣泛的文件傳輸?shù)南嚓P(guān)協(xié)議和數(shù)據(jù)傳輸系統(tǒng)的開發(fā)技術(shù)進(jìn)行分析和比較。

1.1 文件傳輸協(xié)議

文件傳輸協(xié)議主要包括FTP、TFTP,F(xiàn)TPS[1-3]等。這些協(xié)議實(shí)現(xiàn)了文件的上傳、下載和安全管理等功能,得到了廣泛應(yīng)用。但是,在安全性要求較高的環(huán)境中,防火墻可能會(huì)封鎖上述協(xié)議所依賴的端口。如果服務(wù)器的有關(guān)端口被封閉,那么上述協(xié)議就難以找到可行的運(yùn)用方案。因此文件傳輸協(xié)議不能滿足跨防火墻傳輸?shù)男枰?/p>

1.2 數(shù)據(jù)傳輸系統(tǒng)的發(fā)展

數(shù)據(jù)傳輸系統(tǒng)最初基于客戶機(jī)/服務(wù)器模式實(shí)現(xiàn),到90年代發(fā)展出以CORBA等為代表的分布式計(jì)算技術(shù)。CORBA等技術(shù)雖然在局域網(wǎng)內(nèi)部的同源環(huán)境中表現(xiàn)良好,但仍存在平臺(tái)耦合性高、缺少跨防火墻通信支持等問題,因而不適合跨網(wǎng)絡(luò)異源環(huán)境中的數(shù)據(jù)傳輸。為此,必須發(fā)展更為統(tǒng)一和開放的技術(shù)標(biāo)準(zhǔn)。在這一背景下,Web Service技術(shù)逐漸得到推廣[8]。

1.3 Web Service

Web Service基于XML,Http,SOAP,WSDL和UDDI[4-7]等標(biāo)準(zhǔn)。SOAP建立在XML與HTTP之上,能實(shí)現(xiàn)跨平臺(tái)的數(shù)據(jù)傳輸;WSDL與UDDI則為分布式環(huán)境中發(fā)布和查找服務(wù)提供了支持。此外,Web Service基于XML與Http,因而能實(shí)現(xiàn)跨防火墻的文件傳輸(Http協(xié)議使用的80端口必須開放,否則不能滿足基本聯(lián)網(wǎng)需求)?;谏鲜鰞?yōu)點(diǎn),本系統(tǒng)選用Web Service技術(shù)進(jìn)行開發(fā)。

2 文件傳輸系統(tǒng)的關(guān)鍵技術(shù)

根據(jù)用戶要求,系統(tǒng)必須滿足GB級(jí)別的大文件傳輸。針對(duì)大文件傳輸中常見的內(nèi)存占用大和傳輸失敗率高的問題,已經(jīng)有分塊傳輸和斷點(diǎn)續(xù)傳等解決方案[9];但對(duì)于超時(shí)問題目前仍缺少標(biāo)準(zhǔn)的解決方案。超時(shí)原因主要包括網(wǎng)絡(luò)故障和服務(wù)器作業(yè)時(shí)間過長兩方面。網(wǎng)絡(luò)故障可通過網(wǎng)絡(luò)恢復(fù)后重傳解決;作業(yè)時(shí)間的問題則需要具體分析。作業(yè)時(shí)間可分為兩階段。

⑴ 準(zhǔn)備階段:進(jìn)行文件的壓縮與分割等。準(zhǔn)備時(shí)間與數(shù)據(jù)量成正比,難以通過程序控制。

⑵ 傳輸階段:傳送分割得到的文件分塊。分塊大小可由程序指定,因此傳輸時(shí)間可控。

上傳時(shí),客戶機(jī)是數(shù)據(jù)源。第⑴階段已在客戶端完成,客戶機(jī)發(fā)出的請(qǐng)求均處于第⑵階段,因此時(shí)間可控。非網(wǎng)絡(luò)故障的情況下不會(huì)發(fā)生超時(shí)。

下載時(shí),服務(wù)器是數(shù)據(jù)源。收到客戶機(jī)發(fā)出的下載請(qǐng)求后,服務(wù)器處于第⑴階段,時(shí)間難以控制,大數(shù)據(jù)量時(shí)極易發(fā)生超時(shí)。因此,本文重點(diǎn)解決下載作業(yè)的超時(shí)問題。

2.1 解決下載作業(yè)超時(shí)問題

解決超時(shí)問題通常的思路是增加等待時(shí)間[10],但這不能從根本上解決問題:首先,某些應(yīng)用背景下能夠設(shè)置的等待時(shí)間有限;其次,即使允許無限等待,等待中的客戶機(jī)也不能獲得服務(wù)器的作業(yè)進(jìn)度,畫面在下載開始后的較長時(shí)間里處于假死狀態(tài),用戶可能會(huì)誤以為系統(tǒng)崩潰。為此,本文結(jié)合多線程技術(shù)提出了新的解決方案。具體如下。

⑴ 解決畫面假死問題。為此,需要在服務(wù)器處于準(zhǔn)備階段時(shí)就獲得作業(yè)進(jìn)度。首先在服務(wù)器端創(chuàng)建作業(yè)進(jìn)度報(bào)告進(jìn)程,用于獲取下載作業(yè)的進(jìn)度,當(dāng)收到客戶端請(qǐng)求時(shí),該進(jìn)程向客戶端返回當(dāng)前作業(yè)進(jìn)度;此外,客戶端也要指定負(fù)責(zé)向進(jìn)度報(bào)告進(jìn)程發(fā)出請(qǐng)求的線程。需要注意:該線程不能同時(shí)負(fù)責(zé)發(fā)起下載請(qǐng)求。因?yàn)榭蛻魴C(jī)線程發(fā)起下載請(qǐng)求后必須等待服務(wù)器準(zhǔn)備作業(yè)完成或超時(shí)才能執(zhí)行下一步操作,所以等待期間無法向進(jìn)度報(bào)告進(jìn)程發(fā)出請(qǐng)求,從而無法及時(shí)獲得作業(yè)進(jìn)度,不能真正解決畫面假死問題。因此,必須使用多線程技術(shù):在客戶端建立兩個(gè)線程,分別負(fù)責(zé)發(fā)起下載請(qǐng)求和查詢作業(yè)進(jìn)度。

⑵ 解決超時(shí)問題。發(fā)起下載請(qǐng)求的線程可能會(huì)發(fā)生超時(shí)。超時(shí)發(fā)生時(shí)不能簡單地中止下載,因?yàn)榉?wù)器可能仍在進(jìn)行下載準(zhǔn)備,并沒有失敗。所以本文采用如下方法:若發(fā)起下載請(qǐng)求的線程超時(shí),客戶機(jī)程序繼續(xù)通過進(jìn)度查詢線程獲得服務(wù)器的作業(yè)進(jìn)度。若服務(wù)器最終成功完成準(zhǔn)備作業(yè),就進(jìn)入文件分塊傳輸階段;若服務(wù)器準(zhǔn)備作業(yè)最終失敗,就真正中止下載作業(yè),報(bào)告錯(cuò)誤。詳細(xì)流程如下。

① 下載準(zhǔn)備階段

客戶機(jī)程序建立子線程用于發(fā)起下載請(qǐng)求;服務(wù)器收到請(qǐng)求后由下載進(jìn)程啟動(dòng)準(zhǔn)備工作,作業(yè)進(jìn)度報(bào)告進(jìn)程則記錄準(zhǔn)備作業(yè)的進(jìn)度;子線程發(fā)起請(qǐng)求后,客戶機(jī)主線程按一定時(shí)間間隔不斷向服務(wù)器端進(jìn)度報(bào)告進(jìn)程發(fā)起輪詢請(qǐng)求以獲得最新的作業(yè)進(jìn)度。因?yàn)榘l(fā)起下載請(qǐng)求的是子線程而非主線程,所以即使超時(shí),也不會(huì)影響客戶機(jī)主線程與服務(wù)器下載進(jìn)程,從而解決了因超時(shí)導(dǎo)致下載作業(yè)無法進(jìn)行的問題。因?yàn)闊o論超時(shí)發(fā)生與否主線程都能正常運(yùn)行,所以能夠不斷把獲得的下載作業(yè)進(jìn)度反映到用戶界面上,從而解決了畫面假死問題(圖2)。

② 文件傳輸階段

服務(wù)器準(zhǔn)備完畢后開始傳輸文件分塊。由于服務(wù)器下載進(jìn)程傳送文件塊時(shí)可以附帶進(jìn)度信息,并且客戶機(jī)也可以根據(jù)下載的文件塊數(shù)目計(jì)算進(jìn)度,所以客戶機(jī)主線程不再需要依賴進(jìn)度報(bào)告進(jìn)程獲得進(jìn)度信息,但仍需要把進(jìn)度信息反映到用戶界面以改善用戶體驗(yàn)(圖3)。

2.2 上傳作業(yè)中應(yīng)用進(jìn)度反饋機(jī)制

前面已經(jīng)論述過上傳作業(yè)不用擔(dān)心超時(shí)的問題,但用戶體驗(yàn)可以活用下載作業(yè)的方法予以改善:根據(jù)已上傳文件塊的數(shù)目計(jì)算進(jìn)度并實(shí)時(shí)反映到用戶界面,改善用戶體驗(yàn)。

3 結(jié)束語

實(shí)際運(yùn)行中,本系統(tǒng)實(shí)現(xiàn)了跨網(wǎng)絡(luò)的數(shù)據(jù)傳輸。即使客戶機(jī)需要穿越防火墻連接另一網(wǎng)絡(luò)中的服務(wù)器,也能成功完成傳輸。此外,系統(tǒng)在數(shù)量級(jí)為GB的文件傳輸中同樣表現(xiàn)良好。特別是下載作業(yè),服務(wù)器的準(zhǔn)備時(shí)間通常在30分鐘以上,客戶機(jī)沒有因?yàn)殚L時(shí)間等待而失敗,并能夠在服務(wù)器準(zhǔn)備期間通過請(qǐng)求不斷獲得準(zhǔn)備作業(yè)的進(jìn)度;在開始文件分塊的傳輸后,客戶機(jī)能夠繼續(xù)取得傳輸進(jìn)度,使用戶得以不間斷地監(jiān)控整個(gè)傳輸過程,獲得良好的用戶體驗(yàn)??梢?,本文提出的解決方案在跨網(wǎng)絡(luò)、大數(shù)據(jù)量的文件傳輸作業(yè)中有著廣闊的應(yīng)用前景。

但是,目前的方法仍存在有待解決的問題:①作業(yè)時(shí)間過長。目前必須等待客戶機(jī)(上傳作業(yè))或服務(wù)器(下載作業(yè))準(zhǔn)備好所有文件分塊后才能開始傳輸。如果可以在生成第一個(gè)文件分塊之后就開始傳輸,就能大幅度縮短時(shí)間。但要做到這一點(diǎn),還需要兼顧數(shù)據(jù)完整性等問題,這需要進(jìn)一步研究。②取消操作的實(shí)現(xiàn)。在傳輸文件分塊的階段,要取消傳輸作業(yè),只要通知服務(wù)器結(jié)束傳輸,清除已傳數(shù)據(jù)即可。但在下載作業(yè)的準(zhǔn)備階段中,服務(wù)器可能忙于執(zhí)行讀取、壓縮等操作,即使收到用戶的取消請(qǐng)求也不能立即停止。如何使服務(wù)器在準(zhǔn)備過程中能及時(shí)響應(yīng)取消請(qǐng)求,也需要繼續(xù)研究和探討。

參考文獻(xiàn):

[1] J. Postel, J. Reynolds. FILE TRANSFER PROTOCOL (FTP)[S].

RFC 959, October 1985. http://tools.ietf.org/html/rfc959.

[2] G. Malkin, A. Harkin. TFTP Option Extension[S]. RFC 2347, May

1998. http://tools.ietf.org/html/rfc2347.

[3] T. Dierks, E. Rescorla. The Transport Layer Security (TLS)

Protocol[S]. RFC 5246, August 2008.http://tools.ietf.org/html/rfc5246.

[4] Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler,

Fran?ois Yergeau. Extensible Markup Language (XML) 1.0 (Fifth Edition)[S]. W3C Recommendation,26 November 2008. http://www.w3.org/TR/REC-xml/.

[5] Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques

Moreau, Henrik Frystyk Nielsen, Anish Karmarkar, Yves Lafon. SOAP Version 1.2[S]. W3C Recommendation, 27 April 2007. http://www.w3.org/TR/soap12-part1/.

[6] Erik Christensen, Francisco Curbera, Greg Meredith, Sanjiva

Weerawarana. Web Services Description Language (WSDL) 1.1[S]. W3C Note, 15 March 2001. http://www.w3.org/TR/wsdl.

[7] Peter Brittenham, Francisco Cubera, Dave Ehnebuske, Steve

Graham. Understanding WSDL in a UDDI registry, Part 1[OL]. IBM developerWorks, 01 Sep 2001. http://www.ibm.com/developerworks/library/ws-wsdl/.

[8] Ramesh Nagappan,Robert Skoczylas,Rima Patel Sriganesh 著,龐

大剛,陶程譯.Java Web服務(wù)開發(fā)[M].清華大學(xué)出版社,2004.

[9] 黎苑文,程明智,徐秀花,楊義先.斷點(diǎn)續(xù)傳及多線程機(jī)制在遠(yuǎn)程傳版

中的應(yīng)用研究[J].北京印刷學(xué)院學(xué)報(bào),2012.20(6):53-56

[10] Apache Software Foundation. Timeout Configuration[EB/OL].

April 2012.http://axis.apache.org/axis2/java/core/docs/http-

transport.html.

猜你喜歡
多線程用戶體驗(yàn)
Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
基于用戶交互式體驗(yàn)下的APP版式設(shè)計(jì)研究
手機(jī)閱讀平臺(tái)用戶體驗(yàn)影響因子分析
O2O模式下生鮮農(nóng)產(chǎn)品移動(dòng)電子商務(wù)發(fā)展研究
淺談?dòng)脩趔w驗(yàn)在產(chǎn)品設(shè)計(jì)中的運(yùn)用
基于多線程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
唯品會(huì)的品牌塑造研究
基于用戶體驗(yàn)的電商平臺(tái)界面管理影響因素研究
科技視界(2016年20期)2016-09-29 11:07:22
網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
一種基于多線程的高速磁盤鏡像算法
巨鹿县| 德庆县| 策勒县| 交城县| 泾源县| 久治县| 名山县| 邵阳市| 霸州市| 洛扎县| 石城县| 措美县| 宜丰县| 修文县| 黎城县| 绩溪县| 叙永县| 红原县| 墨竹工卡县| 呼伦贝尔市| 罗平县| 洛扎县| 兴仁县| 丹寨县| 名山县| 商城县| 临清市| 南汇区| 桦川县| 永吉县| 定西市| 嘉鱼县| 河津市| 红河县| 烟台市| 定兴县| 平顶山市| 石渠县| 伊宁县| 莫力| 兰州市|