Farseer

导航

文件传输(一)---压缩文件

异构系统之间的交互有很多种方式,AX的AIF框架通过文件,Web Services和MSMQ等提供了实现各种交互方式的可能性,井底之蛙的缘故,总觉得这些方式有些隔靴搔痒的感觉,做为AX来说,它不可能针对其他的非主流异构系统提供相应的接口,它只能定一个接口标准,让其他的异构系统去按照它的格式准备数据,为了通用,它尽量采用XML等标准的格式文件,其它异构系统必须按照它的格式去准备接口数据,写这个接口这通常是一件痛苦的事情,比起让异构系统的人员了解AX的每个字段的含义,我宁可去了解其他系统的实现,在AX里做其他系统的接口,并且很多异构系统并没有那么理想可以支持AX提供的接口,并且在当前的网络状态下,效率也是问题,所以感觉AIF是个好东东,但有些理想,但愿有一天会遇到一个项目让我有机会玩玩这东东吧。

貌似跑题了。。。
记得听一个朋友说起,在上世纪90年代初期,那个时候他们各个分部之间传数据都是靠Mail的,现在应该也还是有很多公司在采用这种方式,虽然不是很可靠和高效,但大多数情况下足够用了,最近做一个项目需要在分公司和总部之间传递数据,网络不是很稳定,最基本的要求是文件要能可靠地传递,在网络断掉的情况下可以断点续传,提到可靠传输文件,我首先想到的是MQ,看过一些介绍MQ的文章,MQ的是异步传输文件的不错的方案,但IBM的MQ要Money。微软的MSMQ,花了一两天的时候在网上找相关的文档,想开发一个简单的测试的东西,在局域网上感觉还蛮不错的,没出什么问题,在测试Internet传递文件时,出了一些莫名其妙的问题,用Google把网络搜了个底朝天都没找到只言片语,MSMQ的资料实在是太少了,即使这个问题解决了,以后遇到其他的问题也不知道怎么解决了,做AX这个没多少人玩的东西已经够痛苦了,再招惹个更少人玩的MSMQ就不用活了,呵呵。于是放弃MQ,改用资料相对较多的FTP,微软的IIS组件包含FTP,免费的,别人的名字叫文件传输协议,所以就用它吧。
为了提高传输数据的效率和可靠性,需要:
1.压缩文件
2.断点续传
本文先说一下压缩文件的实现。
关于压缩文件,有很多实现的方式,参考了网上的很多资料,有通过调过在.NET中调用Winrar等压缩工具的应用程序的方式,网上也有人写了现成的类,有一篇blog对把文件压缩成zip文件的方式做了汇总,我在这里就不赘述了,文章的链接如下:
http://weblogs.asp.net/jgalloway/archive/2007/10/25/creating-zip-archives-in-net-without-an-external-library-like-sharpziplib.aspx
我最后采用了上文中提到的.NET Framework3.0新增的System.IO.Packaging 这个类库里的相关类,上文中关于压缩部分的代码已经有了,这里也转贴一下,只做了少许改动:

Code

解压部分的代码如下:

Code

 

posted on 2009-11-18 17:55  佛西亚  阅读(935)  评论(0编辑  收藏  举报