CN105260209A - 一种程序热更新解决方法 - Google Patents
一种程序热更新解决方法 Download PDFInfo
- Publication number
- CN105260209A CN105260209A CN201510681642.7A CN201510681642A CN105260209A CN 105260209 A CN105260209 A CN 105260209A CN 201510681642 A CN201510681642 A CN 201510681642A CN 105260209 A CN105260209 A CN 105260209A
- Authority
- CN
- China
- Prior art keywords
- program
- client
- file
- renewal
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种程序热更新解决方法,包括:校验流程,校验客户端程序,根据文件是否存在差异进行相应的操作行为;更新流程,并对客户端程序的差异文件执行并发的事件队列操作,完成对差异文件的更新;通过文件校验数据对执行更新流程后的客户端程序进行监测。本发明的有益效果为:客户程序可以在启动后的任意时刻切换至热更新模块,根据服务器的版本校验数据、文件校验数据,在不退出、不重启的情况下完成对程序内容、逻辑的增删改操作,更新完毕后无需退出程序,直接继续运行后续内容,从而实现对程序热更新。
Description
技术领域
本发明涉及一种程序热更新解决方法,属于计算机软件领域。
背景技术
现有的程序更新通常采用在程序启动时运行单独的辅助进程来进行,从而实现对业务主进程进行更新。这种程序更新方式,在更新的过程中会一次或多次的在两个或多个进程中进行切换,来完成版本检测、版本更新的目的。这种传统的更新方式不仅繁琐,而且限定了更新的时机必须处于主进程退出后。
首先在很多平台上(如IOS)切换进程就是一种不可行的解决方案。其次当程序开发者已经发现问题所在并解决完毕后却无法即时的无缝的把修正后的内容更新到用户的程序内。再者由于很多第三方因素(如需要平台运营商需要对更新的所有内容进行审核,时长约为3-5天)可能会导致修复问题所消费的时间成本非常高昂,修复问题的效率极其低下。最后,如果用户长时间不退出主进程可能会导致更新解决问题的时间可能被无限延长,问题带来的损失可能被无限扩大。
另外很多移动平台(如GooglePlay/ApppStore)传统的整包更新更是会导致每次更新体积过大,冗余文件极多,用户更新的成本非常高。非常的浪费网络流量和用户的时间。
发明内容
针对现有技术的高昂的时间成本和低下的效率,本发明公开了一种程序热更新解决方法,用于在启动后的任意时刻切换至热更新模块,根据服务器的版本校验数据、文件校验数据,在不退出、不重启的情况下完成对程序内容、逻辑的增删改操作,更新完毕后无需退出程序,直接继续运行后续内容,而实现对程序高效更新。
本发明的技术方案包括一种程序热更新解决方法,包括:校验流程,接入服务器的客户端程序会执行热更新,然后从资源服务器下载校验数据,并对比版本校验数据和客户端程序数据,且对比过程中会产生对应的事件队列,如果出现对比差异,则对客户端程序进行更新;更新流程,从服务器下载所需的更新文件,并对客户端程序的差异文件执行并发的事件队列操作,完成对差异文件的更新;监察流程,通过文件校验数据对执行更新流程后的客户端程序进行监测,如果监测到客户端程序文件与服务器不处于同步状态,则向用户提示跟新失败,并使客户端程序文件回退至热更新之前的状态,否则,提示更新成功。
进一步,所述一种程序热更新解决方法还包括:在客户端程序运行的任意时刻都能够进行热更新,且热更新流程正确的执行完毕后,所述客户端程序会运行更新后的逻辑。
进一步,所述一种程序热更新解决方法还包括:校验过程生成的对应事件队列包括删除、下载、增量修复及完整替换行为。
优选的,所述一种程序热更新解决方法包括:更新过程中的对于事件队列的行为:删除、下载、增量修复、完整替换都能够并发运行,其中下载、增量修复、完整替换行为支持从中断处继续的机制。
优选地,在一次具体实施过程中,所述一种程序热更新解决方法包括:当行为事件队列执行完毕后会进行运行结果的监测,并通过文件校验数据确认当前客户端程序文件已经处于与服务器同步状态,如果不处于同步状态,则执行客户端回退至热更新前的操作。
进一步,所述一种程序热更新解决方法还包括:在客户端程序进行校验、更新的过程中,客户端程序处于活跃状态,在客户端程序更新成功后,不需要重启客户端程序并能够根据修正结果正确运行。
进一步,所述一种程序热更新解决方法还包括:在客户端程序进行校验、更新的过程中,客户端程序处于活跃状态,在客户端程序更新成功后,不需要重启客户端程序并能够根据修正结果正确运行。
优选地,在一次具体实施过程中,所述一种程序热更新解决方法包括:在更新过程中资源服务器能够选择是否对大资源、零散资源进行压缩、合并等操作,更新过程会根据资源服务器的要求进行整包更新或零散文件更新,更新过程会根据资源服务器发送资源的不同方式对应处理方式。
本发明的有益效果为:客户程序可以在启动后的任意时刻切换至热更新模块,根据服务器的版本校验数据、文件校验数据,在不退出、不重启的情况下完成对程序内容、逻辑的增删改操作,更新完毕后无需退出程序,直接继续运行后续内容,从而实现对程序热更新。
附图说明
图1所示为根据本发明实施方式的方法流程图;
图2所示为根据本发明实施方式的校验流程图;
图3所示为根据本发明实施方式的更新流程图;
图4所示为根据本发明实施方式的行为列表图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。本发明的一种程序热更新解决方法适用于软件的测试和开发。
图1所示为根据本发明实施方式的方法流程图。在资源服务器上面保存着当前最新版本的客户端文件数据、版本校验数据、文件校验数据,其中版本校验数据与文件校验数据是根据最新的待更新的客户端文件数据而生成的。具体包括如下操作流程:
程序热更新中的校验过程,当客户端连接到服务器被要求运行热更新或客户端需要运行热更新的位置时,将会切换启动热更新模块,优先获取本地的版本校验数据、文件校验数据,然后连接资源服务器申请最新的版本校验数据。
客户端会根据获取到的资源服务器的版本校验数据与本地的版本校验数据进行比对,如果一致那么将不会进行后续更新,继续运行后续程序逻辑;如果不一致,或者本地的版本校验数据获取失败,那么客户端程序会向服务器请求最新的文件校验数据。
当成功获取文件校验数据后,将根据最新的文件校验数据开始校验本地客户端文件数据,根据校验结果,将生成一份详尽的带执行事件队列。(其中版本校验过程与文件校验过程如图2所示。)
若事件队列存在,则进入程序热更新中的更新过程,会根据事件队列内的行为类型并发运行删除、下载、增量修复、完整替换等行为。行为列表中任何一项都支持从中断处继续的机制。(如图4所示)当其中某步流程执行失败后会询问用户是否重试,当所有行为事件队列执行完毕后,客户端会根据获取的资源服务器文件校验数据对本地最新的文件进行再次校验,通过则更新成功。不通过可以重新更新或者放弃本次更新。
在校验、更新的全过程中主程序始终处于活跃状态,不需要其他辅助进程完成主程序更新。更新完毕后也不需要重新启动主进程,可以根据修正结果正确运行。
在更新过程中资源服务器可以选择是否对大资源、零散资源进行压缩、合并等操作,更新过程会根据资源服务器的要求进行整包更新或零散文件更新。更新过程会根据资源服务器发送资源的不同方式有着相对应的处理方法。
其中图2为根据本发明实施方式的校验流程图,会对客户端程序实施版本和文件的校验、下载、检测,以确保热更新完成。
其中图3所示为根据本发明实施方式的更新流程图,包括检测版本,通过版本数据比对确认是否需要进行更新,如果需要更新则初始化下载目录、搜索下载更新包,下载成功会进行解压并实施上述的热更新流程。
图4所示为根据本发明实施方式的行为列表图,是属于事件队列的行为,包括增加、删除、增量修复、完全替换等,用于对差异文件实施热程序更新。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (8)
1.一种程序热更新解决方法,其特征在于,该方法包括:
校验流程,接入服务器的客户端程序会执行热更新,然后从资源服务器下载校验数据,并对比版本校验数据和客户端程序数据,且对比过程中会产生对应的事件队列,如果出现对比差异,则对客户端程序进行更新;
更新流程,从服务器下载所需的更新文件,并对客户端程序的差异文件执行并发的事件队列操作,完成对差异文件的更新;
监察流程,通过文件校验数据对执行更新流程后的客户端程序进行监测,如果监测到客户端程序文件与服务器不处于同步状态,则向用户提示跟新失败,并使客户端程序文件回退至热更新之前的状态,否则,提示更新成功。
2.根据权利要求1所述的一种程序热更新解决方法,其特征在于:
在客户端程序运行的任意时刻都能够进行热更新,且热更新流程正确的执行完毕后,所述客户端程序会运行更新后的逻辑。
3.根据权利要求1所述的一种程序热更新解决方法,其特征在于,所述的事件队列包括:
校验过程生成的对应事件队列包括删除、下载、增量修复及完整替换行为。
4.根据权利要求3所述的一种程序热更新的方法,其特征在于:
更新过程中的对于事件队列的删除、下载、增量修复、完整替换行为都并发运行,其中的下载、增量修复、完整替换行为支持从中断处继续的机制。
5.根据权利要求3所述的一种程序热更新解决方法,其特征在于:
当行为事件队列执行完毕后会进行运行结果的监测,并通过文件校验数据确认当前客户端程序文件已经处于与服务器同步状态,如果不处于同步状态,则执行客户端回退至热更新前的操作。
6.根据权利要求1所述的一种程序热更新解决方法,其特征在于:
在客户端程序进行校验、更新的过程中,客户端程序处于活跃状态,在客户端程序更新成功后,不需要重启客户端程序并能够根据修正结果正确运行。
7.根据权利要求1所述的一种程序热更新解决方法,其特征在于:
所述校验流程中下载的校验数据为最新的校验数据,包括程序校验数据和文件校验数据,且,程序校验数据、文件校验数据及客户端程序数据没有相互依赖关系,能够根据自身数据类型完成对应部分的校验过程。
8.根据权利要求7所述的一种程序热更新解决方法,其特征在于:
在更新过程中资源服务器能够选择是否对大资源、零散资源进行压缩、合并等操作,更新过程会根据资源服务器的要求进行整包更新或零散文件更新,更新过程会根据资源服务器发送资源的不同方式对应处理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681642.7A CN105260209A (zh) | 2015-10-20 | 2015-10-20 | 一种程序热更新解决方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681642.7A CN105260209A (zh) | 2015-10-20 | 2015-10-20 | 一种程序热更新解决方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105260209A true CN105260209A (zh) | 2016-01-20 |
Family
ID=55099912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510681642.7A Pending CN105260209A (zh) | 2015-10-20 | 2015-10-20 | 一种程序热更新解决方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260209A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528229A (zh) * | 2016-11-03 | 2017-03-22 | 北京像素软件科技股份有限公司 | 一种游戏热更新方法及装置 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
WO2017157178A1 (zh) * | 2016-03-15 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 一种移动终端应用程序的更新方法和装置 |
CN107256161A (zh) * | 2017-06-13 | 2017-10-17 | 广发证券股份有限公司 | 基于electron技术的客户端升级方法 |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN108958827A (zh) * | 2017-05-25 | 2018-12-07 | 贵州白山云科技有限公司 | 一种处理程序升级故障的方法和系统 |
CN109857432A (zh) * | 2019-01-14 | 2019-06-07 | 珠海金山网络游戏科技有限公司 | 一种游戏应用的热更新方法和装置 |
CN111913730A (zh) * | 2020-07-15 | 2020-11-10 | 上海莉莉丝科技股份有限公司 | 用户无感的应用程序内更新方法及用户端、程序服务器 |
CN112068872A (zh) * | 2020-09-11 | 2020-12-11 | 上海湃睿信息科技有限公司 | 基于内网软件的云管理平台 |
US11797296B2 (en) | 2019-06-20 | 2023-10-24 | Boe Technology Group Co., Ltd. | Hot updating method of script file package and hot updating device of script file package |
-
2015
- 2015-10-20 CN CN201510681642.7A patent/CN105260209A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017157178A1 (zh) * | 2016-03-15 | 2017-09-21 | 阿里巴巴集团控股有限公司 | 一种移动终端应用程序的更新方法和装置 |
CN106528229B (zh) * | 2016-11-03 | 2019-07-30 | 北京像素软件科技股份有限公司 | 一种游戏热更新方法及装置 |
CN106528224A (zh) * | 2016-11-03 | 2017-03-22 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
CN106528229A (zh) * | 2016-11-03 | 2017-03-22 | 北京像素软件科技股份有限公司 | 一种游戏热更新方法及装置 |
CN108958827B (zh) * | 2017-05-25 | 2021-11-02 | 贵州白山云科技股份有限公司 | 一种处理程序升级故障的方法和系统 |
CN108958827A (zh) * | 2017-05-25 | 2018-12-07 | 贵州白山云科技有限公司 | 一种处理程序升级故障的方法和系统 |
CN107256161A (zh) * | 2017-06-13 | 2017-10-17 | 广发证券股份有限公司 | 基于electron技术的客户端升级方法 |
WO2019019643A1 (zh) * | 2017-07-26 | 2019-01-31 | 深圳壹账通智能科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN107729041B (zh) * | 2017-07-26 | 2020-10-20 | 深圳壹账通智能科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN107729041A (zh) * | 2017-07-26 | 2018-02-23 | 上海壹账通金融科技有限公司 | 应用程序热更新方法、装置、终端和存储介质 |
CN109857432A (zh) * | 2019-01-14 | 2019-06-07 | 珠海金山网络游戏科技有限公司 | 一种游戏应用的热更新方法和装置 |
US11797296B2 (en) | 2019-06-20 | 2023-10-24 | Boe Technology Group Co., Ltd. | Hot updating method of script file package and hot updating device of script file package |
CN111913730A (zh) * | 2020-07-15 | 2020-11-10 | 上海莉莉丝科技股份有限公司 | 用户无感的应用程序内更新方法及用户端、程序服务器 |
CN112068872A (zh) * | 2020-09-11 | 2020-12-11 | 上海湃睿信息科技有限公司 | 基于内网软件的云管理平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260209A (zh) | 一种程序热更新解决方法 | |
WO2017067448A1 (zh) | 一种无线固件升级方法、系统及计算机存储介质 | |
CN105681060B (zh) | 一种虚拟化网络功能管理升级方法、装置及服务器 | |
CN108170448B (zh) | 一种自动化高效进行软件更新版本发布的系统 | |
US20140304697A1 (en) | Method and system for upgrading software | |
CN106325929A (zh) | 一种固件升级方法、固件升级装置、冰箱和服务端 | |
US9471300B2 (en) | Wireless firmware upgrades to an alarm security panel | |
CN104918114B (zh) | 一种操作系统升级方法及装置 | |
US20040188511A1 (en) | System to automatically process components on a device | |
CA2875828C (en) | Auto-update while running client interface with handshake | |
CN103218242B (zh) | 一种自动更新的方法 | |
JP2002297411A (ja) | 実行中アプリケーションソフトのモジュール化方式による更新システムおよびその方法 | |
CN107995284B (zh) | 一种适用于pos机的ota升级方法 | |
CN103530150A (zh) | 一种Linux操作系统远程更新的方法 | |
CN106843933A (zh) | 一种应用程序的漏洞修复方法、移动终端及补丁服务器 | |
CN101778376A (zh) | 一种实现固件无线更新的方法及装置 | |
CN101826026A (zh) | 嵌入式设备、嵌入式设备中固件在线升级的系统及方法 | |
CN101950254B (zh) | 一种软件更新方法和系统 | |
CN110730090B (zh) | 云环境中代理端批量更新方法、装置、介质及电子设备 | |
CN105808278A (zh) | 一种客户端版本升级方法及装置 | |
CN110908681A (zh) | 一种软件升级的方法和装置 | |
CN115202680A (zh) | 在线远程自动升级本地客户端的系统及方法 | |
CN111698558A (zh) | 电视软件升级方法、电视终端及计算机可读存储介质 | |
US7340738B2 (en) | Time optimized replacement of a software application | |
CN108664255B (zh) | 一种软件升级方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160120 |
|
RJ01 | Rejection of invention patent application after publication |