一种基于WCF的文件上传方法实现
2017-05-12周虎
周虎
摘 要:针对在试题库建设中需要大数据量文件上传操作的特点,在研究WCF的框架和数据交互技术的基础上,设计一个基于WCF流模式数据傳输的文件上传程序,尤其在大数据量上传时,大大提高了文件上传的效率,并且在客户端可以查看当前文件上传的进度。通过对WCF服务端和客户端的设计与配置,实现了基于WCF的文件上传功能。
关键词:WCF;文件上传;流模式;契约;Net.Tcp
中图分类号:TP311.1 文献标识码: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)
文件上传在基于网络应用系统开发过程中经常用到的一个功能[1],通常情况下客户端通过Http的Post方式或使用Ftp方式进行文件上传,但是采用以上两种方式在大数据量文件上传时,在上传进度的显示、上传文件的效率,以及断点续传方面仍存在一些缺陷。本文根据在题库系统建设中特点,需要用到大数据量的文件上传功能,集成到题库系统中去,上传到服务端根据当前日期自动创建日期文件夹中,并能实时显示文件上传的进度,结合WCF流模式数据传输技术,实现了客户端的文件上传功能,一方面客户端可以查看文件上传的进度,同时也大大提高了文件传输的效率。
2 WCF技术简介(WCF introduction)
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架[2],整合了原有的windows通讯的.net Remoting、WebService、Socket的机制[3]。WCF程序框架主要包含了四个方面,分别为契约、服务运行时、消息和寄宿[2]。契约属于一个服务公开接口的一部分[4]。一个服务的契约,定义了服务端公开的服务方法、使用的传输协议、可访问的地址、传输的消息格式等内容[5]。服务运行时定义了服务在运行时的具体行为。消息方面包含了消息的传输方式、消息的编码与解码。激活和宿主属于WCF程序的部署方式。根据WCF框架中数据流模式传输的特点,当客户端上传文件时,将文件转换为字节流方式分块传输,通过设置文件名、文件大小、文件偏移量和发送字节数组的数据契约,实现了客户端的文件上传操作,具体如图1所示。
3 文件传输服务端设计(File transfer server design)
对于WCF文件上传的服务端设计,主要包含了四个部分:文件上传服务契约的设计、文件上传服务的实现、文件服务的部署和服务的宿主程序设计[6]。
3.1 文件上传服务契约设计
文件上传服务契约主要包含了服务契约接口的设计和数据契约文件信息的定义,服务契约中主要定义了文件上传方法,参数是上传文件信息和对应保存的路径,数据契约包含了文件的基本信息,如程序所示。
在程序中,文件的偏移量属性用来记录当前文件已经传输的字节数,而定义发送的字节属性用于约定每次发送字节的大小。
3.2 文件上传服务的实现
文件上传服务主要是实现了IFileTransfer接口,通过接收客户端传递的文件对象及保存该文件的文件夹信息,首先判断根据当前日期创建的文件夹是否存在,如果不存在则先创建该日期文件夹,然后将接收到的字节数组和文件的偏移量通过二进制方式写入文件中。在服务端通过实现IFileTransfer接口,重写UploadFileInfo方法,返回数据契约约定的文件信息对象,如程序所示。
5 结论(Conclusion)
本文通过对WCF框架的介绍,结合WCF中数据流传输模式,设计了基于WCF的文件上传服务,实现了文件上传的服务器端和客户端的功能设计,并在题库建设系统中得到了具体的应用,尤其在大数据量文件上传过程中文件上传的效率得到了相应的提高 。
参考文献(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研究与开发[J].中国新技术新产品,2009,19:13.
[5] 黄森,刘丰.基于WCF的数据流传输方案研究与应用[J].计算机安全,2009,12:14-15.
[6] 胡兴梅,李玲.基于WCF的信息系统结构模型与体系架构的研究与设计[J].电脑知识与技术,2009,22:6198-6199.
[7] 陈品华,石林祥.WCF技术在中小企业的应用[J].微型电脑应用,2011,08:59-61.
[8] 周斌,茅维华.WCF在数字化校园建设中的应用[J].中山大学学报,2009,S1:335-337.
作者简介:
周 虎(1977-),男,硕士,讲师.研究领域:软件开发.