2007年3月24日星期六

AutoUpdate:overview


AutoUpdate是一个基于webservice和ftp的更新工具,其中webservice用来发现和更新该工具中的更新引擎,而ftp用来传输更新文件。
左边的图显示了自动更新工具AutoUpdate的几个主要部件的协作关系。





  1. client启动,首先检查本地更新引擎的版本,如果引擎不存在则简单地返回“0.0.0.0”,也就是最低版本;如果引擎存在,则读取它的AssemblyVersion。
  2. client调用服务器端的updateservice,并将本地引擎版本传递给服务器
  3. server检查发布的最新引擎版本,如果新引擎版本高于client的版本,则返回需要更新引擎的消息给client
  4. client调用服务器的updateservice获得最新的引擎。引擎被序列化为二进制的数据,到本地由client反序列化并保存在客户机上。接着client启动更新引擎。
  5. 更新引擎调用服务器的web service获得更新描述文件updatemanifest.xml,然后解析该xml文件生成操作(opreation)序列。操作序列中的每个操作都包含了操作的文件对象和操作类型,比如是增加还是删除之类。
  6. 操作序列中的具体操作被顺序执行。如果有新增(覆盖也被归为新增)操作会先从服务器上下载文件。
我总结了一下,自动更新应该具有以下几个特点:
  • 更新设置应该在服务端设定,应为我们不可能去客户端更改设置
  • 更新的启动程序应该尽可能简单,最好只有一个功能:检查现有的更新引擎是否需要更新,如果需要则先下载该引擎
  • 真正的更新由更新引擎去执行,这样可以自由变更更新引擎
  • 更新内容有配置文件设定,这里下载xml文件来描述,具有通用性
  • 更新引擎一般比较小,可以通过webservice的方式直接传递到客户机
  • 更新文件通过ftp方式下载,可以保证快速更新
  • 支持从不同的低版本升级到最新版本。在服务端定义一个版本升级策略的映射文件,根据客户端传递过来的不同的版本号取不同的升级文件,比如oldversion_to_latestversion.xml

没有评论: