Microsoft Updater Application Block 1.3.3 BITSDownloader类设计 [翻译]

news/2024/7/7 18:59:26

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





http://www.niftyadmin.cn/n/3656218.html

相关文章

linux后台执行(nohup)之大坑

问题场景 通过xshell远程登录服务器,然后启动几个后台服务,验证后服务功能都正常,ok! 然后过了一段时间发现服务器有问题,排查之后发现,有一个服务莫名的挂了,通过日志定位到接收到SIGHUP信号,…

Microsoft Updater Application Block 1.4.1 验证器设计 [翻译]

Microsoft Updater Application Block 验证器设计 译者:Tony Qu Updater Application Block提供了一个可扩展的验证器架构,这使通过签名或哈希号验证下载文件成为可能。验证器架构支持在服务器上生成签名和在客户端上确认这些签名。 图1 展示了服务器端的…

Microsoft Updater Application Block 1.3.1 下载器设计 [翻译]

Microsoft Updater Application Block 下载器设计 译者:Tony Qu Updater Application Block使用一个可扩展的下载器架构从指定的服务器上拷贝manifest文件和应用程序升级文件到客户端。 图1 展示了下载器架构 图1 包括下列过程 1. ApplicationUpdateManager类使用U…

av_buffersrc_add_frame返回-22

合并音频流时调用av_buffersrc_add_frame()返回-22,切换为av_buffersrc_add_frame_flags(),并指定AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT参数,正常通过。av_buffersrc_add_frame()根本问题参数问题,音频滤镜初始化参数配置错误&#…

Microsoft Updater Application Block 1.1 设计篇 [翻译]

Microsoft Updater Application Block 设计篇 译者:Tony Qu Updater Application Block为企业环境中解决桌面应用程序的更新问题提供了一个“无接触”解决方案。它包含一系列组件,每一个组件被设计用来实现更新过程中的一个特定的角色。 高级设计 图1展示…

ring buffer 环形队列 C++实现

RingBuff.h实现&#xff1a; #include <iostream>using namespace std;template <class T> class RingBuff { private:unsigned int m_size;int m_in;int m_out;T* m_data;public:RingBuff (unsigned int size): m_size(size), m_in(0), m_out(0){m_data new T[m…

Microsoft Updater Application Block 1.2.1 核心设计(core design) [翻译]

Microsoft Updater Application Block 核心设计(core design) 译者&#xff1a;Tony Qu Updater Application Block由一个核心应用程序升级器&#xff08;集合[assembly]名称为ApplicationUpdater&#xff09;和许多额外的assembly接口和工具组成。 Updater Application Bl…

pcm格式封装wav

PCM PCM编码是直接存储声波采样被量化后所产生的非压缩数据,故被视为单纯的无损耗编码格式,其优点是可获得高质量的音频信号。 PCM是模拟音频信号经模数转换&#xff08;A/D变换&#xff09;直接形成的二进制序列&#xff0c;该文件没有附加的文件头和文件结束标志。 要将这样…