基于WebService的自升级框架WebSAUF: 一个ClickOnce替代方案

本文介绍了WebSAUF框架,这是一个替代ClickOnce的自升级解决方案,支持多种升级方式、文件压缩形式和客户端文件夹指定。框架具有可扩展性,允许自定义文件读写和压缩方法,适用于各种客户端应用系统的升级需求。文章详细阐述了框架的技术思路、处理流程、类层次结构,以及关键实现技术,包括可扩展性设计、GZipStream压缩处理、WebService代理类重构、命令行自升级方法和文件版本获取。
摘要由CSDN通过智能技术生成

(原创文章,转载请注明来源:http://blog.csdn.net/hulihui)

0 前言

>>[前言][第1节][第2节][第3节][第4节][第5节]

众所周知,诸如ASP.NET等的Internet应用系统易于发布与更新版本——只需要修改或增加服务器端程序。比较而言,通过光盘或安装程序发布的窗体应用程序或客户端系统,版本升级则要困难得多。为此,Microsoft在其.NET平台上提供了ClickOnce技术,该技术具有启动前更新或启动后更新(下次运行时安装)两种模式,但使用时客户端需要证书,也不能在下载前做文件压缩处理,不可指定客户端文件安装路径,主要针对.NET程序集,不能发布部署其他类型的文件(如数据库文件、非程序集文件)。显然,ClickOnce技术缺乏应用灵活性。

本文介绍的基于.NET WebService的可扩展客户端自升级框架WebSAUF(Web Smart Auto Upgrade Framework),具有如下功能和特性:

  • 可指定多种升级方式:版本比较(程序集版本或文件版本)、文件覆盖、新加文件;
  • 可指定文件压缩形式:可使用GZipStream/DeflateStream压缩文件,也能定制自己的文件压缩算法;
  • 可指定客户端文件夹:在升级文件配置清单中可以指定客户端文件的安装文件夹;
  • 可扩展读写文件方法:通过重写(override)服务器端GetUpgradeFiles与客户端SaveUpgradeFiles方法,可以扩展升级文件的读写行为;
  • 可扩展压缩处理方法:压缩方法类TCompressMethod的读写文件方法全部是protected virtual,均可以重写;
  • 独立性应用框架结构:独立的基于WebService升级文件服务器,独立的登录认证方式,独立的客户端应用类型,可以应用于各种类型的客户端应用系统。

本文内容如下:

  1. 技术思路与架构
  2. 关键实现技术
  3. 使用WebSAUF框架
  4. 总结与展望
  5. 版本与源码

1 技术思路与架构

>>[前言][第1节][第2节][第3节][第4节][第5节]

1.1 总体技术思路

  • 基于.NET WebService技术平台,采用多种文件压缩方法和程序升级形式,使用命令行程序自动升级指定文件夹的客户端文件;
  • 框架应用环境为Web服务器、Internet与客户端应用程序(见下图的应用模型图);
  • 系统设计与开发平台为.NET 2.0、VC# 2005;
  • WebSAUF框架具有独立性和可扩展性。

1.2 系统处理流程

客户端通过WebService请求Web服务器升级文件清单,然后在客户端比较本地的指定文件夹的同名文件,确定需要升级的文件名,接着下载这些升级文件并改名存储到同文件夹中,最后启动命令行bat进程、终止当前进程完成最后的删除原文件与改名升级文件操作。

1.3 框架的类层次结构

从应用或功能划分,WebSAUF框架有四组类:服务器端类(含一个升级文件配置清单文件)、客户端类、压缩方法类与辅助类,它们之间的关系见下图:

  • 服务器端
    • TSmartAutoUpgradeWebService泛型类:是服务器端WebService网页文件(asmx文件)程序代码的基类,它有TCompressMethod类型约束的泛型参数,定义了4个WebMethod:
      • GetRASPublicKey:获取服务器端RSA加密共钥;
      • Login:登录Web服务;
      • GetUpgradeFileList:获取服务器上的升级文件配置清单;
      • DownloadUpgradeFiles:下载服务器上的升级文件。
    • SmartAutoUpgradeFileConfig配置文件: 服务器端的升级文件配置清单,该xml文件包含一个<FileList>根节点元素与若干<File>元素,详细介绍参见第3节;
  • 客户端
    • TSmartAutoUpgradeClient泛型类: 是WebSAUF在客户端应用系统的基类,它具有TCompressMethod类型的泛型参数,定义了3个public方法、2个public属性与3个事件,具体使用见第3节;
    • WebService代理类TSmartAutoUpgradeWebServiceProxy:是服务器端类型TSmartAutoUpgradeWebService的客户端代理,VS开发工具的Web Reference引用时可创建该类,TSmartAutoUpgradeClient使用该代理类调用Web服务器的asmx网页。
  • 压缩方法类TCompressMethod:WebSAUF允许传输压缩文件,也允许定制自己的文件压缩算法。该类型提供了2个public方法ReadFile/SaveFile,它们可以调用4对protected virtual的文件Read/Save方法中的指定方法(无压缩、GZip、Deflate和Custom):
    • ReadFileWithoutCompress/SaveFileWithoutCompress:直接读写文件字节信息;
    • ReadFileByGZipCompress/SaveByGZipCompress:使用GZipStream组件读写文件字节信息;
    • ReadFileByDeflateCompress/SaveByDeflateCompress:使用DeflateStream组件读写文件字节信息;
    • ReadFileByCustomCompress/SaveByCustomCompress:使用自定义算法读写文件字节信息。
  • 辅助类: WebSAUF框架有若干辅助类,用来读取配置清单的文件信息、传递升级文件信息、定义事件参数等。
    • TRPCResult类:远程或本地操作结果的基类,具有属性RpcSuccess与Message,分别表示操作是否成功与处理消息;
    • TUpgradeFileConfig类:升级文件配置信息,具有属性FileName、UpgradeKind、CompressKind与Subdirectory,它们对应了配置文件的同名属性;
    • TUpgradeFileConfigCollection类:
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值