周虎
摘 要:針對在試題庫建設(shè)中需要大數(shù)據(jù)量文件上傳操作的特點(diǎn),在研究WCF的框架和數(shù)據(jù)交互技術(shù)的基礎(chǔ)上,設(shè)計(jì)一個(gè)基于WCF流模式數(shù)據(jù)傳輸?shù)奈募蟼鞒绦?,尤其在大?shù)據(jù)量上傳時(shí),大大提高了文件上傳的效率,并且在客戶端可以查看當(dāng)前文件上傳的進(jìn)度。通過對WCF服務(wù)端和客戶端的設(shè)計(jì)與配置,實(shí)現(xiàn)了基于WCF的文件上傳功能。
關(guān)鍵詞:WCF;文件上傳;流模式;契約;Net.Tcp
中圖分類號:TP311.1 文獻(xiàn)標(biāo)識碼:A
Abstract:As a large amount of data needs to be uploaded in the construction process of the examination database system,based on the framework of WCF and data exchange technology,the paper designs a file uploading system based on the WCFstream mode.Especially when uploading a large amount of data,the system greatly improves the efficiency of file transfer,and the real-time uploading progress can be viewed from the client program.Through the design and configuration of the WCF server and client,the file uploading functions are implemented based on WCF.
Keywords:WCF file uploading;stream mode;contract;Net.Tcp
1 引言(Introduction)
文件上傳在基于網(wǎng)絡(luò)應(yīng)用系統(tǒng)開發(fā)過程中經(jīng)常用到的一個(gè)功能[1],通常情況下客戶端通過Http的Post方式或使用Ftp方式進(jìn)行文件上傳,但是采用以上兩種方式在大數(shù)據(jù)量文件上傳時(shí),在上傳進(jìn)度的顯示、上傳文件的效率,以及斷點(diǎn)續(xù)傳方面仍存在一些缺陷。本文根據(jù)在題庫系統(tǒng)建設(shè)中特點(diǎn),需要用到大數(shù)據(jù)量的文件上傳功能,集成到題庫系統(tǒng)中去,上傳到服務(wù)端根據(jù)當(dāng)前日期自動創(chuàng)建日期文件夾中,并能實(shí)時(shí)顯示文件上傳的進(jìn)度,結(jié)合WCF流模式數(shù)據(jù)傳輸技術(shù),實(shí)現(xiàn)了客戶端的文件上傳功能,一方面客戶端可以查看文件上傳的進(jìn)度,同時(shí)也大大提高了文件傳輸?shù)男省?/p>
2 WCF技術(shù)簡介(WCF introduction)
Windows Communication Foundation(WCF)是由微軟開發(fā)的一系列支持?jǐn)?shù)據(jù)通信的應(yīng)用程序框架[2],整合了原有的windows通訊的.net Remoting、WebService、Socket的機(jī)制[3]。WCF程序框架主要包含了四個(gè)方面,分別為契約、服務(wù)運(yùn)行時(shí)、消息和寄宿[2]。契約屬于一個(gè)服務(wù)公開接口的一部分[4]。一個(gè)服務(wù)的契約,定義了服務(wù)端公開的服務(wù)方法、使用的傳輸協(xié)議、可訪問的地址、傳輸?shù)南⒏袷降葍?nèi)容[5]。服務(wù)運(yùn)行時(shí)定義了服務(wù)在運(yùn)行時(shí)的具體行為。消息方面包含了消息的傳輸方式、消息的編碼與解碼。激活和宿主屬于WCF程序的部署方式。根據(jù)WCF框架中數(shù)據(jù)流模式傳輸?shù)奶攸c(diǎn),當(dāng)客戶端上傳文件時(shí),將文件轉(zhuǎn)換為字節(jié)流方式分塊傳輸,通過設(shè)置文件名、文件大小、文件偏移量和發(fā)送字節(jié)數(shù)組的數(shù)據(jù)契約,實(shí)現(xiàn)了客戶端的文件上傳操作,具體如圖1所示。
3 文件傳輸服務(wù)端設(shè)計(jì)(File transfer server design)
對于WCF文件上傳的服務(wù)端設(shè)計(jì),主要包含了四個(gè)部分:文件上傳服務(wù)契約的設(shè)計(jì)、文件上傳服務(wù)的實(shí)現(xiàn)、文件服務(wù)的部署和服務(wù)的宿主程序設(shè)計(jì)[6]。
3.1 文件上傳服務(wù)契約設(shè)計(jì)
文件上傳服務(wù)契約主要包含了服務(wù)契約接口的設(shè)計(jì)和數(shù)據(jù)契約文件信息的定義,服務(wù)契約中主要定義了文件上傳方法,參數(shù)是上傳文件信息和對應(yīng)保存的路徑,數(shù)據(jù)契約包含了文件的基本信息,如程序所示。
在程序中,文件的偏移量屬性用來記錄當(dāng)前文件已經(jīng)傳輸?shù)淖止?jié)數(shù),而定義發(fā)送的字節(jié)屬性用于約定每次發(fā)送字節(jié)的大小。
3.2 文件上傳服務(wù)的實(shí)現(xiàn)
文件上傳服務(wù)主要是實(shí)現(xiàn)了IFileTransfer接口,通過接收客戶端傳遞的文件對象及保存該文件的文件夾信息,首先判斷根據(jù)當(dāng)前日期創(chuàng)建的文件夾是否存在,如果不存在則先創(chuàng)建該日期文件夾,然后將接收到的字節(jié)數(shù)組和文件的偏移量通過二進(jìn)制方式寫入文件中。在服務(wù)端通過實(shí)現(xiàn)IFileTransfer接口,重寫UploadFileInfo方法,返回?cái)?shù)據(jù)契約約定的文件信息對象,如程序所示。
5 結(jié)論(Conclusion)
本文通過對WCF框架的介紹,結(jié)合WCF中數(shù)據(jù)流傳輸模式,設(shè)計(jì)了基于WCF的文件上傳服務(wù),實(shí)現(xiàn)了文件上傳的服務(wù)器端和客戶端的功能設(shè)計(jì),并在題庫建設(shè)系統(tǒng)中得到了具體的應(yīng)用,尤其在大數(shù)據(jù)量文件上傳過程中文件上傳的效率得到了相應(yīng)的提高 。
參考文獻(xiàn)(References)
[1] Igor Kol.Benefits of the Use of Asynchronous Methods in a WCF Service and Its Client,Synchronizing Resource Access Between These Methods[C].Military Technologies(ICMT),2015,05:1-8.
[2] GuoYunhua.A Message Service System Based on WCF Duplex Communication[C].Computer Science & Service System(CSSS),2012,08:1480-1483.
[3] Wei Zhang.Research and Application of WCF Extensibility[C].Web Information Systems and Mining(WISM), 2010,10:363-367.
[4] 沈正.WCF研究與開發(fā)[J].中國新技術(shù)新產(chǎn)品,2009,19:13.
[5] 黃森,劉豐.基于WCF的數(shù)據(jù)流傳輸方案研究與應(yīng)用[J].計(jì)算機(jī)安全,2009,12:14-15.
[6] 胡興梅,李玲.基于WCF的信息系統(tǒng)結(jié)構(gòu)模型與體系架構(gòu)的研究與設(shè)計(jì)[J].電腦知識與技術(shù),2009,22:6198-6199.
[7] 陳品華,石林祥.WCF技術(shù)在中小企業(yè)的應(yīng)用[J].微型電腦應(yīng)用,2011,08:59-61.
[8] 周斌,茅維華.WCF在數(shù)字化校園建設(shè)中的應(yīng)用[J].中山大學(xué)學(xué)報(bào),2009,S1:335-337.
作者簡介:
周 虎(1977-),男,碩士,講師.研究領(lǐng)域:軟件開發(fā).