Widget更新方法、系统、Widget客户端及Widget服务器的制作方法

文档序号:7762688阅读:296来源:国知局
专利名称:Widget更新方法、系统、Widget客户端及Widget服务器的制作方法
技术领域
本发明涉及通信技术,尤其涉及一种移动终端的Widget技术。
背景技术
Widget (微技)是一种小型的Web应用程序,与普通网页一样使用现有的标准 Web 技术开发,包括 HTML(HyperText Mark-up Language,超文本标记语言)、CSS(cading Style Sheet,级联样式表,是一组格式设置规则)、JavaScript ( 一种客户端脚本语言)、 XML (Extensible Markup Language,可扩展标记语言)禾口 Ajax (Asynchronous JavaScript and XML,异步JavaScript和XML)等。与普通网页的最显著区别就是,它不依赖于浏览器 显示框架,且被设计为具有特定的功能,如股票、天气预报、时钟、游戏等。由于Widget具备小巧轻便、功能完整、个性化形式多样等优势,因此已被应用到 移动终端领域,增强用户体验,提供高性价比的服务。而且Widget应用具有另一个特点—— 可更新性。即使Widget应用已经发布,也允许开发者不断地完善Widget应用,修复之前版 本的缺陷,或添加更多的功能。用户则可以下载最新的Widget应用,得到最新的、更合理的 体验。发布Widget应用时,是将该应用的所有本地文件,如javascript脚本或图片,遵 从zip ( —种文件格式)标准,使用deflate算法(一种计算机文件的压缩算法)或存储方 法打包整合起来,形成一个zip压缩文件,通常以.wgt为后缀名,如图1所示。符合Widget标准定义的Widget应用zip包由三部分组成文件数据区、文件目录 区和文件目录结束区。文件数据区表示压缩包内的文件数据,有多少个文件和目录就有多 少个文件数据区,这也是zip压缩包的主体部分,包含了所有文件的数据;每个文件数据区 都对应一个文件目录区,该部分只是记录了目录名或文件名,以及对应的文件数据区起始 位置在整个Zip文件中的偏移;文件目录结束区是zip压缩包的最后一部分,包含了压缩包 内目录、文件的数量,以及文件目录区的尺寸。根据zip格式内部的关系,当文件数据区发 生了变化,则文件目录区和文件目录结束区也会变化,但后两个区的信息量小,其尺寸占整 个zip包的比例非常小,有时可能都不到1%.以图1为例,现有名为weekdays的Widget 应用压缩包包含4个文件数据区,分别为index, html、config. xml、scripts、scripts/ dayfinder. js,同样包含4个文件目录区和1个文件目录结束区。当Widget应用包中只有少数文件发生修改时,则只有相应几个文件数据区发生 变化,其余大部分内容并未改变。此时,如果按照传统的Widget更新方式,将Widget应用 包数据全部下载。这样比较浪费网络资源,甚至产生额外的流量费用,并且数据交互过多又 会增加更新失败的风险。

发明内容
本发明要解决的技术问题是提供一种Widget更新方法、系统、Widget客户端及 Widget服务器,以提高更新效率。
5
为解决以上技术问题,本发明提供了一种微技(Widget)更新方法,该方法包括Widget客户端向Widget服务器发送更新请求;所述Widget服务器接收所述更新请求后,提取所述Widget客户端的当前版本应 用包与最新版本应用包,并进行比较;所述Widget服务器构造响应体并发送给所述Widget客户端,所述响应体包括根 据比较结果及预置的更新策略构造的更新文档;所述Widget客户端接收所述响应体,并根据所述更新文档进行更新。进一步地,所述Widget客户端发送的更新请求中携带Widget当前版本号,所述 Widget服务器根据所述Widget当前版本号获取所述当前版本应用包。进一步地,所述Widget服务器发送所述响应体时,更新所述Widget客户端和 Widget版本号的对应关系,所述Widget服务器接收所述更新请求时,根据所述widget客户 端及其对应关系获取所述当前版本应用包。进一步地,所述更新策略为根据发生变化的文件和信息构造所述更新文档;或,判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过,则将最新 版本的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文档。进一步地,所述Widget应用包包括文件数据区、文件目录区和文件目录结束区, 将所述Widget客户端的当前版本应用包与最新版本应用包进行比较包括解析当前版本应用包和最新版本应用包;将当前版本和最新版本分别生成一个数据区序列,其中每个文件数据区内容 (Data)及其对应的文件/目录名(ID)作为数据区序列的一个节点;将最新版本的每个节点与当前版本的每个节点逐一进行比较,如果ID相同,Data 不同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如果最新版本没有相应 的ID,则标记为删除;所述更新文档包括更新的文件数据区信息、新增的文件数据区信息、删除的文件 数据区信息以及最新版本文件目录区和文件目录结束区。进一步地,所述更新的文件数据区信息包括ID以及Data,所述新增的文件数据 区信息包括ID,所处当前版本应用包中的位置以及Data,所述删除的文件数据区信息包括 ID。进一步地,所述响应体还包括更新文档类型指示,用于指示该更新文档为全部更 新文档或部分更新文档;所述Widget客户端根据所述更新文档类型指示判断更新文档类 型;更新文档为全部更新文档时,所述Widget客户端将更新文档替代当前Widget应用包; 更新文档为部分更新文档时,所述Widget客户端根据更新文档对当前Widget应用包对应 部分进行更新。进一步地,所述Widget客户端根据所述更新文档进行更新包括解析所述更新文档,提取其中的Data和对应的ID,且按更新、删除、新增标记进行 分类表示管理,同时提取文件目录区和文件目录结束区内容。解析当前版本应用包包,按顺序识别出每个文件数据区,及其对应的ID,形成压缩 包数据区管理序列(OrigSeq);
6
将所述更新文档中标记为删除的文件数据区从OrigSeq序列中删除;将所述更新 文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数据区;将所述更新文档 中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中;将新版本的文件目录区 和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本的压缩包数据区管理序 列(NewSeq)。为解决以上技术问题,本发明还提供了一种微技(Widget)服务器,所述Widget服 务器包括网络交互单元,用于接收Widget客户端发送的更新请求,以及向所述Widget客户 端发送响应体,所述响应体包括更新文档;Widget应用包数据库,用于存储各版本Widget应用包;版本比较单元,用于将所述Widget客户端的当前版本应用包与最新版本应用包 进行比较;响应体构造单元,用于根据比较结果及预置的更新策略,构造所述更新文档,以及 构造响应体。为解决以上技术问题,本发明还提供了一种微技(Widget)客户端,所述Widget客 户端包括网络交互单元,用于向Widget服务器发送更新请求,以及接收所述Widget服务 器发送的响应体,所述响应体包括更新文档,所述更新文档是所述Widget服务器根据所述 Widget客户端的当前版本应用包与最新版本应用包的比较结果和更新策略构造的;所述Widget更新单元,用于根据所述更新文档完成Widget更新。本发明技术中,Widget服务器根据当前版本应用包与最新版本应用包的比较结果 生成更新文档,Widget客户端根据该更新文档进行Widget更新,从而可实现Widget的部 分更新,并有效提高更新效率。


图1是Widget应用的zip包格式;图2是本发明Widget更新方法的示意图;图3是本发明实施例Widget服务器实现更新的流程图;图4是本发明实施例Widget客户端完成更新的流程图;图5是本发明Widget服务器版本内容比较判定算法流程图;图6是本发明Widget更新系统的示意图;图7是Widget服务器的版本比较单元的模块结构示意图;图8是Widget客户端的Widget更新单元的模块结构示意图;图9是部分更新模块的模块结构示意图。
具体实施例方式本发明技术中,Widget服务器根据当前版本应用包与最新版本应用包的比较结果 生成更新文档,Widget客户端根据该更新文档进行Widget更新,从而可实现Widget的部 分更新。
如图2所示,本发明Widget更新方法包括步骤201 微技(Widget)客户端向Widget服务器发送更新请求;步骤202 所述Widget服务器接收所述更新请求后,提取所述Widget客户端的当 前版本应用包与最新版本应用包,并进行比较;Widget服务器包括但不限于以下两种方式获得Widget客户端当前版本应用包方式一所述Widget客户端发送的更新请求中携带Widget当前版本号,所述 Widget服务器根据所述Widget当前版本号获取所述当前版本应用包。如果该Widget服务器可提供多个Widget的应用包,则该更新请求还应该携带相 应的Widget标识或名称,以与版本号一起唯一的确定一个Widget应用包。方式二 所述Widget服务器发送所述响应体时,更新所述Widget客户端和 Widget版本号的对应关系,所述Widget服务器接收所述更新请求时,根据所述widget客户 端及其对应关系获取所述当前版本应用包。所述Widget应用包包括文件数据区、文件目录区和文件目录结束区,将所述 Widget客户端的当前版本应用包与最新版本应用包进行比较包括al.解析当前版本应用包和最新版本应用包;bl.将当前版本和最新版本分别生成一个数据区序列,其中每个文件数据区内容 (Data)及其对应的文件/目录名(ID)作为数据区序列的一个节点;cl.将最新版本的每个节点与当前版本的每个节点逐一进行比较,如果ID相同, Data不同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如果最新版本没有 相应的ID,则标记为删除。步骤203 所述Widget服务器构造响应体并发送给所述Widget客户端,所述响应 体中包括根据比较结果及预置的更新策略构造的更新文档;具体的更新策略可以灵活设置,包括但不限于以下策略策略一根据发生变化的文件和信息构造所述更新文档;策略二 判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过, 则将最新版本的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文 档。优选地,采用第二种策略。本发明中也将根据发生变化的文件和信息构造的更新文档称为部分更新文档,将 根据最新版本全部文件构造的更新文档称为全部更新文档。步骤204 所述Widget客户端接收所述响应体,并根据所述更新文档进行更新。所述(部分)更新文档包括更新的文件数据区信息、新增的文件数据区信息、删除 的文件数据区信息以及最新版本文件目录区和文件目录结束区,具体地所述更新的文件数据区信息包括文件/目录名以及文件数据区内容,所述新增的 文件数据区信息包括文件/目录名,所处当前版本应用包中的位置以及文件数据区内容, 所述删除的文件数据区信息包括文件/目录名。若更新策略采用策略二,则所述响应体还包括更新文档类型指示,用于指示该更 新文档为全部更新文档或部分更新文档;所述Widget客户端根据所述更新文档类型指示 判断更新文档类型;更新文档为全部更新文档时,所述Widget客户端将更新文档替代当 前Widget应用包;更新文档为部分更新文档时,所述Widget客户端根据更新文档对当前Widget应用包对应部分进行更新。若更新文档是根据发生变化的文件和信息构造而成,则所述Widget客户端根据 所述更新文档进行更新包括a2.解析所述更新文档,提取其中的Data和对应的ID,且按更新、删除、新增标记 进行分类表示管理,同时提取文件目录区和文件目录结束区内容。b2.解析当前版本应用包包,按顺序识别出每个Data,及其对应的ID,形成压缩包 数据区管理序列(OrigSeq);c2.将所述更新文档中标记为删除的文件数据区从OrigSeq序列中删除;将所述 更新文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数据区;将所述更新 文档中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中;将新版本的文件目 录区和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本的压缩包数据区管 理序列(NewSeq)。实施例一本发明Widget更新方法包括A. Widget客户端发送携带当前Widget应用版本号(Vl),和Widget应用 URI (Uniform Resource Identifier,通用资源标志符)的更新网络请求给相应的Widget 服务器;B. Widget服务器接收到网络请求后,执行策略判断——从本地服务器中取出Vl 版本的Widget应用包,和最新版本的Widget应用包进行比较;C. Widget服务器构造并返回响应体;如果新版本Widget应用包中发生变化的文件数量比较多(如超过设定阈值),或 者发生变化的文件总尺寸占Widget应用包比例很大(如超过设定阈值),则直接将新版本 的Widget应用包作为A步骤的响应体返回给Widget客户端;如果只有少数文件发生了更改,且尺寸比例较小,服务器则构造一个部分更新文 档,其中包含了更新的文件数据区信息、新增的文件数据区信息、删除的文件数据区信息和 文件目录区、文件目录结束区。将该文档作为A步骤的响应体返回给Widget客户端;D. Widget客户端收到服务器的响应体后,完成更新。如果响应体中为Widget应用包,则Widget客户端将其全部接收,替换旧版本 Widget应用包;如果响应体中是部分更新文档格式,则Widget客户端解析读取文档中的文件数 据区信息,替换当前版本中对应的文件数据区,或删除指定数据区,或插入新增的文件数据 区到指定位置。最后用文档中的文件目录区和文件目录结束区替换当前版本的相应部分, 完成Widget应用包的更新流程。实施例二从Widget服务器角度描述,本发明Widget更新方法包括微技(Widget)服务器 接收Widget客户端发送的更新请求后,提取所述Widget客户端的当前版本应用包与最新 版本应用包,并进行比较;所述Widget服务器构造响应体并发送给所述Widget客户端,所 述响应体包括根据比较结果及预置的更新策略构造的更新文档。更新策略可为前述策略一或策略二,优选地,该实施例采用策略二,下面将结合附图及实施例对本发明Widget服务器的处理流程进行更详细的说明,其中更新策略中,设置 发生变化的文件的数量比例阈值Tl和大小比例阈值T2分别为60%和70%。如图3所示,Widget服务器实现更新的方法包括301. Widget服务器接收到Widget客户端发送的更新请求,解析出Widget应用名 和当前应用版本号;302. Widget服务器从存储Widget应用的数据库中读取指定版本号和名称的 Widget应用包,以及最新版本的Widget应用包;303. Widget服务器根据zip压缩文件标准,解析当前版本Widget应用包和最新 版本Widget应用包,按顺序将每个文件数据区内容(data)和对应的文件名或目录名信息 (id)构造一个节点加入到序列结构中,生成两个数据区序列,当前版本应用包的数据区序 列为Seql,最新版本应用包的数据区序列为Seq2 ;304. Widget服务器按顺序读取Seq2的每个节点,根据内容比较判定算法(参考图 5),与Seql序列中的节点比较,如果有同文件名或目录名(即id相同)的数据区,则继续 判断其数据区内容data是否相同,若内容不同,表示该数据区发生更新,将Seq2的该节点 标记为更新;如果没有相同id的数据区,则该数据区为新增的,将Seq2的该节点标记为新 增;当遍历Seql中的节点,发现该节点的id并未与Seq2中某节点id—致,则将Seql中的 该节点标记为删除。305. Widget服务器进行更新策略判断。遍历Seq2序列,得到待更新和新增文件 数据区的数量和总大小,如果发生变化的数据区数量过多,超过了 Tl,或者总大小占整个 Widget应用包的比例较大,超过了 T2,则不适合部分更新,执行全部更新策略,转到306’ 步骤,如果发生变化的数据区数量和总大小均小于相应阈值,则执行部分更新策略,306步 骤;306. Widget服务器构造部分更新文档。以XML标记语言为例。该文档中应包含更 新的文件数据区信息、新增的文件数据区信息、删除的文件数据区信息,以及新版本文件目 录区和文件目录结束区。对于每个更新的文件数据区,由一个<updateEntry></updateEntry>元素表示。 至少包含如下属性ID表示该数据区对应的文件/目录名,length表示该数据区的大小。 开标签〈updateEntry〉与闭标签〈/updateEntry〉之间的内容为更新后的文件数据区,其长 度与length属性值一致,且可以为0。对于每个删除的文件数据区,由一个〈delEntryX/delEntry〉元素表示。至少包 含如下属性ID表示该数据区对应的文件/目录名。对于每个新增的文件数据区,由一个<newEntry></newEntry>元素表示。至少包 含如下属性ID表示该数据区对应的文件名或目录名,position表示该数据区应被插入的 位置,length表示该数据区的大小。开标签〈newEntry〉与闭标签〈/newEntry〉之间的内 容为新增的文件数据区,其长度与length属性值一致,且可以为0。对于文件目录区和文件目录结束区,由<endEntry></endEntry>元素表示,至少 包含如下属性length表示该数据区的大小。开标签〈endEntry〉与闭标签〈/endEntry〉之 间的内容为新版本文件目录区和文件目录结束区正文,其长度与length属性值一致。由此,就构成了一个以XML结构表示的部分更新文档。以图1为例,若部分更新文档为如下形式<updateDescription><updateEntry ID =”config. xml” length =” 400” >config. xml 正文数据</updateEntry><updateEntry ID =,,index, html” length =” 1200" >index. html 正文数据</updateEntry><delEntry ID = " scripts/dayf inder. js" X/delEntry><newEntry ID = "sciripts/daySearch. js,,position ="3"length =,,600,,>daySearch. js IE文数据 </newEntry><endEntry length =,,100,,>......</endEntry></updateDescription>则表示,有两个需要更新的文件数据区,一个删除的文件数据区,和一个新增的文 件数据区,它应被插在第三个文件数据区之后。306’ . Widget服务器执行全部更新策略。服务器从存储Widget应用的数据库中 读取指定最新版本的Widget应用包,将它作为更新文档。307. Widget服务器构造Widget客户端更新请求的响应体,按照具体的应 用层协议封装,若为部分更新,则将部分更新文档作为响应体正文,并指示相应的 MIME (Multipurpose Internet Mail Extensions,多功能网络邮件扩展)类型,对于 XML 文 档,则MIME类型为appl ication/xml,表示XML类型的应用,若为全部更新,则将最新版本的 Widget应用包直接作为更新请求响应体的正文,并指定MIME类型为application/Widget, 表示Widget类型的应用;308. Widget服务器将封装后的响应体通过网络发送给Widget客户端,完成 Widget服务器侧的更新流程。实施例三从Widget客户端的角度描述,本发明Widget更新方法包括微技(Widget)客户 端向Widget服务器发送更新请求;所述Widget客户端接收Widget服务器发送的响应体, 所述响应体包括更新文档,所述更新文档是所述Widget服务器根据所述Widget客户端的 当前版本应用包与最新版本应用包的比较结果和更新策略构造的;所述Widget客户端根 据所述更新文档进行更新。下面将结合附图及实施例对本发明Widget客户端的处理流程进行更详细的说 明,如图4所示,实施例中Widget客户端进行更新的流程包括401. Widget客户端接收到Widget服务器对更新请求的响应体,解析得到MIME类 型和正文数据;402.更新类型判断;判断依据是MIME类型,如果MIME类型是application/Widget,则表示全部更新, 正文数据为新版本Widget应用包,直接用其替换当前版本Widget应用包,执行409’ ;如果 MIME类型是application/xml,则表示部分更新,正文数据是部分更新文档,继续执行403。403.解析部分更新文档。解析所述更新文档,提取其中的Data和对应的ID,且按更新、删除、新增标记进行分类表示管理,同时提取文件目录区和文件目录结束区内容构造一个更新数据区节点序列(updateSeq),为每个〈updateEntry〉生成一个节 点,以ID属性值作为节点标识,并保存该元素的数据区内容;构造一个删除数据区节点序 列(delSeq),为每个〈delEntry〉构造一个节点,以ID属性值作为节点标识。构造一个新增 数据区节点序列(newSeq),为每个〈newSeq〉构造一个节点,以ID属性值作为节点标识,并 保存position属性值和数据区内容;最后将文档中的〈endEntry〉元素内容(文件目录区 和文件目录结束区)保存到缓冲区(bufferl)中。404.解析当前版本Widget应用包; 按顺序识别出每个文件数据区内容,及其对应的文件/目录名,形成压缩包数据 区管理序列(OrigSeq),具体地,遵从zip格式标准,将每个文件数据区内容提取出来构 成节点,以该数据区所代表的文件名或目录名作为节点标识,形成一个文件数据区序列 (OrigSeq),序列的最后一个节点保存了文件目录区和文件目录结束区内容。将所述更新文档中标记为删除的文件数据区从OrigSeq序列中删除;将所述更新 文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数据区;将所述更新文档 中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中;将新版本的文件目录区 和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本的压缩包数据区管理序 列(NewSeq)。即执行以下步骤405至408 ;405.遍历删除数据区节点序列delSeq,完成删除操作;依次根据每个节点的ID标识值,在当前Widget应用文件数据区序列OrigSeq中 找到对应的节点,将该节点删除;406.遍历更新数据区节点序列updateSeq,完成对应节点的内容更新操作;具体地,根据每个节点(Node2)的ID标识值,在OrigSeq序列中找到对应的节点 (Nodel),将Node2节点的文件数据区内容替换到Nodel节点的数据区。407.遍历新增数据区节点序列newSeq,完成新增操作;根据节点的ID和数据区内容构造一个新的节点,插入到OrigSeq序列中position 属性所指位置的节点之后。408.将新版本的文件目录区和文件目录结束区内容(buffer 1)替换到OrigSeq最 后一个节点的数据区;至此完成更新。如果delSeq或newSeq或updateSeq为空,则不执行相应步骤。409.至此,OrigSeq已经是存储了更新后数据区的序列,将每个节点的数据区内 容写入到本地临时文件中。409’ .执行全部更新,将响应体正文直接保存到本地临时文件中;410.删除当前版本Widget应用包,将临时文件名改为同名Widget应用,完成 Widget应用的更新。图5是Widget服务器进行版本内容比较的算法流程图501.从新版本数据区序列Seq2的N2位置开始取节点,N2初始值为0。502.如果N2节点为空,表示Seq2序列已经遍历完成,结束,否则与Seql序列的节 点进行比较,执行503步骤;503.从附位置开始遍历Seql序列(附初始值为0),直至找到ID标识一致的节
12点,或者Seql遍历结束;504.如果m节点和N2节点中ID标识一致,即表示同一个文件名或目录名的文件 数据区,则执行数据区内容判断,是否发生了更新,506步骤,如果没有从Seql中找到ID — 致的节点,则将执行505;505.表示Seql中没有与N2节点ID标识一致的节点,N2节点是新增节点。则将 N2标识为“新增”,并且指向Seq2下一个节点,重复501 ;506.表示Seql中存在与N2对应的节点,假设该节点位于Seql的N3位置,则附 到N3之间的节点在Seq2中没有对应,将它们标记为“删除”;507.判断N3节点与N2节点的文件数据区内容是否相同。如果相同,则执行509 跳过继续遍历Seq2 ;如果不相同,执行508 ;508.表示Seql的N3节点内容发生了更新,将N2节点标记为“更新”;509.同ID的节点比较完成,指向Seq2的下一个节点,指向Seql的N3+1节点,继 续进行节点比较,重复501步骤,直至Seq2遍历结束。为实现以上方法,本发明还提供了一种Widget更新系统,如图6所示,该系统包括 微技(Widget)客户端及Widget服务器,所述Widget客户端包括网络交互单元,用于向Widget服务器发送更新请求,以及接收所述Widget服务器 发送向响应体,所述响应体包括更新文档;所述Widget客户端发送的更新请求中携带Widget当前版本号,所述Widget服务 器的版本比较单元根据所述Widget当前版本号获取所述当前版本应用包。所述Widget更新单元,用于根据所述更新文档完成Widget更新;所述Widget服务器包括网络交互单元,用于接收所述更新请求,以及向所述Widget客户端发送所述响应 体;Widget应用包数据库,用于存储各版本Widget应用包;版本比较单元,用于将所述Widget客户端的当前版本应用包与最新版本应用包 进行比较;响应体构造单元,用于根据比较结果及预置的更新策略,构造所述更新文档,以及 构造响应体。所述更新策略为根据发生变化的文件和信息构造所述更新文档;或,判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过,则将最新 版本的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文档。所述Widget应用包包括文件数据区、文件目录区和文件目录结束区,具体地,如 图7所示,所述Widget服务器的版本比较单元包括Widget包内容提取模块,用于将当前版本和最新版本分别生成一个数据区序列, 其中每个文件数据区内容(Data)及其对应的文件/目录名(ID)作为数据区序列的一个节占.
^ \\\ 版本比较模块,用于将最新版本的每个节点与当前版本的每个节点逐一进行比 较,如果ID相同,Data不同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如
13果最新版本没有相应的ID,则标记为删除;所述响应体构造单元构造的(部分)更新文档包括更新的文件数据区信息、新增 的文件数据区信息、删除的文件数据区信息以及最新版本文件目录区和文件目录结束区。所述更新的文件数据区信息包括文件/目录名以及文件数据区内容,所述新增的 文件数据区信息包括文件/目录名,所处压缩包中的位置,以及文件数据区内容、删除的文 件数据区信息包括文件/目录名。进一步地,所述响应体还包括更新文档类型指示,用于指示该更新文档为全部更 新文档或部分更新文档;如图8所示,所述Widget更新单元包括更新判断模块、全部更新模 块及部分更新模块;更新判断模块,用于根据更新文档类型指示判断更新文档类型;全部更新模块,指示为全部更新文档时,用于将所述更新文档替代当前Widget应 用包;部分更新模块,指示为部分更新文档时,用于根据所述更新文档对当前Widget应 用包对应部分进行更新。进一步地,如图9所示,所述部分更新模块包括更新文档分析子模块,用于解析所述更新文档,提取其中的Data和对应的ID,且 按更新、删除、新增标记进行分类表示管理,同时提取文件目录区和文件目录结束区内容;Widget包内容提取子模块,用于解析当前版本应用包包,按顺序识别出每个文件 数据区内容,及其对应的文件/目录名标识,形成压缩包数据区管理序列(OrigSeq);Widget包内容更新子模块,用于将文档中标记为删除的文件数据区从OrigSeq序 列中删除;将所述更新文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数 据区;将所述更新文档中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中; 将新版本的文件目录区和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本 的压缩包数据区管理序列(NewSeq)。本发明还提供了一种Widget服务器,所述Widget服务器包括网络交互单元,用于接收Widget客户端发送的更新请求,以及向所述Widget客户 端发送响应体,所述响应体包括更新文档; 所述Widget客户端发送的更新请求中携带Widget当前版本号,所述Widget服务 器的版本比较单元根据所述Widget当前版本号获取所述当前版本应用包。Widget应用包数据库,用于存储各版本Widget应用包;版本比较单元,用于将所述Widget客户端的当前版本应用包与最新版本应用包 进行比较;响应体构造单元,用于根据比较结果及预置的更新策略,构造所述更新文档,以及 构造响应体。所述更新策略为根据发生变化的文件和信息构造所述更新文档;或,判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过,则将最新 版本的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文档。比如, 如果数量和大小均各自小于某阈值,则部分更新;反之,如果发生更新的文件数据区过多,或者发生更改的文件数据区大小较大,则全部更新。进一步地,所述Widget应用包包括文件数据区、文件目录区和文件目录结束区, Widget服务器的版本比较单元遍历两个版本的数据区序列,比较其中数据区的变化,并记 录发生更新的文件数据区数量和大小,用于更新方式决策判断。具体而言,如果对应的文件 数据区内容(即,表示同一个文件或目录的数据区)发生了更新,则对该文件数据区进行标 记,并记录其大小;如果有新增的文件数据区,则也对该数据区标记,同时记录其大小。最终 得到了内容发生变化的文件数据区数量,以及总大小。具体地,所述Widget服务器的版本比较单元包括Widget包内容提取模块,用于将当前版本和最新版本分别生成一个数据区序列, 其中每个文件数据区内容(Data)及其对应的文件/目录名(ID)作为数据区序列的一个节占.
^ \\\ 版本比较模块,用于将最新版本的每个节点与当前版本的每个节点逐一进行比 较,如果ID相同,Data不同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如 果最新版本没有相应的ID,则标记为删除;所述响应体构造单元构造的(部分)更新文档包括更新的文件数据区信息、新增 的文件数据区信息、删除的文件数据区信息以及最新版本文件目录区和文件目录结束区。 部分更新文档可以使用XML或其他约定的标记语言。所述更新的文件数据区信息包括文件/目录名以及文件数据区内容,所述新增的 文件数据区信息包括文件/目录名,所处当前版本应用包中的位置,以及文件数据区内容、 删除的文件数据区信息包括文件/目录名。另外,本发明还提供了一种微技(Widget)客户端,所述Widget客户端包括网络交互单元,用于向Widget服务器发送更新请求,以及接收所述Widget服务 器发送的响应体,所述响应体包括更新文档,所述更新文档是所述Widget服务器根据所述 Widget客户端的当前版本应用包与最新版本应用包的比较结果和更新策略构造的;所述Widget更新单元,用于根据所述更新文档完成Widget更新。所述(部分)更新文档包括更新的文件数据区信息、新增的文件数据区信息、删 除的文件数据区信息以及最新版本文件目录区和文件目录结束区,所述更新的文件数据区 信息包括文件/目录名以及文件数据区内容,所述新增的文件数据区信息包括文件/目录 名,所处当前版本应用包中的位置,以及文件数据区内容、删除的文件数据区信息包括文件 /目录名。进一步地,所述响应体还包括更新文档类型指示,用于指示该更新文档为全部更 新文档或部分更新文档;所述Widget更新单元包括更新判断模块,用于根据更新文档类型指示判断更新文档类型;全部更新模块,更新文档为全部更新文档时,用于将更新文档替代当前Widget应 用包;部分更新模块,更新文档为部分更新文档时,用于根据更新文档对当前Widget应 用包对应部分进行更新。所述部分更新模块包括更新文档分析子模块、更新文档分析子模块,用于解析所述更新文档,提取其中的Data和对应的ID,且按更新、删除、新增标记进行分类表示管理,同时提取文件目录区和文件目录结束区内容;Widget包内容提取子模块,用于解析当前版本应用包包,按顺序识别出每个文件 数据区内容,及其对应的文件/目录名标识,形成压缩包数据区管理序列(OrigSeq);Widget包内容更新子模块,用于将文档中标记为删除的文件数据区从OrigSeq序 列中删除;将所述更新文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数 据区;将所述更新文档中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中; 将新版本的文件目录区和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本 的压缩包数据区管理序列(NewSeq)。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令 相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘 等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应 地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的 形式实现。本发明不限制于任何特定形式的硬件和软件的结合。本发明方法、系统及设备,通过比较Widget客户端当前版本和最新版本的应用 包,并根据比较结果和预置更新策略生成具有针对性的更新文档,进而Widget客户端根据 该更新文档进行Widget更新,可以有效提供更新效率,尤其是当发生变化的文件数量或大 小较少时,可以更有效地利用了无线网络资源,减少了 Widget应用更新的网络交互时间, 降低了可能的网络异常导致更新失败的风险。
权利要求
一种微技(Widget)更新方法,其特征在于,该方法包括Widget客户端向Widget服务器发送更新请求;所述Widget服务器接收所述更新请求后,提取所述Widget客户端的当前版本应用包与最新版本应用包,并进行比较;所述Widget服务器构造响应体并发送给所述Widget客户端,所述响应体包括根据比较结果及预置的更新策略构造的更新文档;所述Widget客户端接收所述响应体,并根据所述更新文档进行更新。
2.如权利要求1所述的方法,其特征在于所述Widget客户端发送的更新请求中携带 Widget当前版本号,所述Widget服务器根据所述Widget当前版本号获取所述当前版本应 用包。
3.如权利要求1所述的方法,其特征在于所述Widget服务器发送所述响应体时,更 新所述Widget客户端和Widget版本号的对应关系,所述Widget服务器接收所述更新请求 时,根据所述widget客户端及其对应关系获取所述当前版本应用包。
4.如权利要求1所述的方法,其特征在于,所述更新策略为根据发生变化的文件和信息构造所述更新文档;或,判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过,则将最新版本 的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文档。
5.如权利要求1所述的方法,所述Widget应用包包括文件数据区、文件目录区和文件 目录结束区,其特征在于将所述Widget客户端的当前版本应用包与最新版本应用包进行 比较包括解析当前版本应用包和最新版本应用包;将当前版本和最新版本分别生成一个数据区序列,其中每个文件数据区内容(Data) 及其对应的文件/目录名(ID)作为数据区序列的一个节点;将最新版本的每个节点与当前版本的每个节点逐一进行比较,如果ID相同,Data不 同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如果最新版本没有相应的 ID,则标记为删除;所述更新文档包括更新的文件数据区信息、新增的文件数据区信息、删除的文件数据 区信息以及最新版本文件目录区和文件目录结束区。
6.如权利要求5所述的方法,其特征在于所述更新的文件数据区信息包括ID以及 Data,所述新增的文件数据区信息包括ID,所处当前版本应用包中的位置以及Data,所述 删除的文件数据区信息包括ID。
7.如权利要求1所述的方法,其特征在于,所述响应体还包括更新文档类型指示,用于 指示该更新文档为全部更新文档或部分更新文档;所述Widget客户端根据所述更新文档 类型指示判断更新文档类型;更新文档为全部更新文档时,所述Widget客户端将更新文档 替代当前Widget应用包;更新文档为部分更新文档时,所述Widget客户端根据更新文档对 当前Widget应用包对应部分进行更新。
8.如权利要求1或7所述的方法,其特征在于所述Widget客户端根据所述更新文档 进行更新包括解析所述更新文档,提取其中的Data和对应的ID,且按更新、删除、新增标记进行分类表示管理,同时提取文件目录区和文件目录结束区内容;解析当前版本应用包包,按顺序识别出每个Data,及其对应的ID,形成压缩包数据区 管理序列(OrigSeq);将所述更新文档中标记为删除的文件数据区从OrigSeq序列中删除;将所述更新文 档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数据区;将所述更新文档中 标记为新增的文件数据区按照指定位置插入到OrigSeq序列中;将新版本的文件目录区和 文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本的压缩包数据区管理序列 (NewSeq) 0
9.一种微技(Widget)服务器,其特征在于,所述Widget服务器包括网络交互单元,用于接收Widget客户端发送的更新请求,以及向所述Widget客户端发 送响应体,所述响应体包括更新文档;Widget应用包数据库,用于存储各版本Widget应用包;版本比较单元,用于将所述Widget客户端的当前版本应用包与最新版本应用包进行 比较;响应体构造单元,用于根据比较结果及预置的更新策略,构造所述更新文档,以及构造 响应体。
10.如权利要求9所述的服务器,其特征在于所述更新策略为 根据发生变化的文件和信息构造所述更新文档;或,判断发生变化的文件的数量和/或大小是否超过预设阈值,如果超过,则将最新版本 的全部文件作为更新文档,否则根据发生变化的文件和信息构造所述更新文档。
11.如权利要求9所述的服务器,其特征在于所述Widget应用包包括文件数据区、文 件目录区和文件目录结束区,所述Widget服务器的版本比较单元包括Widget包内容提取模块,用于将当前版本和最新版本分别生成一个数据区序列,其中 每个文件数据区内容(Data)及其对应的文件/目录名(ID)作为数据区序列的一个节点; 版本比较模块,用于将最新版本的每个节点与当前版本的每个节点逐一进行比较,如 果ID相同,Data不同,则标记为更新,如果当前版本没有相应的ID,则标记为新增,如果最 新版本没有相应的ID,则标记为删除;所述响应体构造单元构造的更新文档包括更新的文件数据区信息、新增的文件数据区 信息、删除的文件数据区信息以及最新版本文件目录区和文件目录结束区。
12.一种微技(Widget)客户端,其特征在于,所述Widget客户端包括网络交互单元,用于向Widget服务器发送更新请求,以及接收所述Widget服务器发送 的响应体,所述响应体包括更新文档,所述更新文档是所述Widget服务器根据所述Widget 客户端的当前版本应用包与最新版本应用包的比较结果和更新策略构造的; 所述Widget更新单元,用于根据所述更新文档完成Widget更新。
13.如权利要求12所述的Widget客户端,其特征在于,所述响应体还包括更新文档 类型指示,用于指示该更新文档为全部更新文档或部分更新文档;所述Widget更新单元包 括更新判断模块,用于根据更新文档类型指示判断更新文档类型; 全部更新模块,更新文档为全部更新文档时,用于将更新文档替代当前Widget应用包;部分更新模块,更新文档为部分更新文档时,用于根据更新文档对当前Widget应用包 对应部分进行更新。
14.如权利要求13所述的Widget客户端,其特征在于所述部分更新模块包括 更新文档分析子模块,用于解析所述更新文档,提取其中的文件数据区内容(Data)及其对应的文件/目录名(ID),且按更新、删除、新增标记进行分类表示管理,同时提取文件 目录区和文件目录结束区内容;Widget包内容提取子模块,用于解析当前版本应用包包,按顺序识别出每个Data,及 其对应的ID,形成压缩包数据区管理序列(OrigSeq);Widget包内容更新子模块,用于将文档中标记为删除的文件数据区从OrigSeq序列 中删除;将所述更新文档中标记为更新的文件数据区替换OrigSeq序列中对应的文件数据 区;将所述更新文档中标记为新增的文件数据区按照指定位置插入到OrigSeq序列中;将 新版本的文件目录区和文件目录结束区替换OrigSeq序列的相应区域,形成一个新版本的 压缩包数据区管理序列(NewSeq)。
15.一种微技(Widget)更新系统,其特征在于所述系统包括如权利要求9至11中任 一项所述的Widget服务器以及如权利要求12至14中任一项所述的Widget客户端。
全文摘要
本发明涉及一种Widget更新方法、系统、Widget客户端及Widget服务器。该方法包括Widget客户端向Widget服务器发送更新请求;所述Widget服务器接收所述更新请求后,提取所述Widget客户端的当前版本应用包与最新版本应用包,并进行比较;所述Widget服务器构造响应体并发送给所述Widget客户端,所述响应体包括根据比较结果及预置的更新策略构造的更新文档;所述Widget客户端接收所述响应体,并根据所述更新文档进行更新。本发明可以实现部分更新,提高更新效率。
文档编号H04L29/08GK101977217SQ201010513880
公开日2011年2月16日 申请日期2010年10月15日 优先权日2010年10月15日
发明者张锐利 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1