CN108446219B - 应用程序的操作方法、***、介质和计算设备 - Google Patents
应用程序的操作方法、***、介质和计算设备 Download PDFInfo
- Publication number
- CN108446219B CN108446219B CN201810173068.8A CN201810173068A CN108446219B CN 108446219 B CN108446219 B CN 108446219B CN 201810173068 A CN201810173068 A CN 201810173068A CN 108446219 B CN108446219 B CN 108446219B
- Authority
- CN
- China
- Prior art keywords
- scheme information
- verification
- information
- main process
- application program
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明的实施方式提供了一种应用程序的操作方法,该应用程序包括第一方案信息和第二方案信息,该方法包括:在应用程序的主进程中运行第一方案信息,并开启至少一个子进程;在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果;根据验证结果,使主进程继续运行第一方案信息或者切换为运行第二方案信息。本发明的方法不仅使得新技术方案能够得到可行性验证,而且准备多个方案作为可选方案,并且能够在用户无感知的情况下进行切换,从而显著地降低了应用程序无法正常运行的可能性,减少了对用户的干扰,为用户带来了更好的体验。此外,本发明的实施方式提供了一种应用程序的操作***、一种介质和一种计算设备。
Description
技术领域
本发明的实施方式涉及计算机领域,更具体地,本发明的实施方式涉及一种应用程序的操作方法、***、介质和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在整个计算机领域,基于移动客户端开发的移动应用程序(Application,简称为APP)被赋予日渐丰富的功能,使得越来越多的用户愿意选择在移动客户端上安装移动应用程序来实现工作、娱乐等各方面的需求。随着技术的发展,应用程序会进行功能迭代和产品升级,在升级发版之后,新的功能和特性可能存在不兼容等可行性问题,现有技术中有一些针对可行性问题的处理手段,例如,可以在新版本发布之前,在现有的测试机型上进行测试验证,如果测试通过,则发布版本,反之则选择其他技术方案,直到测试通过后发布版本,但是由于测试条件存在局限和约束,当新的技术方案在测试阶段通过,但是上线之后发现问题,则会对用户使用产生影响,严重时可能导致程序无法运行,再例如,现有技术中,可以在版本发布之后,先选取一部分用户进行新功能的灰度验证,当这部分用户对新功能验证通过后,再逐渐扩大应用发布的用户,如果新功能灰度验证不通过则需要修改,之后再重新发布应用程序版本或者进行功能热修复,之后再重新进行灰度验证,直到验证通过才能扩大用户群,这种方式中,如果发现新的技术方案在灰度用户中存在不兼容等可行性问题,则需要选择回滚至旧的技术方案后重新发布应用程序或者进行热修复,这样会造成开发成本的提升以及放弃新技术方案的大面积推广应用,如果重新发布应用程序,需要用户同意升级应用,会打扰用户,而且在发现问题到修复问题之前的这段时间,用户无法正常使用应用程序,而且现有的线上灰度验证方式通常是选择一部分用户进行验证,以这部分用户的程序执行结果作为是否推广使用的依据,如果恰好灰度用户没有出现问题,而正式铺开使用后却存在问题,则造成的影响可能更大。
针对相关技术中的上述问题,目前还未提出有效的解决方案。
发明内容
但是,相关技术中进行新版本技术方案的可行性测试验证时,由于测试验证的条件和范围的限制,存在测试验证结果不可靠的问题,并且如果在新版本发布后发现问题,会对用户使用产生影响,严重时可能导致应用程序无法正常运行,在此基础上重新发布应用程序又容易造成频繁发布的情况,给用户带来诸多困扰。
为此,非常需要一种应用程序的操作方法,可以在正式环境下进行新方案的可行性验证,得到更为可靠的验证结果,即便新版本技术方案存在不兼容等可行性问题,也不影响应用程序的正常运行。
在本上下文中,本发明的实施方式期望提供一种应用程序的操作方法及其***。
在本发明实施方式的第一方面中,提供了一种应用程序的操作方法,上述应用程序包括第一方案信息和第二方案信息,上述方法包括:在应用程序的主进程中运行上述第一方案信息,并开启至少一个子进程;在上述至少一个子进程中运行上述第二方案信息,并对上述第二方案信息进行可行性验证,得到验证结果;根据上述验证结果,使上述主进程继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的一个实施例中,上述根据上述验证结果,使上述主进程继续运行上述第一方案信息或者切换为运行上述第二方案信息包括:上述子进程将上述验证结果发送至上述主进程;上述主进程根据上述验证结果继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的另一实施例中,上述根据上述验证结果,使上述主进程继续运行上述第一方案信息或者切换为运行上述第二方案信息包括:上述子进程将上述验证结果发送至服务器;接收上述服务器的指令,上述主进程根据上述指令继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的又一个实施例中,对上述第二方案信息进行可行性验证包括:判断上述第二方案信息的运行结果是否达到预期结果;判断上述应用程序是否发生异常;若上述第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常,则上述第二方案信息验证通过。
在本发明的再一个实施例中,上述主进程根据上述验证结果继续运行上述第一方案信息或者切换为运行上述第二方案信息包括:在上述第二方案信息验证通过的情况下,主进程切换为运行上述第二方案信息;否则,上述主进程继续运行上述第一方案信息。
在本发明的再一个实施例中,上述方法还包括:在上述第二方案信息验证通过的情况下,判断上述第二方案信息的运行效率是否高于第一方案信息。
在本发明的再一个实施例中,上述主进程根据上述验证结果继续运行上述第一方案信息或者切换为运行上述第二方案信息包括:在上述第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行上述第二方案信息;否则,上述主进程继续运行上述第一方案信息。
在本发明的再一个实施例中,上述方法还包括:对上述验证结果进行记录;响应于上述应用程序再次启动,根据记录的验证结果,使上述主进程运行上述第一方案信息或者运行上述第二方案信息。
在本发明实施方式的第二方面中,提供了另一种应用程序的操作方法,上述应用程序包括第一方案信息和对上述第一方案信息更改后的至少两个第二方案信息,上述方法包括:在应用程序的主进程中运行上述第一方案信息,并开启至少一个子进程;在上述主进程的至少一个子进程中运行上述至少两个第二方案信息,并对上述第二方案信息进行可行性验证,得到至少两个验证结果;根据上述至少两个验证结果,上述主进程继续运行上述第一方案信息或者切换为运行上述至少两个第二方案信息中的一个。
在本发明的一个实施例中,上述可行性验证包括:判断上述第二方案信息的运行结果是否达到预期结果;判断上述应用程序是否发生异常;若上述第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常,则上述第二方案信息验证通过。
在本发明的另一实施例中,上述方法还包括:获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;判断上述候选第二方案信息的运行效率是否高于上述第一方案信息。
在本发明的又一个实施例中,根据上述至少两个验证结果,上述主进程继续运行上述第一方案信息或者切换为运行上述至少两个第二方案信息中的一个包括:在上述候选第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行上述候选第二方案信息;否则,上述主进程继续运行上述第一方案信息。
在本发明实施方式的第三方面中,提供了又一种应用程序的操作方法,上述应用程序包括第一方案信息和第二方案信息,上述方法包括:多个客户端运行上述应用程序,上述应用程序的主进程运行上述第一方案信息,并开启至少一个子进程;在上述至少一个子进程中运行上述第二方案信息,并对上述第二方案信息的进行可行性验证,得到验证结果,并将上述验证结果发送至服务器;上述服务器根据上述多个客户端的验证结果生成指令,并将上述指令发送至多个客户端;上述多个客户端的应用程序根据上述指令,使上述应用程序的主进程继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的一个实施例中,上述服务器根据上述多个客户端的验证结果生成指令包括:统计验证通过的客户端的数量,上述验证通过的客户端为上述客户端上应用程序的第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常;若上述验证通过的客户端数量的占比超过预设的阈值,则生成第一指令,上述第一指令用于将上述应用程序的主进程切换为运行上述第二方案信息;若上述验证通过的客户端的数量的占比未超过预设的阈值,则生成第二指令,上述第二指令用于使上述应用程序的主进程继续运行上述第一方案信息。
在本发明实施方式的第四方面中,提供了一种应用程序的操作***,上述应用程序包括第一方案信息和对第二方案信息,上述***包括:主进程模块,用于在主进程运行上述第一方案信息,并开启至少一个子进程;子进程模块,用于在上述至少一个子进程中运行上述第二方案信息,并对上述第二方案信息进行可行性验证,得到验证结果;上述主进程模块还用于根据上述验证结果,继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的一个实施例中,上述子进程模块包括第一验证模块,用于判断上述第二方案信息的运行结果是否达到预期结果,以及判断上述应用程序是否发生异常;若上述第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常,则上述第一验证模块的验证结果为上述第二方案信息验证通过。
在本发明的另一实施例中,上述主进程模块包括第二验证模块,用于在上述第二方案信息验证通过的情况下,判断上述第二方案信息的运行效率是否高于第一方案信息。
在本发明的又一实施例中,上述主进程模块还包括切换模块,用于在上述第二方案信息验证通过的情况下,将主进程切换为运行上述第二方案信息;否则,使主进程继续运行上述第一方案信息。
在本发明的再一实施例中,上述主进程模块包括切换模块,用于在上述第二方案信息的运行效率高于上述第一方案信息的情况下,将主进程切换为运行上述第二方案信息;否则,使上述主进程继续运行上述第一方案信息。
在本发明的再一实施例中,上述***还包括记录模块,用于对上述验证结果进行记录;上述主进程模块还用于在上述应用程序再次启动时,获取上述记录模块的验证结果,并根据上述验证结果,使上述主进程运行上述第一方案信息或者运行上述第二方案信息。
在本发明实施方式的第五方面中,提供了另一种用于应用程序的操作***,上述应用程序包括第一方案信息和至少两个第二方案信息,上述***包括:主进程模块,用于在主进程运行上述第一方案信息,并开启至少一个子进程;子进程模块,用于在上述至少一个子进程中运行上述至少两个第二方案信息,并对上述第二方案信息进行可行性验证,得到至少两个验证结果;上述主进程模块还用于根据上述至少两个验证结果,继续运行上述第一方案信息或者切换为运行上述至少两个第二方案信息中的一个。
在本发明的一个实施例中,上述子进程模块包括第一验证模块,用于判断上述第二方案信息的运行结果是否达到预期结果,以及判断上述应用程序是否发生异常;若上述第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常,则上述第一验证模块的验证结果为第二方案信息验证通过。
在本发明的另一实施例中,上述主进程模块包括第二验证模块,用于获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;并判断上述候选第二方案信息的运行效率是否高于上述第一方案信息。
在本发明的又一实施例中,上述主进程模块还包括切换模块,用于在上述候选第二方案信息的运行效率高于第一方案信息的情况下,将主进程切换为运行上述候选第二方案信息;否则,上述主进程继续运行上述第一方案信息。
在本发明实施方式的第六方面中,提供了又一种用于应用程序的操作***,包括多个客户端和服务器,其中:上述多个客户端用于运行上述应用程序,上述应用程序的主进程运行上述第一方案信息,并开启至少一个子进程;在上述至少一个子进程中运行上述第二方案信息,并对上述第二方案信息进行可行性验证,得到验证结果,并将上述验证结果发送至服务器;上述服务器用于根据上述多个客户端的验证结果生成指令,并将上述指令发送至多个客户端;上述多个客户端还用于根据上述指令,使其主进程继续运行上述第一方案信息或者切换为运行上述第二方案信息。
在本发明的一个实施例中,上述服务器包括统计模块和指令模块;上述统计模块用于统计验证通过的客户端的数量,上述验证通过的客户端为上述客户端上应用程序的第二方案信息的运行结果达到预期结果,且上述应用程序未发生异常;上述指令模块用于在上述验证通过的客户端数量的占比超过预设的阈值的情况下生成第一指令,上述第一指令用于将上述应用程序的主进程切换为运行上述第二方案信息,以及在上述验证通过的客户端的数量的占比未超过预设的阈值的情况下生成第二指令,上述第二指令用于使上述应用程序的主进程继续运行上述第一方案信息。
在本发明实施方式的第七方面中,提供了一种介质,存储有计算机可执行指令,上述指令在被处理单元执行时用于实现上述实施例中任一项上述的应用程序的操作方法。
在本发明实施方式的第八方面中,提供了一种计算设备,包括:处理单元;以及存储单元,存储有计算机可执行指令,上述指令在被处理单元执行时用于实现上述实施例中任一项上述的应用程序的操作方法。
根据本发明实施方式的应用程序的操作方法及其***,可以通过在主进程运行第一技术方案,在子进程运行第二技术方案并进行有效性验证,预备两个技术方案作为应用程序的可选方案,不仅能够将第二方案在正式环境下进行可行性验证,而且保证了至少有一个方案能够维持应用程序正常运行,并能够在用户无感知的情况下进行方案间的切换,可以精确地控制线上的每台设备的技术方案选择,并保证尽可能多的用户使用更优的技术方案,克服了相关技术中由于测试验证的条件和范围有限造成的验证结果不可靠的问题,以及在问题版本修复前用户无法正常使用应用程序,且容易造成频繁发布的缺陷,从而显著地降低了应用程序无法正常运行的可能性,减少了对用户的干扰,为用户带来了更好的使用体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的应用程序的操作方法及其***的示例性***架构;
图2示意性地示出了根据本发明实施例的应用程序的操作方法的流程图;
图3示意性地示出了根据本发明实施例的主进程从子进程获取结果的流程图;
图4示意性地示出了根据本发明实施例的主进程从服务器获取结果的流程图;
图5示意性地示出了根据本发明实施例的可行性验证方法的流程图;
图6示意性地示出了根据本发明实施例的主进程选择技术方案的方法流程图;
图7示意性地示出了根据本发明另一实施例的应用程序的操作方法的流程图;
图8示意性地示出了根据本发明实施例的主进程选择技术方案的另一方法流程图;
图9示意性地示出了根据本发明又一实施例的应用程序的操作方法的流程图;
图10示意性地示出了根据本发明实施例的另一应用程序的操作方法的流程图;
图11示意性地示出了根据本发明实施例的可行性验证方法的流程图;
图12示意性地示出了根据本发明又一实施例的应用程序的操作方法的流程图;
图13示意性地示出了根据本发明实施例的又一应用程序的操作方法的流程图;
图14示意性地示出了根据本发明实施例的服务器生成指令的方法流程图;
图15示意性地示出了根据本发明实施例的应用程序的操作***的框图;
图16示意性地示出了根据本发明实施例的子进程模块的框图;
图17示意性地示出了根据本发明实施例的主进程模块的框图;
图18示意性地示出了根据本发明实施例的主进程模块的另一框图;
图19示意性地示出了根据本发明又一实施例的应用程序操作***的框图;
图20示意性地示出了根据本发明实施例的另一种应用程序的操作***的框图;
图21示意性地示出了根据本发明实施例的又一种应用程序的操作***的框图;
图22示意性地示出了根据本发明实施例的服务器的框图;
图23示意性地示出了根据本发明实施方式的计算机可读存储介质产品的示意图;以及
图24示意性地示出了根据本发明实施方式的计算设备的框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种应用程序的操作方法、***、介质和计算设备。
在本文中,需要理解的是,所涉及的术语主要包括:移动端设备,移动终端或者叫移动通信终端是指可以在移动中使用的计算机设备,广义的讲包括手机、笔记本、平板电脑、POS机甚至包括车载电脑。但是大部分情况下是指手机或者具有多种应用功能的智能手机以及平板电脑;移动端操作***,主要应用在移动端设备上,主流的移动端操作***主要有Google的Android操作***和苹果的iOS操作***等,Android操作***还包括手机厂商定制的操作***(比如小米的MIUI、华为的EMUI***等等);移动端应用程序,第三方公司或开发者基于Android、iOS等操作***开发的应用程序;兼容性(compatibility),是指硬件之间、软件之间或是软硬件组合***之间的相互协调工作的程度,兼容的概念比较广,如App的新功能在某些手机***上运行正常,就说它们之间的兼容性比较好,反之就是兼容性不好。兼容性问题主要来源于:1)硬件功能兼容性,2)操作***兼容性,3)业务功能兼容性,兼容性问题的原因分别是:1)手机厂商在生产手机时就没有特定的硬件支持或者硬件支持有缺陷,2)手机操作***在升级之后,对某些旧特性有修改或者废弃,3)应用程序发布的新功能不能支持原有的业务功能;灰度验证,又名金丝雀发布,是指在黑与白之间,能够平滑过渡的一种发布方式,灰度发布可以保证整体***的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,灰度期是指灰度发布开始到结束期间的这一段时间称为灰度期;线上环境,移动端应用程序在开发完毕,经过测试后,打包发布对应渠道或者应用市场,即真实用户访问的环境,要求不能有任何BUG,且不能频繁发布,否则影响用户体验;用户无感知,用户在产品使用过程中,产品中的一些特性由于某种原因发生了变化,但不影响用户使用体验;进程(Process),是计算机中的程序关于某数据集合上的一次运行活动,是***进行资源分配和调度的基本单位,是操作***结构的基础;主进程与子进程,通常移动端应用程序至少有一个主进程,可以通过技术手段再新增进程即子进程,可以在子进程中进行一些特殊操作,主进程与子进程通过进程间通信的方式进行交互。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
在实现本发明实施例的过程中,发明人发现:新版本应用程序发布后,其中的某些新功能可能存在不兼容等可行性问题,对用户使用产生影响,严重时可能导致应用程序无法运行,使得用户体验不好。
本发明的实施方式提供了一种应用程序的操作方法及其***,该应用程序包括第一方案信息和第二方案信息,该应用程序的操作方法包括:在应用程序的主进程中运行第一方案信息,并开启至少一个子进程;在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果;根据验证结果,使主进程继续运行第一方案信息或者切换为运行第二方案信息。
由于本发明可以通过在主进程运行旧版本的技术方案,在子进程运行新的技术方案并进行有效性验证,验证通过后主进程切换至新的技术方案,使得新技术方案能够在正式环境下进行有效性的验证,而且是在用户无感知的情况下进行验证和切换,可以精确地控制线上的每台设备的技术方案选择,并保证尽可能多的用户使用更优的技术方案,克服了相关技术中由于测试验证的条件和范围有限造成的验证结果不可靠的问题,以及在问题版本修复前用户无法正常使用应用程序,且容易造成频繁发布的缺陷,从而显著地降低了应用程序无法正常运行的可能性,减少了对用户的干扰,为用户带来了更好的体验。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1详细阐述本发明实施例的应用程序的操作方法及其***的示例性***架构。
如图1所示,根据该实施例的***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的应用程序的操作方法一般可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102或103其他终端设备执行。相应地,本公开实施例所提供的应用程序的操作***也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。或者,本公开实施例所提供的应用程序的操作方法也可以由服务器105执行。相应地,本公开实施例所提供的应用程序的操作***也可以设置于服务器105中。本公开实施例所提供的应用程序的操作方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的应用程序的操作***也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
终端设备101、102、或103可以从服务器105获取本发明实施例的应用程序,并将应用程序安装于终端设备101、102、或103上。终端设备101、102、103也可以将第二方案信息的运行和验证结果发送至服务器105。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
需要说明的是,本发明可以应用于应用程序功能迭代和产品升级的场景。
示例性方法
下面结合图1的***架构,参考图2至图14来描述根据本发明示例性实施方式的应用程序的操作方法。需要注意的是,***架构仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
本发明实施例提供了一种应用程序的操作方法,该应用程序包括第一方案信息和第二方案信息。
图2示意性地示出了根据本发明实施例的应用程序的操作方法的流程图。如图2所示,该应用程序的操作方法可以包括操作S210~操作S230:
在操作S210,在应用程序的主进程中运行第一方案信息,并开启至少一个子进程。
在操作S220,在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果。
在操作S230,根据验证结果,使主进程继续运行第一方案信息或者切换为运行第二方案信息。
具体地,第一方案信息可以是之前发布的应用程序中某个功能的程序代码信息,该第一方案信息可以是经过可行性验证通过的方案,即第一方案信息不存在不兼容等可行性问题,在终端设备上可以正常运行。第二方案信息可以是针对第一方案信息进行改进后的程序代码信息,即可以利用第二方案信息取代第一方案信息来获得更好的运行效果和用户体验,上述改进可以是针对运行效率的改进,或者是针对第一方案信息存在的安全隐患的改进,或者是针对第一方案信息存在的缺陷的改进等等。
移动端应用程序上线后,用户第一次打开应用程序,主进程的现有业务逻辑先执行第一方案信息,一个主进程能够开启多个子进程,可以仅开启一个子进程,并利用该子进程运行第二方案信息,并对第二方案信息进行可行性验证,也可以开启多个子进程,利用其中一个或多个子进程运行第二方案信息,子进程模拟第二方案信息在主进程中执行的场景,并对第二方案信息进行可行性验证。可行性验证包括对第二方案信息的兼容性进行验证。
为了描述更为详细和易于理解,下文举具体实施例进行说明:
第一具体实施例涉及Android应用程序的加解密算法的C层代码实现。
在普通的Android应用程序中,会对一些数据进行加密保护,通常采用对称加密(如AES)或者非对称加密(如RSA)的形式,无论哪种加密方式,都需要存储秘钥和编码实现加解密算法。但是在应用层存储秘钥和算法实现可能会存在安全隐患,而如果将秘钥存储在C层,且算法实现也在C层,而应用层采用JNI调用来获取加解密后的结果,则能充分保障数据安全,且这种实现方式的加解密速度更快。但是JNI调用在部分国产ROM的手机上会存在兼容性问题,可能会引发程序崩溃。所以在应用程序中预备两套技术方案,即上述的第一方案信息和第二方案信息,第一方案信息是利用原有的秘钥存储和加解密算法实现,第二方案信息是新的技术方案,即利用C层秘钥存储和加解密实现。在应用程序上线后,用户第一次打开应用程序,主进程执行业务逻辑时先用应用层加解密并开启子进程,在子进程中新建服务执行C层加解密验证,应用程序未发生异常且加密的数据都能解密还原,则说明没有兼容性问题,反之则存在兼容性问题。然后可以执行进程间通信,子进程将结果反馈给主进程,主进程根据结果决定是否切换加解密技术方案,如果存在兼容性问题,也能在用户无感知的情况下,切换至原有方案,不影响使用。
第二具体实施例涉及移动端应用的Hybrid混合开发。
移动端应用(Android或者iOS应用)普遍存在混合开发的需求,即Native(原生)代码与H5进行通信,这种通信方式需要JS桥,即一种通信协议方式。在版本迭代过程中会尝试更新通信协议,使通信更有效率。但是由于某些手机厂商对原有的浏览器内核进行了修改或者***对浏览器内核进行升级,所以不同版本的浏览器内核存在差异。即便经过发版前的测试,但依然无法保证新的通信协议不存在兼容性问题。所以在移动端应用程序中准备新的通信协议(第二方案信息)和旧的通信协议(第一方案信息)。在应用程序上线后,用户第一次打开应用,主线程执行业务逻辑时先用旧的通信协议进程H5与Native的通信,并开启子进程,在子进程中的WebView执行JS桥协议,如果不发生异常且能成功调用Native方法,则证明不存在兼容性问题,后续主进程的WebView可以切换至新的JS桥。如果存在兼容性问题,也能再用户无感知的情况下,沿用原有的JS桥,不影响使用。
第三具体实施例涉及热修复框架替换。
原有项目中原本采用Andfix作为热修复方案,但是随着版本迭代,Andfix不满足现有的热修复需求,比如Andfix无法进行类替换、无法进行资源替换,不对开发者透明不便于bug排查。而Tinker可以解决上诉问题,所以想选用新的Tinker作为热修复框架,但是Tinker可能在某些操作***版本上存在找不到指定类的错误,这会引起程序崩溃,如果在线上环境直接使用,则会直接阻断某些用户的正常使用。所以采用本发明的方式,在子进程中做Tinker对差量文件替换的验证,如果成功则主进程的热修复方案可以替换成Tinker,如果失败,则继续沿用Andfix。
通过本公开实施例,通过在主进程运行第一方案,在子进程运行第二方案并进行有效性验证,预备两个技术方案作为应用程序的可选方案,不仅能够将第二方案在正式环境下进行可行性验证,而且保证了至少有一个方案能够维持应用程序正常运行,并能够在用户无感知的情况下进行方案间的切换,从而显著地降低了应用程序无法正常运行的可能性,减少了对用户的打扰,为用户带来了更好的使用体验。
作为一种可选的实施例,图3示意性地示出了根据本发明实施例的主进程从子进程获取结果的流程图。
如图3所示,操作S230可以包括操作S231~操作S232。
在操作S231,子进程将验证结果发送至主进程;
在操作S232,主进程根据验证结果继续运行第一方案信息或者切换为运行第二方案信息。
具体地,子进程和主进程之间能够进行进程间通信,子进程在完成第二方案信息的可行性验证后,可以将得到的验证结果反馈给主进程,主进程可以根据验证结果判断现有的移动设备和操作***是否应该采用新的技术方案,决定继续运行第一方案信息或者切换为运行第二方案信息。
主进程的切换行为可以在应用程序运行过程中实现,也可以在应用程序重启后进行,即在应用程序下次启动时直接运行第二方案信息。
通过本公开实施例,通过每个终端设备中的进程间通信,由主进程根据验证结果决定切换与否,可以精确地控制线上的每台设备的技术方案选择,并保证尽可能多的用户使用更优的技术方案。
作为一种可选的实施例,图4示意性地示出了根据本发明实施例的主进程从服务器获取结果的流程图。
如图4所示,操作S230可以包括操作S233~操作S234。
在操作S233,子进程将验证结果发送至服务器;
在操作S234,接收服务器的指令,主进程根据指令继续运行第一方案信息或者切换为运行第二方案信息。
具体地,子进程能够直接与管理该应用程序的服务器进行通信,子进程在完成第二方案信息的可行性验证后,可以直接将验证结果发送至服务器,这样,服务器可以收集统计大量用户终端中第二方案信息的验证结果,并根据统计的验证结果进行分析处理,发送相应的指令至用户终端的应用程序,终端应用程序的主进程则可以根据服务器的指令继续运行第一方案信息或者切换为运行第二方案信息。
通过本公开实施例,将每个用户终端中子进程得到的验证结果直接传输至服务器,这样,可以使服务器采集统计大量用户终端中第二方案的验证结果,有利于整体掌握第二方案信息的线上运行情况,并可以根据未验证通过的问题对应用程序进行修复和改进,有助于用户更好的使用体验。
作为一种可选的实施例,图5示意性地示出了根据本发明实施例的可行性验证方法的流程图。
如图5所示,操作S220中对第二方案信息进行可行性验证可以包括操作S221~操作S222。
在操作S221,判断第二方案信息的运行结果是否达到预期结果;
在操作S222,判断应用程序是否发生异常;
若第二方案信息的运行结果达到预期结果,且应用程序未发生异常,则第二方案信息验证通过。
具体地,在应用程序中为第二方案信息设置预期结果,子进程在第二方案信息运行完成后,判断运行结果是否达到预期结果,例如,在上述第一具体实施例中,第二方案信息的预期结果为:能够在C层执行加解密算法,且应用层能够采用JNI调用来获取加解密后的结果,若子进程在执行第二方案信息时能够完成上述操作,则认为第二方案信息的运行结果达到了预期结果。再例如,若应用程序的改进在于运行效率的提高,第二方案信息的预期结果可以是:比第一方案信息的运行效率高10%,若子进程在获取第一方案信息和第二方案信息的执行时间后,计算得到第二方案信息的运行效率比第一方案信息高出10%以上,则认为第二方案信息的运行结果达到了预期结果。
应用程序发生异常可以包括应用层异常和底层异常,子进程设定程序执行过程中的异常捕获机制,能够捕获应用程序发生的异常,即使第二方案信息运行导致异常,由于产生问题的程序执行在子进程且程序异常被捕获,而用户的操作在主进程,所以不会对用户操作产生影响,即在线上环境,用户在无感知的情况下尝试新的技术方案。
通过本公开实施例,通过预先设定第二方案信息的预期结果,以及设定程序执行过程中的异常捕获机制,能够准确判断每台终端设备中第二方案信息的兼容性等可行性情况。
作为一种可选的实施例,操作S232可以包括操作S2321。
在操作S2321,在第二方案信息验证通过的情况下,主进程切换为运行第二方案信息;否则,主进程继续运行第一方案信息。
图6示意性地示出了根据本发明实施例的主进程选择技术方案的方法流程图。
如图6所示,若第二方案信息主要是对第一方案信息存在的安全隐患或者其他缺陷的改进,在第二方案信息可行性验证通过后,即可将主进程切换为第二方案信息,或者应用程序下次启动时直接运行第二方案信息,例如,在上述第一具体实施例中,第一方案信息是在应用层存储秘钥和算法实现,这样会存在安全隐患,第二方案信息对此缺陷进行改进,在C层存储秘钥和实现加解密算法,这种情况下,若第二方案信息验证通过,即可直接切换,或者下次启动时介质运行第二方案信息。
作为一种可选的实施例,图7示意性地示出了根据本发明另一实施例的应用程序的操作方法的流程图。
如图7所示,该应用程序的操作方法还可以包括操作S240。
在操作S240,在第二方案信息验证通过的情况下,判断第二方案信息的运行效率是否高于第一方案信息。
具体地,若第二方案信息是对第一方案信息运行效率方面的改进,在子进程将验证结果发送至主进程之后,若第二方案信息验证通过,则主进程可以继续获取第一方案信息和第二方案信息的运行效率(或运行时间),并将两者进行比对,若第二方案信息的运行效率高于第一方案信息,即可进行切换,或者判断条件也可以设定为:第二方案信息的运行效率较第一方案信息是否高出n%(n>0)以上。
若第二方案信息主要是对第一方案信息存在的安全隐患或者其他缺陷的改进,但是对于第二方案信息的运行效率也有一定要求,该要求可以是第二方案信息相较于第一方案信息的运行效率没有下降或者没有明显下降。在这种情况下,第二方案信息验证通过后,主进程也可以继续获取第一方案信息和第二方案信息的运行效率(或运行时间),并将两者进行比对,此时,判断条件可以设定为:第二方案信息的运行效率是否低于第一方案信息,或者第二方案信息运行效率与第一方案信息运行效率的比值是否高于m%(m>0)。
作为一种可选的实施例,操作S232可以包括操作S2322。
在操作S2322,在第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行第二方案信息;否则,主进程继续运行第一方案信息。
图8示意性地示出了根据本发明实施例的主进程选择技术方案的另一方法流程图。
如图8所示,根据具体情况,在第二方案信息的运行效率达到要求的情况下,即在第二方案信息的运行效率高于第一方案信息,或者第二方案信息的运行效率较第一方案信息高出n%以上,或者第二方案信息运行效率与第一方案信息运行效率的比值高于m%(m>0)的情况下,主进程切换为运行第二方案信息;否则,主进程继续运行第一方案信息。
通过本公开实施例,在第二方案信息验证通过后,加入验证第二方案信息运行效率的步骤,主进程不仅可以根据可行性验证结果进行判断,还可以将第二方案的运行效率考虑在内,以决定是否切换,这样,主进程可以获取更全面的信息,做出更为精准的判断。
作为一种可选的实施例,图9示意性地示出了根据本发明又一实施例的应用程序的操作方法的流程图。
如图9所示,该应用程序的操作方法还可以包括操作S250~操作S260。
在操作S250,对验证结果进行记录;
在操作S260,响应于应用程序再次启动,根据记录的验证结果,使主进程运行第一方案信息或者运行第二方案信息。
具体地,移动终端应用程序上线后,用户第一次打开应用程序时,完成上述验证操作,包括可行性验证和效率验证,由主进程判断应该运行第一方案信息或第二方案信息完成后,应用程序可以记录上述可行性验证结果和效率验证结果,或者直接记录主进程的判断结果,或者直接记录接收的服务器的指令信息,以便在应用程序下次开启时,不再进行上述的验证过程,可以根据记录的结果直接选择运行第一方案信息或第二方案信息。
通过本公开实施例,通过记录验证结果,可以在应用程序每次启动时,根据验证结果直接选择需要运行的技术方案,节省了对终端资源的消耗,使应用程序运行更为便捷。
本发明实施例提供了另一种应用程序的操作方法,该应用程序包括第一方案信息和至少两个第二方案信息。
图10示意性地示出了根据本发明实施例的另一应用程序的操作方法的流程图。如图10所示,该应用程序的操作方法可以包括操作S310~操作S330:
在操作S310,在应用程序的主进程中运行第一方案信息,并开启至少一个子进程。
在操作S320,在主进程的至少一个子进程中运行至少两个第二方案信息,并对第二方案信息进行可行性验证,得到至少两个验证结果。
在操作S330,根据至少两个验证结果,主进程继续运行第一方案信息或者切换为运行至少两个第二方案信息中的一个。
具体地,若第一方案信息有多种可取代的方案,可以设置多个第二方案信息,若主进程仅开启一个子进程,则该子进程可以依次运行多个第二方案信息并进行验证,并将验证结果依次传输至主进程或服务器。若主进程开启多个子进程,则多个子进程可以并行,一个子进程运行其中一个第二方案信息,并将验证结果汇总至主进程或服务器。
通过本公开实施例,针对有多套供选择的技术方案的情况,可以运行验证多个可选方案,并根据验证结果择优进行技术方案的选择。
作为一种可选的实施例,图11示意性地示出了根据本发明实施例的可行性验证方法的流程图。
如图11所示,操作S320中对第二方案信息进行可行性验证可以包括操作S321~操作S322。
在操作S221,判断第二方案信息的运行结果是否达到预期结果;
在操作S222,判断应用程序是否发生异常;
作为一种可选的实施例,图12示意性地示出了根据本发明又一实施例的应用程序的操作方法的流程图。
如图12所示,该应用程序的操作方法还可以包括操作S340。
在操作S340,获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;判断候选第二方案信息的运行效率是否高于第一方案信息。
作为一种可选的实施例,操作S330可以包括操作S331。
在操作S331,在候选第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行候选第二方案信息;否则,主进程继续运行第一方案信息。
具体地,主进程从子进程获取每个第二方案信息的验证结果后,提取其中验证通过的至少一个第二方案信息,并获取该验证通过的至少一个第二方案信息的运行效率并进行对比,选取其中运行效率最高的第二方案信息作为候选第二方案信息,接着,判断选取出的该候选第二方案信息的效率是否达到要求,即判断候选第二方案信息的效率是否高于第一方案信息,或者较第一方案信息是否高出n%以上,如果达到要求,则可以切换为运行获选第二方案信息,否则继续运行第一方案信息。
通过本公开实施例,在多个第二方案信息满足可行性条件的情况下,可以通过上述方案择优选取运行效率较高的一个作为原有方案的可选替换方案,这样,可以选取出其中既满足可行性又满足效率要求的技术方案。
本发明实施例提供了又一种应用程序的操作方法,该应用程序包括第一方案信息和第二方案信息。
图13示意性地示出了根据本发明实施例的又一应用程序的操作方法的流程图。如图13所示,该应用程序的操作方法可以包括操作S410~操作S430:
在操作S410,多个客户端运行应用程序,应用程序的主进程运行第一方案信息,并开启至少一个子进程;在至少一个子进程中运行第二方案信息,并对第二方案信息的进行可行性验证,得到验证结果,并将验证结果发送至服务器;
在操作S420,服务器根据多个客户端的验证结果生成指令,并将指令发送至多个客户端;
在操作S430,多个客户端的应用程序根据所述指令,使应用程序的主进程继续运行第一方案信息或者切换为运行第二方案信息。
具体地,多个用户终端设备上运行该应用程序后,应用程序的子进程可以直接与管理该应用程序的服务器进行通信,子进程在完成第二方案信息的可行性验证后,可以直接将验证结果发送至服务器,这样,服务器可以收集统计大量用户终端中第二方案信息的验证结果,并根据统计的验证结果进行分析处理,得到该应用程序的操作指令,并发送相应的指令至用户终端的应用程序,各个终端应用程序的主进程则可以根据服务器的指令继续运行第一方案信息或者切换为运行第二方案信息。
通过本公开实施例,将每个用户终端中子进程得到的验证结果直接传输至服务器,这样,可以使服务器采集统计大量用户终端中第二方案的验证结果,有利于整体掌握第二方案信息的线上运行情况,并可以根据未验证通过的问题对应用程序进行修复和改进,有助于用户更好的使用体验。
作为一种可选的实施例,图14示意性地示出了根据本发明实施例的服务器生成指令方法的流程图。
如图14所示,操作S330中的服务器根据多个客户端的验证结果生成指令可以包括操作S421~操作S423。
在操作S421,统计验证通过的客户端的数量,验证通过的客户端为客户端上应用程序的第二方案信息的运行结果达到预期结果,且应用程序未发生异常;
在操作S422,若验证通过的客户端数量的占比超过预设的阈值,则生成第一指令,第一指令用于将应用程序的主进程切换为运行第二方案信息;
在操作S423,若验证通过的客户端的数量的占比未超过预设的阈值,则生成第二指令,第二指令用于使应用程序的主进程继续运行第一方案信息。
具体地,服务器接收各个客户端发送的验证结果后,统计验证通过的客户端的数量,预先设定一个切换阈值,在验证通过的客户端数量占总的客户端数量的比值超过该切换阈值后,发送切换指令至验证通过的客户端,使验证通过的客户端应用程序切换为运行第二方案信息,否则,发送维持指令至各个客户端,使各个客户端继续运行第一方案信息。
通过本公开实施例,如果大部分客户端上的第二方案信息验证通过,则表明该第二方案信息适合推广使用,则可以将验证通过的客户端进行方案的切换,如果只有少数客户端上第二方案信息验证通过,则表明该第二方案信息可能不适用于大部分客户终端,仍然存在待解决的问题,需要进一步改进,即使个别客户端验证通过也不适合进行方案的切换,这样,可以避免整体掌握第二方案信息的线上运行情况,并可以根据未验证通过的问题对应用程序进行修复和改进,有助于用户更好的使用体验。
示例性***
在介绍了本发明示例性实施方式的方法之后,接下来,参考图15~图22对本发明示例性实施方式的应用程序的操作***进行详细阐述。
本发明实施例提供了一种应用程序的操作***,应用程序包括第一方案信息和对第二方案信息。
图15示意性地示出了根据本发明实施例的应用程序的操作***的框图。如图15所示,该***可以包括:主进程模块10和子进程模块20。
主进程模块10用于在主进程运行第一方案信息,并开启至少一个子进程。
子进程模块20用于在至少一个子进程中运行第二方案信息,并对所述第二方案信息进行可行性验证,得到验证结果。
主进程模块10还用于根据验证结果,继续运行第一方案信息或者切换为运行第二方案信息。
具体地,主进程模块10例如可以执行上文描述的操作S210和S230,子进程模块20例如可以执行上文描述的操作S220,在此不再赘述。
作为一种可选的实施例,如图16示意性地示出了根据本发明实施例的子进程模块的框图,子进程模块20可以包括:第一验证模块21。
第一验证模块21用于判断第二方案信息的运行结果是否达到预期结果,以及判断应用程序是否发生异常。
若第二方案信息的运行结果达到预期结果,且应用程序未发生异常,则第一验证模块的验证结果为第二方案信息验证通过。
具体地,第一验证模块21例如可以执行上文描述的操作S221和S222,在此不再赘述。
作为一种可选的实施例,如图17示意性地示出了根据本发明实施例的主进程模块的框图,主进程模块10可以包括:第二验证模块11。
第二验证模块11用于在第二方案信息验证通过的情况下,判断第二方案信息的运行效率是否高于第一方案信息。
具体地,第二验证模块11例如可以执行上文描述的操作S240,在此不再赘述。
作为一种可选的实施例,如图18示意性地示出了根据本发明实施例的主进程模块的另一框图,主进程模块10还可以包括:切换模块12。
切换模块12用于在第二方案信息验证通过的情况下,将主进程切换为运行第二方案信息;否则,使主进程继续运行第一方案信息。或者
切换模块12用于第二方案信息验证通过且第二方案信息的运行效率高于第一方案信息的情况下,将主进程切换为运行第二方案信息;否则,使主进程继续运行所述第一方案信息。
具体地,切换模块12例如可以执行上文描述的操作S2321或S2322,在此不再赘述。
作为一种可选的实施例,如图19示意性地示出了根据本发明又一实施例的应用程序操作***的框图,该***还可以包括:记录模块30。
记录模块30用于对验证结果进行记录;
主进程模块10还用于在应用程序再次启动时,获取记录模块30的验证结果,并根据验证结果,使主进程运行第一方案信息或者运行所述第二方案信息。
具体地,记录模块30例如可以执行上文描述的操作S250和S260,在此不再赘述。
本发明实施例提供了另一种应用程序的操作***,应用程序包括第一方案信息和至少两个第二方案信息。
图20示意性地示出了根据本发明实施例的另一种应用程序的操作***的框图。如图20所示,该***可以包括:主进程模块40和子进程模块50。
主进程模块40用于在主进程运行第一方案信息,并开启至少一个子进程;
子进程模块50用于在至少一个子进程中运行至少两个第二方案信息,并对第二方案信息进行可行性验证,得到至少两个验证结果;
主进程模块40还用于根据至少两个验证结果,继续运行第一方案信息或者切换为运行至少两个第二方案信息中的一个。
具体地,主进程模块40例如可以执行上文描述的操作S310和S330,子进程模块50例如可以执行上文描述的操作S320,在此不再赘述。
作为一种可选的实施例,子进程模块50可以包括第一验证模块。
第一验证模块用于判断第二方案信息的运行结果是否达到预期结果,以及判断应用程序是否发生异常。
若第二方案信息的运行结果达到预期结果,且应用程序未发生异常,则第一验证模块的验证结果为第二方案信息验证通过。
具体地,第一验证模块例如可以执行上文描述的操作S321和S322,在此不再赘述。
作为一种可选的实施例,主进程模块40包括第二验证模块。
第二验证模块用于获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;并判断候选第二方案信息的运行效率是否高于所述第一方案信息。
具体地,第二验证模块例如可以执行上文描述的操作S340,在此不再赘述。
作为一种可选的实施例,主进程模块40还包括切换模块。
切换模块用于在候选第二方案信息的运行效率高于第一方案信息的情况下,将主进程切换为运行候选第二方案信息;否则,主进程继续运行第一方案信息。
具体地,切换模块例如可以执行上文描述的操作S331,在此不再赘述。
本发明实施例提供了又一种应用程序的操作***。
图21示意性地示出了根据本发明实施例的又一种应用程序的操作***的框图。如图21所示,该***可以包括:多个客户端60和服务器70。
多个客户端60用于运行应用程序,应用程序的主进程运行第一方案信息,并开启至少一个子进程;在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果,并将验证结果发送至服务器70;
所述服务器用于根据多个客户端60的验证结果生成指令,并将指令发送至多个客户端60;
多个客户端60还用于根据指令,使其主进程继续运行第一方案信息或者切换为运行第二方案信息。
具体地,客户端60例如可以执行上文描述的操作S410和S430,服务器70例如可以执行上文描述的操作S420,在此不再赘述。
作为一种可选的实施例,如图22示意性地示出了根据本发明实施例的服务器的框图,服务器70包括统计模块71和指令模块72。
统计模块71用于统计验证通过的客户端的数量,验证通过的客户端为客户端60上应用程序的第二方案信息的运行结果达到预期结果,且应用程序未发生异常;
指令模块72用于在验证通过的客户端数量的占比超过预设的阈值的情况下生成第一指令,第一指令用于将应用程序的主进程切换为运行第二方案信息,以及在验证通过的客户端的数量的占比未超过预设的阈值的情况下生成第二指令,第二指令用于使应用程序的主进程继续运行第一方案信息。
具体地,统计模块71例如可以执行上文描述的操作S421,指令模块72例如可以执行上文描述的操作S422和S423,在此不再赘述。
示例性介质
本发明实施例提供了一种介质,存储有计算机可执行指令,该指令在被该处理单元执行时用于实现该方法实施例中任一项的应用程序的操作方法。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的应用程序的操作方法中的步骤,例如,终端设备可以执行如图2中所示的操作S210:在应用程序的主进程中运行第一方案信息,并开启至少一个子进程;操作S220:在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果;操作S230:根据验证结果,使主进程继续运行第一方案信息或者切换为运行第二方案信息。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、***或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图23所示,描述了根据本发明的实施方式的应用程序操作的程序产品80,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、***或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、***或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言——诸如Java,C++等,还包括常规的过程式程序设计语言——诸如“C”,语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络一—包括局域网(LAN)或广域网(WAN)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性计算设备
在介绍了本发明示例性实施方式的方法、***和介质之后,接下来,参考图24介绍根据本发明的一示例性实施方式的应用程序操作的计算设备。
本发明实施例还提供了一种计算设备。该计算设备包括:处理单元;以及存储单元,存储有计算机可执行指令,该指令在被该处理单元执行时用于实现该方法实施例中任一项的应用程序的操作方法。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,存储单元存储有程序代码,当程序代码被处理单元执行时,使得处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的信息呈现方法中的步骤。例如,处理单元可以执行如图2中所示的操作S210:在应用程序的主进程中运行第一方案信息,并开启至少一个子进程;操作S220:在至少一个子进程中运行第二方案信息,并对第二方案信息进行可行性验证,得到验证结果;操作S230:根据验证结果,使主进程继续运行第一方案信息或者切换为运行第二方案信息。
下面参照图24来描述根据本发明的这种实施方式的用于控制应用程序的计算设备90。如图24所示的计算设备90仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图24所示,计算设备90以通用计算设备的形式表现。计算设备90的组件可以包括但不限于:上述至少一个处理单元901、上述至少一个存储单元902、连接不同***组件(包括存储单元902和处理单元901)的总线903。
总线903表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、***总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元902可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)9021和/或高速缓存存储器9022,还可以进一步包括只读存储器(ROM)9023。
存储单元902还可以包括具有一组(至少一个)程序模块9024的程序/实用工具9025,这样的程序模块9024包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备90也可以与一个或多个外部设备904(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与计算设备90交互的设备通信,和/或与使得计算设备90能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/0)接口905进行。并且,计算设备90还可以通过网络适配器906与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器906通过总线903与计算设备90的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备90使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
应当注意,尽管在上文详细描述中提及了***的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (28)
1.一种应用程序的操作方法,所述应用程序包括第一方案信息和第二方案信息,所述方法包括:
在应用程序的主进程中运行所述第一方案信息,并开启至少一个子进程;
在所述至少一个子进程中运行所述第二方案信息,并对所述第二方案信息进行可行性验证,得到验证结果;
根据所述验证结果,使所述主进程继续运行所述第一方案信息或者切换为运行所述第二方案信息;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息;所述第二方案信息为针对所述第一方案信息进行改进后的程序代码信息。
2.根据权利要求1所述的方法,其中,所述根据所述验证结果,使所述主进程继续运行所述第一方案信息或者切换为运行所述第二方案信息包括:
所述子进程将所述验证结果发送至所述主进程;
所述主进程根据所述验证结果继续运行所述第一方案信息或者切换为运行所述第二方案信息。
3.根据权利要求1所述的方法,其中,所述根据所述验证结果,使所述主进程继续运行所述第一方案信息或者切换为运行所述第二方案信息包括:
所述子进程将所述验证结果发送至服务器;
接收所述服务器的指令,所述主进程根据所述指令继续运行所述第一方案信息或者切换为运行所述第二方案信息。
4.根据权利要求1至3中任一项所述的方法,其中,
对所述第二方案信息进行可行性验证包括:
判断所述第二方案信息的运行结果是否达到预期结果;
判断所述应用程序是否发生异常;
若所述第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常,则所述第二方案信息验证通过。
5.根据权利要求4所述的方法,其中,所述主进程根据所述验证结果继续运行所述第一方案信息或者切换为运行所述第二方案信息包括:
在所述第二方案信息验证通过的情况下,主进程切换为运行所述第二方案信息;否则,所述主进程继续运行所述第一方案信息。
6.根据权利要求4所述的方法,还包括:
在所述第二方案信息验证通过的情况下,判断所述第二方案信息的运行效率是否高于第一方案信息。
7.根据权利要求6所述的方法,其中,所述主进程根据所述验证结果继续运行所述第一方案信息或者切换为运行所述第二方案信息包括:
在所述第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行所述第二方案信息;否则,所述主进程继续运行所述第一方案信息。
8.根据权利要求1所述的方法,还包括:
对所述验证结果进行记录;
响应于所述应用程序再次启动,根据记录的验证结果,使所述主进程运行所述第一方案信息或者运行所述第二方案信息。
9.一种应用程序的操作方法,所述应用程序包括第一方案信息和对所述第一方案信息更改后的至少两个第二方案信息,所述方法包括:
在应用程序的主进程中运行所述第一方案信息,并开启至少一个子进程;
在所述主进程的至少一个子进程中运行所述至少两个第二方案信息,并对所述第二方案信息进行可行性验证,得到至少两个验证结果;
根据所述至少两个验证结果,所述主进程继续运行所述第一方案信息或者切换为运行所述至少两个第二方案信息中的一个;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息。
10.根据权利要求9所述的方法,其中,
所述可行性验证包括:
判断所述第二方案信息的运行结果是否达到预期结果;
判断所述应用程序是否发生异常;
若所述第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常,则所述第二方案信息验证通过。
11.根据权利要求10所述的方法,还包括:
获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;判断所述候选第二方案信息的运行效率是否高于所述第一方案信息。
12.根据权利要求11所述的方法,其中,根据所述至少两个验证结果,所述主进程继续运行所述第一方案信息或者切换为运行所述至少两个第二方案信息中的一个包括:
在所述候选第二方案信息的运行效率高于第一方案信息的情况下,主进程切换为运行所述候选第二方案信息;否则,所述主进程继续运行所述第一方案信息。
13.一种应用程序的操作方法,所述应用程序包括第一方案信息和第二方案信息,所述方法包括:
多个客户端运行所述应用程序,所述应用程序的主进程运行所述第一方案信息,并开启至少一个子进程;在所述至少一个子进程中运行所述第二方案信息,并对所述第二方案信息的进行可行性验证,得到验证结果,并将所述验证结果发送至服务器;
所述服务器根据所述多个客户端的验证结果生成指令,并将所述指令发送至多个客户端;
所述多个客户端的应用程序根据所述指令,使所述应用程序的主进程继续运行所述第一方案信息或者切换为运行所述第二方案信息;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息;所述第二方案信息为针对所述第一方案信息进行改进后的程序代码信息。
14.根据权利要求13所述的方法,其中,所述服务器根据所述多个客户端的验证结果生成指令包括:
统计验证通过的客户端的数量,所述验证通过的客户端为所述客户端上应用程序的第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常;
若所述验证通过的客户端数量的占比超过预设的阈值,则生成第一指令,所述第一指令用于将所述应用程序的主进程切换为运行所述第二方案信息;
若所述验证通过的客户端的数量的占比未超过预设的阈值,则生成第二指令,所述第二指令用于使所述应用程序的主进程继续运行所述第一方案信息。
15.一种应用程序的操作***,所述应用程序包括第一方案信息和对第二方案信息,所述***包括:
主进程模块,用于在主进程运行所述第一方案信息,并开启至少一个子进程;
子进程模块,用于在所述至少一个子进程中运行所述第二方案信息,并对所述第二方案信息进行可行性验证,得到验证结果;
所述主进程模块还用于根据所述验证结果,继续运行所述第一方案信息或者切换为运行所述第二方案信息;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息;所述第二方案信息为针对所述第一方案信息进行改进后的程序代码信息。
16.根据权利要求15所述的***,其中,
所述子进程模块包括第一验证模块,用于判断所述第二方案信息的运行结果是否达到预期结果,以及判断所述应用程序是否发生异常;
若所述第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常,则所述第一验证模块的验证结果为所述第二方案信息验证通过。
17.根据权利要求16所述的***,其中,
所述主进程模块包括第二验证模块,用于在所述第二方案信息验证通过的情况下,判断所述第二方案信息的运行效率是否高于第一方案信息。
18.根据权利要求16所述的***,其中,
所述主进程模块还包括切换模块,用于在所述第二方案信息验证通过的情况下,将主进程切换为运行所述第二方案信息;否则,使主进程继续运行所述第一方案信息。
19.根据权利要求17所述的***,其中,
所述主进程模块包括切换模块,用于在所述第二方案信息的运行效率高于所述第一方案信息的情况下,将主进程切换为运行所述第二方案信息;否则,使所述主进程继续运行所述第一方案信息。
20.根据权利要求15所述的***,还包括:
记录模块,用于对所述验证结果进行记录;
所述主进程模块还用于在所述应用程序再次启动时,获取所述记录模块的验证结果,并根据所述验证结果,使所述主进程运行所述第一方案信息或者运行所述第二方案信息。
21.一种用于应用程序的操作***,所述应用程序包括第一方案信息和至少两个第二方案信息,所述***包括:
主进程模块,用于在主进程运行所述第一方案信息,并开启至少一个子进程;
子进程模块,用于在所述至少一个子进程中运行所述至少两个第二方案信息,并对所述第二方案信息进行可行性验证,得到至少两个验证结果;
所述主进程模块还用于根据所述至少两个验证结果,继续运行所述第一方案信息或者切换为运行所述至少两个第二方案信息中的一个;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息;所述第二方案信息为针对所述第一方案信息进行改进后的程序代码信息。
22.根据权利要求21所述的***,其中,
所述子进程模块包括第一验证模块,用于判断所述第二方案信息的运行结果是否达到预期结果,以及判断所述应用程序是否发生异常;
若所述第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常,则所述第一验证模块的验证结果为第二方案信息验证通过。
23.根据权利要求22所述的***,其中,
所述主进程模块包括第二验证模块,用于获取并分析验证通过的第二方案信息的运行效率,得到其中运行效率相对较高的第二方案信息作为候选第二方案信息;并判断所述候选第二方案信息的运行效率是否高于所述第一方案信息。
24.根据权利要求23所述的***,其中,
所述主进程模块还包括切换模块,用于在所述候选第二方案信息的运行效率高于第一方案信息的情况下,将主进程切换为运行所述候选第二方案信息;否则,所述主进程继续运行所述第一方案信息。
25.一种用于应用程序的操作***,包括多个客户端和服务器,其中:
所述多个客户端用于运行所述应用程序,所述应用程序的主进程运行第一方案信息,并开启至少一个子进程;在所述至少一个子进程中运行第二方案信息,并对所述第二方案信息进行可行性验证,得到验证结果,并将所述验证结果发送至服务器;
所述服务器用于根据所述多个客户端的验证结果生成指令,并将所述指令发送至多个客户端;
所述多个客户端还用于根据所述指令,使其主进程继续运行所述第一方案信息或者切换为运行所述第二方案信息;
其中,所述第一方案信息为通过可行性验证的方案的程序代码信息;所述第二方案信息为针对所述第一方案信息进行改进后的程序代码信息。
26.根据权利要求25所述的***,其中,所述服务器包括统计模块和指令模块;
所述统计模块用于统计验证通过的客户端的数量,所述验证通过的客户端为所述客户端上应用程序的第二方案信息的运行结果达到预期结果,且所述应用程序未发生异常;
所述指令模块用于在所述验证通过的客户端数量的占比超过预设的阈值的情况下生成第一指令,所述第一指令用于将所述应用程序的主进程切换为运行所述第二方案信息,以及在所述验证通过的客户端的数量的占比未超过预设的阈值的情况下生成第二指令,所述第二指令用于使所述应用程序的主进程继续运行所述第一方案信息。
27.一种介质,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至14中任一项所述的应用程序的操作方法。
28.一种计算设备,包括:
处理单元;以及
存储单元,存储有计算机可执行指令,所述指令在被处理单元执行时用于实现权利要求1至14中任一项所述的应用程序的操作方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810173068.8A CN108446219B (zh) | 2018-03-01 | 2018-03-01 | 应用程序的操作方法、***、介质和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810173068.8A CN108446219B (zh) | 2018-03-01 | 2018-03-01 | 应用程序的操作方法、***、介质和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108446219A CN108446219A (zh) | 2018-08-24 |
CN108446219B true CN108446219B (zh) | 2021-07-13 |
Family
ID=63192950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810173068.8A Active CN108446219B (zh) | 2018-03-01 | 2018-03-01 | 应用程序的操作方法、***、介质和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108446219B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716730B (zh) * | 2019-10-14 | 2023-09-26 | 网易(杭州)网络有限公司 | 灰度发布方法、装置、设备及计算机可读存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440460A (zh) * | 2013-09-09 | 2013-12-11 | 中国农业银行股份有限公司 | 一种应用***变更验证方法及验证*** |
CN105468395B (zh) * | 2014-09-10 | 2019-11-05 | 阿里巴巴集团控股有限公司 | 更新方法、装置及*** |
US10175975B2 (en) * | 2015-02-18 | 2019-01-08 | Red Hat Israel, Ltd. | Self-mending software builder |
CN104636172B (zh) * | 2015-03-09 | 2019-02-05 | 联想(北京)有限公司 | 一种应用升级方法和装置 |
CN105100232B (zh) * | 2015-07-14 | 2016-08-17 | 焦点教育科技有限公司 | 一种不中断服务的服务端程序平滑升级的方法 |
CN105302604B (zh) * | 2015-10-30 | 2018-10-23 | 北京奇虎科技有限公司 | 应用程序的版本更新方法及装置 |
US10067757B2 (en) * | 2015-11-20 | 2018-09-04 | Google Llc | Dynamic update of an application in compilation and deployment with hot-swapping |
CN105468410B (zh) * | 2015-11-24 | 2019-02-12 | 小米科技有限责任公司 | ***升级方法及装置 |
CN106126290B (zh) * | 2016-06-27 | 2019-08-13 | 微梦创科网络科技(中国)有限公司 | 应用程序优化方法、装置及*** |
-
2018
- 2018-03-01 CN CN201810173068.8A patent/CN108446219B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108446219A (zh) | 2018-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10185924B1 (en) | Security risk response impact analysis | |
JP7389791B2 (ja) | コンフィギュレーション・シナリオ順守のためのモバイル・デバイスによるコンプライアンス設定の実装 | |
US9386079B2 (en) | Method and system of virtual desktop infrastructure deployment studio | |
US11809858B2 (en) | Dynamic feature and performance testing and adjustment | |
US9384114B2 (en) | Group server performance correction via actions to server subset | |
US10802847B1 (en) | System and method for reproducing and resolving application errors | |
JP2018078616A (ja) | モバイル機器サポートサービスを提供するためのシステム、方法、装置、およびコンピュータプログラム製品 | |
US20120117576A1 (en) | Method and apparatus for obtaining feedback from a device | |
US10452469B2 (en) | Server performance correction using remote server actions | |
CN111427803B (zh) | 自动化随机测试方法、装置、计算机设备及介质 | |
US20160274918A1 (en) | User device and integrity verification method of the same | |
US20180315024A1 (en) | Systems and Methods Enabling Secure Transactions from Terminal Window | |
US11200155B2 (en) | System and method for automated application testing | |
CN107528830B (zh) | 账号登陆方法、***及存储介质 | |
US10078510B1 (en) | Late-stage software feature reduction tool for security and performance | |
US10404568B2 (en) | Agent manager for distributed transaction monitoring system | |
US11726897B2 (en) | System and method for testing applications | |
WO2021121407A1 (zh) | 一种虚拟机的容量更改方法及装置 | |
US10432490B2 (en) | Monitoring single content page application transitions | |
CN108446219B (zh) | 应用程序的操作方法、***、介质和计算设备 | |
CN110324432B (zh) | 应用于终端的数据处理方法、装置、介质和计算设备 | |
CN112230944A (zh) | 应用安装方法、装置、电子设备和计算机可读介质 | |
KR20140020287A (ko) | 소프트웨어 조작성 서비스 | |
CN113360172B (zh) | 应用部署方法、装置、计算机设备及存储介质 | |
CN114968776A (zh) | 一种应用程序的检测方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |