发明名称 一种基于智能客户端的按需下载实现方法
摘要 本发明提供一种基于智能客户端的按需下载实现方法,旨在解决低速网络下的智能客户端程序更新问题,并且通过可配置的方式以功能为单位进行程序的更新。提供了可配置和可扩展的下载定义配置,应用程序可以根据实际情况灵活配置。客户端的下载更新过程完全自动化,无需人工干预。部署环节中加强了对异常的处理,发生异常之后,程序在下载启动时会自动更新。下载项可以在使用时下载,变相的降低了网络的流量,降低了新补丁对客户端的影响范围。
申请公布号 CN101719073B 申请公布日期 2012.10.03
申请号 CN200910230910.8 申请日期 2009.11.20
申请人 浪潮集团山东通用软件有限公司 发明人 王兴山;魏亮;黄伟
分类号 G06F9/445(2006.01)I;H04L29/06(2006.01)I;H04L29/08(2006.01)I 主分类号 G06F9/445(2006.01)I
代理机构 代理人
主权项 一种基于智能客户端的按需下载实现方法,其特征在于,通过下载定义、发布部署、下载更新三个部分实现智能客户端的按需下载;具体步骤如下:1)下载定义下载定义由下载项定义、下载单元定义和自更新下载项定义三部分组成;下载项是对智能客户端程序中物理文件的描述,下载单元是对智能客户端中的功能使用到的下载项描述,下载项的结构如下:下载项的配置信息最终以XML格式存储,并且需要部署到指定的目录下,使其生效;在定义下载项时需要定义下载项的行为方式,下载项的行为方式是指下载项被下载到客户端之后,执行的动作,这些动作有注册GAC、Activex、COM+;下载单元的配置信息最终以XML格式存储,并且需要部署到指定的目录下,使其生效;客户端在下载更新时,下载的最小粒度是下载项,下载项被下载到客户端之后会记录下载项的版本,其它下载单元在下载时,由于下载项客户端版本与服务端版本一致,下载项不用下载,在下载项被多个下载单元引用的情况下,只更新一次;下载单元包含的下载项被更新之后,会记录下载单元的版本,客户端在执行更新时判断下载单元在客户端与服务端记录的版本是否一致,如果一致下载单元就不需要更新,这样加快了检测更新的速度;自更新下载项定义了在下载完成之后使用自更新方式进行部署更新的下载项;2)发布部署发布部署是生成下载项版本、下载单元版本信息以及下载包的过程,具体的步骤如下:(1)把下载定义中定义好的下载项、下载单元配置文件部署到服务端指定目录,使其生效;(2)把下载定义中定义的下载项物理文件部署到系统中,生成下载项版本信息,版本信息采用MD5散列值算法生成,文件的内容不发生变化,文件版本不变,客户端无需更新;(3)根据下载项配置的“下载时文件名称”使用标准的压缩算法压缩下载 项指定的物理文件,形成下载包,物理文件被压缩之后,客户端在下载物理文件时能有效的降低下载量;(4)复制压缩的下载包到客户端访问到的http路径下,供客户端下载;(5)在下载单元配置文件中查找所有引用此下载项的下载单元,并为下载单元生成版本信息;3)下载更新下载更新包含的组件有版本检测组件、下载组件、部署组件、自更新组件四部分;步骤一:使用版本检测组件检测更新,客户端通过下载单元ID查找客户端下载单元的版本,并与服务端记录的下载单元版本比较,如果一致则返回为没有下载,如果不一致,从服务器获取所有的下载单元引用的下载项版本信息,并与客户端存储的下载项版本信息比较,如果不一致或者客户端不存在下载项,则记录此下载项需要下载,最后返回下载单元版本信息与需要下载的下载项版本列表,先判断下载单元版本和采用下载单元版本验证和下载项版本验证的双重验证方式,有利于提高版本判断的效率,缩短程序的响应时间;步骤二:根据版本检测组件返回的结果,如果返回结果为空则说明不需要更新,如果返回下载单元版本和下载项版本列表信息,则启用下载组件执行下载项的下载;步骤三:启动下载组件执行下载,下载时采用http请求的方式下载下载项中定义的下载文件,单个下载项下载完毕之后,会把下载项版本缓存到客户端临时文件中,待所有的下载项都被下载完毕之后,记录下载单元版本到客户端临时文件中;如果下载过程中出现失败,系统给出提示,由用户确认是否需要重新下载,如果选择否,退出下载,删除下载过程中生成的临时文件;下载项被成功下载之后,记录下载项版本,有利于在程序出现错误时,继续执行文件的更新,增强了程序的健壮性;步骤四:判断下载的下载项是否存在于自更新下载项列表中,如果不存在,则执行步骤五启用部署组件,如果存在,则执行步骤六启用自更新组件;步骤五:启动部署组件,下载组件执行完毕之后,使用标准的压缩算法为下载包解包,解包之后,文件的命名按照下载项中定义的文件名称命名,解包的文件存储到临时目录中,待所有的下载包解包完毕之后,根据客户端记录的临时的下载项版本找到下载项在客户端的更新路径和行为方式,如果存在行为方式,需要先执行历史文件的反行为方式,再执行文件的覆盖,最后执行新文件的行为方式;下载项部署更新成功之后,删除在客户端的临时下载项版本信 息,并记录到客户端下载项版本信息中,当所有的下载项都更新完毕之后,记录下载单元版本信息到客户端下载单元版本中,并删除客户端的临时下载单元版本信息;如果部署过程中出现错误,系统会提示重启应用程序尝试执行部署,应用程序在重新启动时会首先判断在客户端的临时下载单元版本信息和客户端的临时下载项版本信息是否为空,如果不为空,启动部署组件,执行文件的部署;压缩下载包有利于降低文件在网络的传入量,增强了程序在低带宽下的适应能力;步骤六:启动自更新组件,下载组件执行完毕之后,使用标准的压缩算法为下载包解包,解包之后,文件的命名按照下载项中定义的文件名称命名,当下载的下载项在自更新下载项列表中时,启动自更新组件,启动自更新组件时,需要关闭当前下载的主进程,并启动新的进程执行自更新,并且所述新的进程所在的程序集要保持独立,不能与版本检查组件、下载组件、部署组件存在直接的引用关系,文件的更新方式与步骤五相同;如果下载的下载项中包含了自更新组件本身使用的下载项,需要先执行自更新组件的部署和更新,然后启动自更新组件,更新程序与自更新程序的分离,能确保客户端所有文件都能够被更新。
地址 250014 山东省济南市历下区山大路224号