一种高效文件传输系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种高效文件传输系统的设计与实现
【摘要】本文就企业集约化管理的需求,信息化集成平台的应用推广,使用集成平台处理业务、数据、信息已经渗透到企业安全、生产各个环节。数据、文件之间共享被越来越多的集成应用系统所使用,如实时监测数据文本、图文图纸、资料文件等。在企业信息化集成平台的使用过程中,文件传输的效率起着有至关重要的作用。系统的实现,为公司综合调度数据集成、企业信息化文件共享提供了有效的基础支撑。
【关键词】传输系统;集成信息化;校验码;事件;监听机制
引言
目前,随着企业集约化管理的需求,使用集成平台处理业务、数据、信息已经渗透到企业安全、生产各个环节。数据、文件之间共享被越来越多的集成应用系统所使用,如实时监测数据文本、图文图纸、资料文件等,需要构建一套企业集成类信息化平台,对作业现场各子系统数据进行集成与应用,达到实时监视与集中调度的目标。在某些应用场景下,数据在传输过程中需要考虑上传的及时性与数据的连续性,以保证对现场环境的实时监视,以保证对预警和故障的及时处理;同时在应用分析过程中,需要对现场数据的连续性分析,以保证数据的完整性和数据分析结果的准确性。
常规的文件传输系统更适应于下行多于上行传输的场景。而在企业的信息化集成平台上,客户端对上传文件的需求更为强烈。客户端存在有大量的文件需要上传至服务器,以实现数据处理、解析与存储备份及文件归档存储与备份等。常规的文件传输系统有以下缺点:一、上行与下行不对等,更注重下行传输;二、传输权限不易控制,权限认证手段种类繁多,步骤繁琐,例如FTP模式;三、对于大量小文件和频繁传输的场景,文件传输效率低下,多数情况下需要验证请求再传输。
1.实现目标
本文针对现有企业生产过程实时监测与应用平台中,基层单位小文件,多客户端,安全高效频繁传输的应用需求,设计一种基于TCP协议的远程高效文件传输系统,达到数据及时、高效、稳定传输,主要实现基于文件夹、文件创建事件的监听触发上传机制;一次握手,终身传输机制;自定义分发机制,满足多种业务应用;分块多线程传输机制提高传输效率;分级故障诊断等系统功能,同时该系统的核心技术亦可作为企业网盘的核心技术。
2.设计实现
系统基于TCP/IP技术,采用Socket方式进行设计,面向SOA的架构思路,利用windows服务实现在服务端提供服务,定义好数据传输方式,传输协议,
数据格式,同时通过ip地址和端口进行服务访问。客户端通过连接服务器指定的端口进行消息交互。程序拓扑结构如图1所示。
图1 系统架构图
系统设计实现主要利用.Net Remoting技术,在windows 服务中注册文件传输服务,客户端利用Windows应用程序实现,在实现中利用分布式的设计思想,便于程序与系统功能扩展。
.NET远程处理(.NET Remoting)是微软.NET Framework 中的一种网络通信技术,提供了一种允许对象通过应用程序域与另一对象进行交互的框架。可以使用SOAP 以外的协议来通信,而在服务端和客户端之间所操作的方法近乎相同,客户端可以不必考虑使用的协议,即可访问服务端所开放的对象。
在Remoting中是通过通道(channel)来实现两个应用程序域之间对象的通信的。
客户端通过Remoting访问通道以获得服务端对象,再通过代理解析为客户端对象,远程对象代码运行在服务器上,然后客户端再通过Remoting连接服务器,获得该服务对象并通过序列化在客户端运行。
3.研究内容
3.1 统一权限认证体系的设计与实现
建立统一的权限认证体系,以控制文件传输权限,权限认证主要通过客户端调用服务器接口进行权限认证,如果正常登陆,则进行文件同步及创建监听事件。
3.2 大文件分块传输与算法设计
针对大文件传输特殊性要求,需要考虑对文件进行分块多线程进行传输,因此需要设定文件块大小的阈值,如512kb,小于等于512K时为小文件,反之为大文件;大文件分为多块之后,在传输之前每块均提取自身校验码;同时向服务器发送对应的文件基本信息及分块信息,校验码与文件均进行传输;同时系统根据文件分块个数分配多个线程的传输;单块数据传输后,仍使用同样的算法提取校验码,与原始校验码对比验证以确定当前数据块是否正确接收。各分块传输完成后,根据文件块索引,实现文件合并。
图2 文件分块传输逻辑图
3.3 文件转换库的设计
在某些特殊情况下,需要考虑规定接收文件的格式,比如图片类仅支持bmp、jpg、png和gif;客户端能够获取格式规定,并对本地的相关文件实现文件转换算
法,例如传输图片文件时,客户端生成tiff格式的文件,则必须将该文件转换为bmp、jpg、png或gif中的一种才可以上传。对于客户端本身操作的文件,不符合格式的文件都可以通过算法转换为标准格式的文件。
因此在文件版传输版本过程中,需要考虑文件转换库的设计,即记录客户端文件名称、文件特征码、文件扩展名、服务端文件名称、转换后文件特征码、文件扩展名,服务器在启动过程中,扫描服务器某目录下的文件列表名称及校验码,与客户端对应目录文件校验码进行第一次比对,对服务器端不存在或不一致的文件名及校验码进行同步上传,文件信息比对主要用在客户端启动时,其他时间主要通过文件夹或文件事件进行同步更新。
3.4 敏捷传输机制的设计
在传统的传输设计过程中,主要通过时间轮询的方式判断某目录下文件是否发生了变化,同时对于某些文件处于变化状态中,然后进行对应的事件,在这种情况下既不利于文件的及时传输与数据的更新,也不利于程序的设计实现,变化中的状态文件需要加锁进行处理,否则会造成文件半个的传输或者传输异常。