CN112181462A - 基于Lua的跨平台应用程序的热更新方法 - Google Patents
基于Lua的跨平台应用程序的热更新方法 Download PDFInfo
- Publication number
- CN112181462A CN112181462A CN202011047015.5A CN202011047015A CN112181462A CN 112181462 A CN112181462 A CN 112181462A CN 202011047015 A CN202011047015 A CN 202011047015A CN 112181462 A CN112181462 A CN 112181462A
- Authority
- CN
- China
- Prior art keywords
- service
- lua
- script
- module
- virtual machine
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013515 script Methods 0.000 claims abstract description 60
- 238000004140 cleaning Methods 0.000 claims abstract description 8
- 238000011423 initialization method Methods 0.000 claims abstract description 7
- 230000003993 interaction Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明揭示了一种基于Lua的跨平台应用程序的热更新方法,包括如下步骤:S1、启动应用程序,创建Lua虚拟机,在Lua虚拟机中建立一个业务管理模块;S2、加载业务脚本、同时执行业务脚本中的初始化方法,注册公开的业务方法,以业务名称作为索引对业务进行管理;S3、当业务脚本需要更新时,依据业务名称寻找并确定相应的业务模块,调用相应的配置保存方法对业务配置进行保存、再调用相应的清理方法对公开的业务方法进行注销,随后卸载业务脚本;S4、加载新的业务脚本,将保存的业务配置加载到其中。本发明有效地实现了跨平台的应用程序更新操作,可以根据需要实时更新现有业务模块或添加新业务模块,整个过程方便快捷。
Description
技术领域
本发明涉及一种热更新方法,具体而言,涉及一种基于Lua的跨平台应用程序的热更新方法,属于互联网服务技术领域。
背景技术
近年来,随着互联网的快速发展,各类平台、项目层出不穷,时时刻刻都在给互联网从业人员提出新的挑战。在实际的项目开发过程中,有时会面临需要将用某一特定程序语言,如C语言,开发的应用程序在不同CPU架构的设备上运行的情况,而此时若需要解决现有业务逻辑问题或是添加新的业务,就必须通过更新程序的方式才能完成操作。
现有技术在面对以上情况时,常用的操作方法为先针对不同的平台架构、为每种设备编译出相应的程序,然后通过服务器将程序下发到对应的设备上,程序更新完成后对设备进行重启。
由以上描述可以得知,这一操作方法在实际应用时存在着大量程序版本需要管理维护且需要针对不同平台的程序做单独的更新等问题,而且在程序更新完成后,设备需要进行重启,在此过程中服务也会被迫中断。可以说,现行的操作方法使得整个更新过程变得既耗时又费力,不仅增加了大量无谓的维护工作,而且新编译的程序还有可能会会引入不可预估的稳定性问题。
Lua是一种小巧的脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译、运行。Lua脚本可以很容易的被C/C++ 代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用,不仅可以作为扩展脚本,也可以作为普通的配置文件,代替XML、ini等文件格式,并且更容易理解和维护。
基于上述技术现状,如果能够将lua这一脚本语言有针对性地应用于程序更新过程中,提出一种全新的、基于Lua的跨平台应用程序的热更新方法,以克服现有技术条件下所存在的诸多缺陷,那么必将会对整个互联网行业产生积极的影响。
发明内容
鉴于现有技术存在上述缺陷,本发明的目的是提出一种基于Lua的跨平台应用程序的热更新方法,具体如下。
一种基于Lua的跨平台应用程序的热更新方法,包括如下步骤:
S1、启动应用程序,创建一个包含有若干业务模块的Lua虚拟机,随后在所述Lua虚拟机中建立一个业务管理模块;
S2、通过所述Lua虚拟机加载业务模块内的业务脚本、在加载所述业务脚本时所述Lua虚拟机同时执行所述业务脚本中的初始化方法,所述业务模块向所述业务管理模块注册公开的业务方法,所述业务管理模块以业务名称作为索引对所述业务模块进行管理;
S3、当所述业务脚本需要更新时,所述业务管理模块依据业务名称寻找并确定相应的所述业务模块,所述业务管理模块调用相应的配置保存方法对业务配置进行保存、再调用相应的清理方法对所述业务模块公开的业务方法进行注销,随后在Lua虚拟机中卸载所述业务模块内的业务脚本;
S4、以与S2中相同的方式加载另一所述业务模块内的新的业务脚本,随后将S3中保存的业务配置加载到另一所述业务模块内的新的业务脚本中、对应的业务恢复正常运作。
优选地,所述应用程序内集成有Lua库,所述Lua虚拟机由Lua库函数创建。
优选地,所述Lua虚拟机内包含有多个所述业务模块,每个所述业务模块内均保存有与业务相对应的、独立的业务脚本,所述业务脚本为Lua脚本。
优选地,在所述Lua虚拟机中,不同所述业务模块间的交互均需要借助所述业务管理模块的中转来完成。
优选地,所述业务脚本中定义有一个table,在所述table中定义有一个字段type、赋值与业务名称相同,在所述table中还定义有所述初始化方法、所述配置保存方法以及所述清理方法。
优选地,在S3中,当所述业务脚本出现业务逻辑错误时,需要先对所述业务脚本进行代码修复,随后再将所述业务脚本下发至应用程序中。
本发明的优点主要体现在以下几个方面:
本发明所提供的一种基于Lua的跨平台应用程序的热更新方法,充分地利用了Lua脚本语言可在大多数操作系统和平台上编译、运行的特点,有效地实现了跨平台的应用程序更新操作,操作者可以根据实际需要实时更新现有的业务模块或添加新的业务模块,整个过程方便快捷,免除了现有操作中大量无谓的维护工作、节约了企业的资源。
此外,采用本发明的方法对应用程序进行热更新,程序的稳定性有所保障,程序更新完成后也无需重启程序或设备,不会出现因重启而导致服务被迫中断的问题,在确保了程序更新效果的前提下最大限度地提升了应用程序使用者的用户体验。
此外,本发明也为同领域内的其他相关方案提供了参考,可以以此为依据进行拓展延伸,运用于同领域内其他与跨平台程序更新相关的技术方案中,具有十分广阔的应用前景。
以下便结合实施例附图,对本发明的具体实施方式作进一步的详述,以使本发明技术方案更易于理解、掌握。
附图说明
图1为本发明方法的流程示意图;
图2为本发明方法中的Lua虚拟机的架构示意图。
具体实施方式
本发明提出了一种基于Lua的跨平台应用程序的热更新方法,具体方案如下。
如图1所示,一种基于Lua的跨平台应用程序的热更新方法,包括如下步骤:
S1、启动应用程序,创建一个包含有若干业务模块的Lua虚拟机,随后在所述Lua虚拟机中建立一个业务管理模块。
在本实施例中,所述应用程序由C语言编写、所述应用程序内集成有Lua库,所述Lua虚拟机由Lua库函数创建。
如图2所示,所述Lua虚拟机内包含有多个所述业务模块,所述业务模块的数据全部存储在自己的模块内,如果需要被其它模块使用,则必须注册一个公开的方法来返回相关数据。每个所述业务模块内均保存有与业务相对应的、独立的业务脚本,此处所述业务脚本为Lua脚本,所述业务脚本内的业务方法对外公开。
在所述Lua虚拟机中,所述业务管理模块根据业务名称对所述业务模块进行管理,所述业务模块间不能直接交互,不同所述业务模块间的交互均需要借助所述业务管理模块的中转来完成。一个所述业务模块如果需要请求其它所述业务模块的内数据,则必须将目标的业务名称及公开的业务方法的信息发给所述业务管理模块进行请求。
在每个所述业务脚本中,均定义有一个局部的table,在所述table中定义有一个字段type、赋值与业务名称相同,在所述table中还定义有所述初始化(init)方法、所述配置保存(save)方法以及所述清理(finish)方法。在所述业务脚本的最后返回所述table。
当后续通过所述Lua虚拟机加载所述业务脚本时,会调用其中的初始化方法向业务管理模块去注册公开的方法及做一些其它初始化工作;而在卸载所述业务脚本时,在卸载之前会先调用其中的配置保存方法保存内部的数据,然后调用其中的清理方法向业务管理模块注销公开的方法及做一些其它清理工作。
本方案中上述设置的目的在于将各个所述业务模块独立化,保证非常高的内聚度。在对单个业务进行更新时,完全不会影响到其它业务的正常工作,也可以保证程序的稳定性,避免在更新时导致程序出现异常甚至崩溃。
S2、通过所述Lua虚拟机加载业务模块内的业务脚本M、在加载所述业务脚本M时所述Lua虚拟机同时执行所述业务脚本M中的初始化方法,所述业务模块向所述业务管理模块注册公开的业务方法,所述业务管理模块以业务名称作为索引对所述业务模块进行管理。
S3、当所述业务脚本M需要更新时,所述业务管理模块依据业务名称寻找并确定相应的所述业务模块,所述业务管理模块调用相应的配置保存方法对业务配置进行保存、再调用相应的清理方法对所述业务模块公开的业务方法进行注销,随后在Lua虚拟机中卸载所述业务模块内的业务脚本M。
需要说明的是,在S3中,当所述业务脚本出现业务逻辑错误时,需要先对所述业务脚本进行代码修复,随后再将所述业务脚本下发至应用程序中。
S4、以与S2中相同的方式加载另一所述业务模块内的新的业务脚本M,随后将S3中保存的业务配置加载到另一所述业务模块内的新的业务脚本M中、对应的业务恢复正常运作。在整个更新过程中,不会影响其它业务脚本的正常运行。
本发明所提供的一种基于Lua的跨平台应用程序的热更新方法,充分地利用了Lua脚本语言可在大多数操作系统和平台上编译、运行的特点,有效地实现了跨平台的应用程序更新操作,操作者可以根据实际需要实时更新现有的业务模块或添加新的业务模块,整个过程方便快捷,免除了现有操作中大量无谓的维护工作、节约了企业的资源。
此外,采用本发明的方法对应用程序进行热更新,程序的稳定性有所保障,程序更新完成后也无需重启程序或设备,不会出现因重启而导致服务被迫中断的问题,在确保了程序更新效果的前提下最大限度地提升了应用程序使用者的用户体验。
此外,本发明也为同领域内的其他相关方案提供了参考,可以以此为依据进行拓展延伸,运用于同领域内其他与跨平台程序更新相关的技术方案中,具有十分广阔的应用前景。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神和基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
Claims (6)
1.一种基于Lua的跨平台应用程序的热更新方法,其特征在于,包括如下步骤:
S1、启动应用程序,创建一个包含有若干业务模块的Lua虚拟机,随后在所述Lua虚拟机中建立一个业务管理模块;
S2、通过所述Lua虚拟机加载业务模块内的业务脚本、在加载所述业务脚本时所述Lua虚拟机同时执行所述业务脚本中的初始化方法,所述业务模块向所述业务管理模块注册公开的业务方法,所述业务管理模块以业务名称作为索引对所述业务模块进行管理;
S3、当所述业务脚本需要更新时,所述业务管理模块依据业务名称寻找并确定相应的所述业务模块,所述业务管理模块调用相应的配置保存方法对业务配置进行保存、再调用相应的清理方法对所述业务模块公开的业务方法进行注销,随后在Lua虚拟机中卸载所述业务模块内的业务脚本;
S4、以与S2中相同的方式加载另一所述业务模块内的新的业务脚本,随后将S3中保存的业务配置加载到另一所述业务模块内的新的业务脚本中、对应的业务恢复正常运作。
2.根据权利要求1所述的基于Lua的跨平台应用程序的热更新方法,其特征在于:所述应用程序内集成有Lua库,所述Lua虚拟机由Lua库函数创建。
3.根据权利要求1所述的基于Lua的跨平台应用程序的热更新方法,其特征在于:所述Lua虚拟机内包含有多个所述业务模块,每个所述业务模块内均保存有与业务相对应的、独立的业务脚本,所述业务脚本为Lua脚本。
4.根据权利要求1所述的基于Lua的跨平台应用程序的热更新方法,其特征在于:在所述Lua虚拟机中,不同所述业务模块间的交互均需要借助所述业务管理模块的中转来完成。
5.根据权利要求3所述的基于Lua的跨平台应用程序的热更新方法,其特征在于:所述业务脚本中定义有一个table,在所述table中定义有一个字段type、赋值与业务名称相同,在所述table中还定义有所述初始化方法、所述配置保存方法以及所述清理方法。
6.根据权利要求5所述的基于Lua的跨平台应用程序的热更新方法,其特征在于:在S3中,当所述业务脚本出现业务逻辑错误时,需要先对所述业务脚本进行代码修复,随后再将所述业务脚本下发至应用程序中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011047015.5A CN112181462A (zh) | 2020-09-29 | 2020-09-29 | 基于Lua的跨平台应用程序的热更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011047015.5A CN112181462A (zh) | 2020-09-29 | 2020-09-29 | 基于Lua的跨平台应用程序的热更新方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112181462A true CN112181462A (zh) | 2021-01-05 |
Family
ID=73946588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011047015.5A Pending CN112181462A (zh) | 2020-09-29 | 2020-09-29 | 基于Lua的跨平台应用程序的热更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181462A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407259A (zh) * | 2021-07-13 | 2021-09-17 | 北京百度网讯科技有限公司 | 加载场景的方法、装置、设备以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211627A1 (en) * | 2009-02-13 | 2010-08-19 | Mobitv, Inc. | Reprogrammable client using a uniform bytecode model |
US20100211941A1 (en) * | 2009-02-13 | 2010-08-19 | Mobitv, Inc. | System for automatic management of applications on remote devices |
CN102207879A (zh) * | 2011-06-14 | 2011-10-05 | 贵阳朗玛信息技术股份有限公司 | Lua脚本热更新方法及系统 |
-
2020
- 2020-09-29 CN CN202011047015.5A patent/CN112181462A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211627A1 (en) * | 2009-02-13 | 2010-08-19 | Mobitv, Inc. | Reprogrammable client using a uniform bytecode model |
US20100211941A1 (en) * | 2009-02-13 | 2010-08-19 | Mobitv, Inc. | System for automatic management of applications on remote devices |
CN102207879A (zh) * | 2011-06-14 | 2011-10-05 | 贵阳朗玛信息技术股份有限公司 | Lua脚本热更新方法及系统 |
Non-Patent Citations (1)
Title |
---|
范晖;夏清国;: "业务逻辑编译器的设计与实现", 计算机科学, no. 03, 25 March 2007 (2007-03-25) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407259A (zh) * | 2021-07-13 | 2021-09-17 | 北京百度网讯科技有限公司 | 加载场景的方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8793662B2 (en) | Runtime code hooking for print driver and functionality testing | |
CN111090536A (zh) | 一种获取内存泄露信息的方法、装置、介质和电子设备 | |
CN111949529B (zh) | 系统调试方法、装置、计算机设备和存储介质 | |
US10817285B1 (en) | Transactional migration system | |
CN109032631A (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN111752841B (zh) | 单测模拟方法、装置、设备与计算机可读存储介质 | |
CN112765032A (zh) | 程序调试方法、装置、设备及存储介质 | |
CN112181462A (zh) | 基于Lua的跨平台应用程序的热更新方法 | |
WO2020253045A1 (zh) | 配置化的数据转发异常补处理方法、装置及可读存储介质 | |
US8645920B2 (en) | Data parallelism aware debugging | |
CN107977243A (zh) | 一种第三方接口调用方法及装置 | |
CN113157429B (zh) | 一种saas云服务实现方法及系统 | |
CN116723100A (zh) | 一种网络系统业务变更管理方法、装置、设备及存储介质 | |
CN111158777A (zh) | 组件调用方法、装置及计算机可读存储介质 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN115705294B (zh) | 用于获取函数调用信息的方法、装置、电子设备和介质 | |
CN109857380B (zh) | 一种工作流文件编译方法及装置 | |
CN112506781B (zh) | 测试监控方法、装置、电子设备、存储介质及程序产品 | |
CN109669867B (zh) | 测试装置、自动化测试方法和计算机可读存储介质 | |
CN112199110A (zh) | 一种免重启运维升级方法、系统、装置和介质 | |
CN112783574A (zh) | 应用程序开发方法、装置、设备和存储介质 | |
CN112416362B (zh) | 一种pdk编译功能的实现方法 | |
CN112882719B (zh) | 一种编译方法、装置、设备及存储介质 | |
CN118585456B (zh) | 一种基于扩展地址标识的内存缺陷定位方法 | |
CN108959297B (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 |