Microsoft Updater Application Block 1.3.3 BITSDownloader类设计 [翻译]
Microsoft Updater Application Block BITSDownloader类设计
译者:Tony Qu
BITSDownloader类是一个从http服务器拷贝文件的下载器,它是Updater Application Block的默认下载器。
问题描述
BITSDownloader类被设计用于解决以下问题
1. 一个可以被应用程序升级器使用的下载器类,该类能够从一个http服务器上下载需要的文件。
2. 下载文件时的健壮、可靠并且安全的连接是必需的。
设计目的、权衡与问题
下面是Updater Application Block开发人员认识到的设计目的和问题
1. 渴望通过异步下载机制加快速度
2. 下载器必须同时支持HTTP和HTTPS两种连接。
3. 下载器必须足够健壮以应对不可预料的事件或进程中止
4. 决定使用后台智能传输服务建立一个下载器,反映了一种在异步、健壮、安全的功能和使用COM而非复杂的BITS API之间权衡。
5. 由对BITS的依赖引出的第一个主要问题是,下载器的使用受支持BITS平台的限制。BITS目前在Windows 2000,Windows XP,Windows 2003上受到支持。 [windows2000上可能没有带BITS服务,如果发现问题,建议下载BITS服务安装包]
6. BITS使用当前的登录用户身份初始化传输。如果用户在启动一个传输后登出,传输会被挂起,并且直到用户重新登录后才会继续。在应用程序升级器中,与控制器应用程序相关联的身份会被BITS使用。如果使用一个基于窗口服务的控制器初始化下载,该服务必须保证控制器服务的用户资料必须加载。(当使用本地系统时,这是默认动作)
解决方案描述
BITSDownloader类是一个从http服务器拷贝文件的下载器,该类实现了IDownloader接口,并且能够被应用程序升级器作为一个下载器动态加载。
具体实现
BITSDownloader类位于Microsoft.ApplicationBlocks.ApplicationUpdater.Downloaders命名空间。它使用了许多COM交互类来调用BITS API。
当使用BITSDownloader类时,BITS Windows Service必须启动。你可以手动启动服务管理工具,或者通过键入net start BITS命令。
默认的BITS Windows服务安装已经被配置,如果你没有手动启动BITS服务,该设置能使该服务在需要的时候自动启动。
注意:你可以使用BITS传输静态内容,比如可执行文件、文本文件等,但不需要任何设置。如果你传输的是动态内容,比如ASP页面或者CGI脚本,你必须确认被拷贝的文件支持Content-Range和Content-Length头。更多信息可以参考MSDN上的BITS SDK Documentation
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。