阿里云客户端的实现支持文件分块,断点续传,进度,速度,倒计时显示

一,以实际案例引入阿里云的运用

好多人都在玩概念,玩什么概念,比如工业4.0

什么叫工业4.0,简单一点理解就是 “互联网” + “制造”(互联网+)。再通俗一些的理解就是“互联网”做电商销售,“制造”就是传统生产。

最终做到有了订单才生产,真正做到了按需生产,解决了企业物料损耗,库存堆积等问题。

比如:以印刷厂为案例来说工业4.0,一个印刷厂,客户下单才印刷,不能先印刷一堆东西堆在库存里吧!

先可以看一个流程示意图:

1,客户通过销售平台下单(印刷数量,规格,付款,以及上传需要印刷的文件,与普通电商销售平台的区别体现在上传文件这儿)

2,通过一个服务(ESB),把客户的订单信息,文件数据流转到印刷厂的生产系统。

今天我重点要说的就是ESB服务,怎样高效稳定的把文件从销售平台转到生产系统。

需求:

1,因为订单量大,每天有2至3T的文件从销售平台流向生产系统。

2,这些文件至少要保存一个月左右,有可能返工印刷(算下来企业最小极限要有100个T的存储服务器)。

经过多方面的考虑,建议选择阿里云的存储。

二,阿里云存储OSS的开发

1,支持目录结构的文件,普通文件的传输。

2,销售平台端上传文件到阿里云服务器,支持多线程的(分块上传,分块校验,断点续传,重试,文件MD5值检验,进度,速度,需要用时的显示)

3,ESB服务从阿里云服务器下载文件,支持多线程的(分块下载,分块校验,断点续传,重试,文件MD5值检验,进度,速度,需要用时的显示)

4,把下载的文件经过一系统的预检,处理,最终拷贝到生产系统。

5,反馈文件处理结果到销售平台,生产系统。

这几个需求促使我们有必要开发一个个性化的阿里云客户端,这个客户端已经满足了我上面说的的需求。

三,具体开发介绍

 3.1程序目录结构的介绍

不管会不会写程序的,只要是懂点IT的,聊到程序时,都会聊到点架构。落伍一些的就聊“三层架构”,牛批一些的就聊“分布式架构”,在博客园里都能找到上十种的架构。

在这儿,我就不画架构图了,就以目录来说我的程序架构。

显而易见:

这个程序最底层的架构:服务端  + 客户端。

服务端:数据库的持久化操作,和一些公用接口,比如获取服务器时间服务。

客户端:UI的数据呈现,下载,文件处理等的业务逻辑。

其中客户端又包含了一个UI框架:

这个框架是MVVM模式,相当于B/S结构中的MVC。

这个UI框架:

1,实现了XAML与C#代码的分离

2,实现在IOC的控制反转的模式

3,利用观察者模板实现了模块与模块之间的解耦

3.2关键核心的架构代码:

代码片段1:

因为整个程序,各个程序之间互相不添加引用,只要在生成项目的时候用这样的命令把dll文件拷贝到UI框架目录下即可

xcopy $(TargetPath) $(SolutionDir)FileTransfer.Client\bin\Debug /y
xcopy $(TargetPath) $(SolutionDir)FileTransfer.Client\bin\Release /y