CN114125028B - 微应用的运行方法、装置、设备、存储介质及程序产品 - Google Patents
微应用的运行方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN114125028B CN114125028B CN202111434742.1A CN202111434742A CN114125028B CN 114125028 B CN114125028 B CN 114125028B CN 202111434742 A CN202111434742 A CN 202111434742A CN 114125028 B CN114125028 B CN 114125028B
- Authority
- CN
- China
- Prior art keywords
- service
- target
- application
- micro
- candidate
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013515 script Methods 0.000 claims abstract description 122
- 238000011161 development Methods 0.000 claims abstract description 10
- 230000003068 static effect Effects 0.000 claims description 43
- 230000006870 function Effects 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 239000003795 chemical substances by application Substances 0.000 description 50
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 15
- 230000001960 triggered effect Effects 0.000 description 11
- 239000003999 initiator Substances 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000010079 rubber tapping Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 238000009434 installation Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000005067 remediation Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72484—User interfaces specially adapted for cordless or mobile telephones wherein functions are triggered by incoming communication events
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种微应用的运行方法、装置、设备、存储介质及程序产品,属于应用技术领域。该方法包括:获取目标微应用的目标微应用脚本,目标微应用是由服务构成的集合,目标微应用脚本由触发器构成,触发器用于在触发事件下通过执行控制逻辑进行服务调用;响应于目标触发事件,触发目标微应用脚本中目标触发事件对应的目标触发器;执行目标触发器对应的目标控制逻辑,并调用目标服务,以实现目标微应用的微应用功能。由于微应用的运行基于低代码量的微应用脚本,因此相较于传统应用所需占用的存储空间更小;将服务组装成微应用,并利用微应用脚本管理服务之间的调用关系,实现了微应用的组件化,有助于降低微应用的开发难度。
Description
技术领域
本申请实施例涉及应用技术领域,特别涉及一种微应用的运行方法、装置、设备、存储介质及程序产品。
背景技术
随着应用(Application)技术的不断发展,越来越多功能丰富的应用应运而生,为人们的日常生活带来便利。
用户在使用应用之前,首先需要从应用商店下载应用安装包,并通过解析应用安装包将应用安装在终端中,然后点击应用图标以启动应用。然而,随着应用质量的不断提高,应用所需占用的存储空间也越来越大。
发明内容
本申请实施例提供了一种微应用的运行方法、装置、设备、存储介质及程序产品。所述技术方案如下:
一方面,本申请实施例提供了一种微应用的运行方法,所述方法包括:
获取目标微应用的目标微应用脚本,所述目标微应用是由服务构成的集合,所述目标微应用脚本由触发器构成,且所述触发器用于在触发事件下通过执行控制逻辑进行服务调用;
响应于目标触发事件,触发所述目标微应用脚本中所述目标触发事件对应的目标触发器;
执行所述目标触发器对应的目标控制逻辑,并调用目标服务,以实现所述目标微应用的微应用功能。
另一方面,本申请实施例提供了一种微应用的运行装置,所述装置包括:
脚本获取模块,用于获取目标微应用的目标微应用脚本,所述目标微应用是由服务构成的集合,所述目标微应用脚本由触发器构成,且所述触发器用于在触发事件下通过执行控制逻辑进行服务调用;
触发模块,用于响应于目标触发事件,触发所述目标微应用脚本中所述目标触发事件对应的目标触发器;
服务调用模块,用于执行所述目标触发器对应的目标控制逻辑,并调用目标服务,以实现所述目标微应用的微应用功能。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的微应用的运行方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上述方面所述的微应用的运行方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的微应用的运行方法。
本申请实施例中,在运行由若干服务构成的微应用时,通过获取微应用的微应用脚本,并基于触发事件触发微应用脚本中对应的触发器,进而通过执行该触发器对应的控制逻辑,调用相应的服务以实现微应用的微应用功能。由于微应用的运行基于低代码量的微应用脚本,因此相较于传统应用所需占用的存储空间更小;并且,将服务组装成微应用,并利用微应用脚本管理服务之间的调用关系,实现了微应用的组件化,提高了微应用间服务的复用性,有助于降低微应用的开发难度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例示出的微应用脚本的示意图;
图2示出了本申请一个示例性实施例提供的微应用系统的系统架构图;
图3示出了本申请一个示例性实施例提供的微应用的运行方法的流程图;
图4是本申请一个示例性实施例示出的微应用订阅过程的界面示意图;
图5是本申请一个示例性实施例示出的微应用订阅过程的实施示意图;
图6是本申请一个示例性实施例示出的微应用取消订阅过程的实施示意图;
图7是本申请一个示例性实施例示出的目标服务确定过程的流程图;
图8是本申请一个示例性实施例示出的服务调用过程的实施示意图;
图9是本申请一个示例性实施例示出的服务代理调用服务过程的实施示意图;
图10是本申请一个示例性实施例示出的静态服务调用过程的流程图;
图11是本申请一个示例性实施例示出的动态服务调用过程的流程图;
图12是本申请一个示例性实施例示出的服务差分部署的实施示意图;
图13是本申请一个示例性实施例示出的引擎状态同步过程的实施示意图;
图14是本申请一个示例性实施例示出的微应用脚本获取过程的流程图;
图15是本申请一个示例性实施例示出的目标微应用确定过程的示意图;
图16示出了本申请一个实施例提供的微应用的运行装置的结构框图;
图17示出了本申请一个示例性实施例提供的计算机设备的结构方框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了方便理解,下面对本申请实施例中涉及的名词进行说明。
微应用:微应用可以看做是由服务构成的集合,用于通过服务之间的调用实现特定的业务逻辑,即微应用的微应用功能。不同于传统应用只能运行在特定操作系统上,微应用的服务可以是不同操作系统上的服务,即微应用支持异构操作系统,可以实现跨平台运行。
不同于传统应用在使用前需要下载,并与设备绑定,微应用采用订阅机制,并与用户绑定,即通过用户帐号下的某一设备订阅微应用后,该用户帐号下的各个设备均可以使用该微应用。
微应用脚本:又称为微应用定义,用于控制微应用中服务之间的调用关系,采用脚本语言描述了一段通用的业务逻辑。其中,该脚本语言可以为xml、javascript。
如图1所示,微应用脚本11由若干触发器12构成,而每个触发器12又是由触发事件13、控制逻辑14以及控制逻辑14所控制的若干服务15构成。其中,微应用脚本中的服务并未服务本身,而是服务的服务标识。
不同于传统应用在运行前需要下载并安装应用安装包,比如,在运行安卓应用前,需要下载apk包,微应用在运行前只需要下载对应的微应用脚本,微应用过程中,即通过微应用引擎执行该微应用脚本,实现微应用功能。相较于传统应用,微应用脚本的代码量更低,因此占用的存储空间较小,且有利于动态部署和更新。
服务:作为微应用运行过程中的最小单元,用于实现特定任务。比如,截屏服务用于实现设备截屏功能、投屏服务用于实现设备间的显示画面投屏等等。并且,微应用运行过程中调用的服务可以为当前设备上的服务,也可以是其他设备上的服务。比如,微应用运行过程中,可以通过调用其他设备上的截屏服务,获取其他设备的设备截屏,并通过调用图片显示服务,对其他设备的设备截屏进行显示。
不同于传统应用安装过程中,需要将运行过程中使用到的所有服务预先安装在本地,由于微应用的业务逻辑在运行过程中动态组装,因此微应用中的服务支持动态部署,即在运行过程基于当前设备所执行的业务逻辑,将业务逻辑对应的服务动态部署至当前设备。相应的,当通过多个设备实现同一微应用的微应用功能时,由于不同设备的业务逻辑可能不同,因此不同设备处部署的服务也可能存在差异,即微应用中的服务具有差分部署的特性。
本申请实施例中,构成微应用的服务可以包括静态服务和动态服务,其中,静态服务指由宿主应用提供的服务,需要预安装在设备中,而动态服务则是指支持动态部署的服务,可以在微应用运行过程中动态部署在设备中。
图2示出了本申请一个示例性实施例提供的微应用系统的系统架构图。该系统中包括至少一个计算机设备210以及服务器220。
计算机设备210是具有微应用运行功能的电子设备,该电子设备可以是智能手机、平板电脑、个人计算机、车机等等,本实施对此不作限定。图2中以设备210包括智能手机、平板电脑以及车机为例进行说明,但并不对此构成限定。
在一种可能的实施方式中,计算机设备210中设置有微应用引擎211,微应用引擎211作为控制微应用运行的核心,包括脚本管理模块2111、事件总线模块2112、应用调度模块2113、运行时模块2114以及服务调度模块2115。
脚本管理模块2111用于管理计算机设备210中存储的各个微应用的微应用脚本,并负责对微应用脚本进行解析,以此确定该微应用脚本中的触发器以及触发器下的服务。可选的,脚本管理模块2111还用于在接收到对微应用的订阅操作时,下载相应的微应用脚本,在接收到对微应用的订阅取消操作时,删除微应用对应的微应用脚本。
事件总线模块2112用于与应用调度模块2113进行配合,基于触发事件实现微应用调度。在一些实施例中,事件总线模块2112下挂载有多个微应用对应的触发器,由于同一触发事件可能会触发多个订阅的微应用,因此事件总线模块2112接收到触发事件后,交由应用调度模块2113从若干个微应用中确定出需要运行的微应用。其中,应用调度模块2113可以基于调度策略自动确定微应用,也可以交由用户手动选择微应用。
运行时模块2114用于执行微应用脚本中的控制逻辑,从而基于该控制逻辑与服务调度模块2115进行交互,由服务调度模块2115进行服务调用。
此外除了设置有微应用引擎211外,计算机设备210中还设置有服务治理模块212、数据同步模块213以及服务网关214。
其中,服务治理模块212用于管理设备中预安装的静态服务;数据同步模块213用于在微应用引擎211的状态发生变更时(比如服务产生的事件导致状态变更),向其他计算机设备进行状态同步,确保不同计算机设备处微应用引擎211的状态一致性。
服务网关214用于基于服务调度模块2115的服务调用请求进行服务调用,具体包括代理管理模块2141以及生命周期管理模块2142。代理管理模块2141中设置有不同的服务代理,服务代理用于将统一格式的服务调用请求进行转换,得到符合真实服务格式要求的请求。生命周期管理模块2142用于管理服务的生命周期,可以包括静态服务生命周期管理模块以及动态服务生命周期管理模块。
微应用运行过程中,计算机设备210除了可以通过自身的服务网关214进行服务调用外,还可以通过其他设备的服务网关214进行服务调用(由微应用的业务逻辑决定),即可以实现跨设备的服务调用。
针对不同部署方式的服务,如图2所示,计算机设备210中还设置有静态服务模块216和动态服务模块215。静态服务模块216用于管理预安装的静态服务,动态服务模块215则用于管理动态部署的动态服务。
在一些实施例中,动态服务模块215中包含的服务可以对应不同运行环境、不同部署形态或不同编程开发语言。图2中以动态服务模块215包含安卓动态服务2151、Web动态服务2152以及容器动态服务2153为例进行示意性说明,但并不对此构成限定。
服务器220是一台服务器、若干台服务器构成的服务集群或云计算中心。根据服务器集群中各服务器所实现功能进行划分,如图2所示,服务器集群中包括用户资源管理服务器221、微应用商店服务器222、服务市场服务器223以及云端服务库224。
用户资源管理服务器221中包括用户管理模块2211、应用管理模块2212、服务管理模块2213、设备管理模块2214以及安全模块2215。用户管理模块2211用于对使用微应用的用户帐号进行管理;应用管理模块2212用于对不同用户帐号下订阅的微应用进行管理;服务管理模块2213用于对调用的服务进行管理;设备管理模块2214用于对用户帐号与设备之间的绑定关系进行管理;安全模块2215则用于在交互过程中进行安全性验证。
微应用商店服务器222用于提供微应用订阅服务。用户需要使用微应用时,可以通过微应用商店服务器222提供的微应用搜索引擎2221进行微应用搜索,进而从搜索结果中选择订阅微应用。
在一些实施例中,微应用商店服务器222接收到对微应用的订阅操作后,将用户帐号与所订阅微应用的应用标识发送至用户资源管理服务器221,由用户资源管理服务器221中的应用管理模块2212更新用户帐号与微应用的订阅关系。进一步的,用户管理模块2211与设备管理模块2214,确定该用户帐号下的其他设备,并向其他设备推送订阅通知,以便其他设备从微应用商店服务器222处下载微应用的微应用脚本。示意性的,如图2所示,用户“张三”通过智能手机订阅微应用后,登陆“张三”这一用户帐号的车机和平板电脑接收到用户资源管理服务器221推送的订阅通知,从而基于通知中的应用标识下载微应用的微应用脚本。
服务市场服务器223是面向开发者,用于提供服务查询服务的服务器。开发者可以通过服务市场服务器223提供的服务搜索引擎2231进行服务搜索,并将搜索到的服务应用于开发的微应用中,进而将开发完成的微应用上传至微应用商店服务器222,供其他用户下载使用。
除此之外,开发者也可以进行动态服务开发,并将开发的动态服务上传至云端服务库224。后续计算机设备210即可从云端服务库224处下载并部署动态服务。
需要说明的是,上述实施例仅对微应用系统的基础架构进行了说明,微应用系统中还可以包括其他计算机设备(比如开发者设备)或实现其他功能的服务器,本实施例并不对此构成限定。
请参考图3,其示出了本申请一个示例性实施例提供的微应用的运行方法的流程图,本申请实施例以该方法应用于图2所示的计算机设备为例进行说明,该方法包括:
步骤301,获取目标微应用的目标微应用脚本,目标微应用是由服务构成的集合,目标微应用脚本由触发器构成,且触发器用于在触发事件下通过执行控制逻辑进行服务调用。
在一种可能的实施方式中,当接收到目标微应用的启动指令时,计算机设备从本地存储的微应用脚本中,获取目标微应用对应的目标微应用脚本,其中,计算机设备本地存储由当前登陆的用户帐号所订阅的微应用的微应用脚本。
可选的,该启动指令可以由用户通过点击微应用图标触发,可以由交互触发(比如语音、摇一摇、敲击、场景感知等等),本申请实施例并不对启动目标微应用的具体方式进行限定。
本申请实施例中,微应用作为一种由服务构成的集合,其业务逻辑由计算机设备通过微应用引擎执行微应用脚本实现,其中,不同微应用的微应用脚本均由同一微应用引擎执行。
微应用脚本作为一种低代码量的脚本文件,由若干触发器构成,且各个触发器用于在特定的触发事件下触发,并在触发后通过触发器对应控制逻辑进行服务调用。
在一些实施例中,微应用脚本中至少包括初始化触发器和结束触发器,初始化触发器用于触发微应用开始运行,结束触发器则用于触发微应用结束运行。除了初始化触发器和结束触发器以外,微应用脚本中还包括实现具体微应用功能的其它触发器,本申请实施例对此不作限定。
步骤302,响应于目标触发事件,触发目标微应用脚本中目标触发事件对应的目标触发器。
微应用运行过程中,当接收到目标触发事件时,计算机设备从目标微应用脚本中确定出该目标触发事件所触发的目标触发器,从而将该目标触发器由未触发状态设置为触发状态。触发状态下,计算机设备即通过微应用引擎执行触发器对应的控制逻辑,以实现相应地业务逻辑。
可选的,该目标触发事件可以是用户触发的事件,比如敲击事件、摇一摇事件等等,也可以是调用服务后输出的事件,比如,上一触发器对应服务调用完成后返回的事件,本实施例对此不作限定。
步骤303,执行目标触发器对应的目标控制逻辑,并调用目标服务,以实现目标微应用的微应用功能。
在一种可能的实施方式中,计算机设备通过微应用引擎中的运行时模块执行目标触发器对应的目标控制逻辑,进而由目标控制逻辑调用目标服务。可选的,当目标控制逻辑所调用的服务包括至少两个时,至少两个服务将按照业务逻辑按序调用。
本申请实施例中,计算机设备调用的目标服务可以是当前设备的服务,也可以是外部设备的服务,即可以实现跨设备服务调用,从而通过与外部设备交互实现目标微应用的微应用功能。
此外,本申请实施例中,由于微应用的服务除了支持静态部署外,还支持在运行过程中动态部署,因此在调用目标服务前,计算机设备需要确定目标服务是否已部署在本地,并在未部署时对该目标服务进行动态部署(针对动态服务)。
需要说明的是,当微应用中包含多个触发器时,计算机设备重复执行上述步骤302和303,并在触发结束触发器后,执行结束触发器的控制逻辑,以结束运行微应用。
综上所述,本申请实施例中,在运行由若干服务构成的微应用时,通过获取微应用的微应用脚本,并基于触发事件触发微应用脚本中对应的触发器,进而通过执行该触发器对应的控制逻辑,调用相应的服务以实现微应用的微应用功能。由于微应用的运行基于低代码量的微应用脚本,因此相较于传统应用所需占用的存储空间更小;并且,将服务组装成微应用,并利用微应用脚本管理服务之间的调用关系,实现了微应用的组件化,提高了微应用间服务的复用性,有助于降低微应用的开发难度。
由于微应用并非与设备绑定,而是与用户绑定,因此在使用目标微应用前首先需要通过用户帐号进行微应用订阅,从而将目标微应用对应的目标微应用脚本下载至用户帐号下的各个设备。
对于订阅发起方设备,在一种可能的实施方式中,响应于对目标微应用的订阅操作,订阅发起方设备下载目标微应用的目标微应用脚本。
可选的,订阅发起方设备可以通过访问微应用商店服务器,获取包含所有微应用的微应用列表,并在接收到对微应用列表中目标微应用的订阅操作时,从微应用商店服务器处下载目标微应用脚本。
可选的,订阅发起方设备也可以借助微应用商店服务器的微应用搜索引擎,通过输入微应用关键字进行微应用搜索,进而从搜索结果中发起对目标微应用的订阅操作。
其中,该订阅操作可以是对目标微应用对应订阅控件的点击操作。
示意性的,如图4所示,订阅发起方设备访问微应用商店,在微应用商店界面41中显示微应用列表中的各个微应用,其中包含当前用户帐号已订阅和未订阅的微应用。或者,用户可以在微应用商店界面41的搜索栏中输入微应用关键字,并点击搜索控件43,触发微应用商店服务器反馈包含微应用关键字的微应用。当接收到对目标微应用对应订阅控件42的点击操作时,订阅发起方设备即根据目标微应用的应用标识,从微应用商店服务器处下载目标微应用脚本。
对于与订阅发起方设备登陆同一用户帐号的其他设备,在一种可能的实施方式中,响应于订阅推送消息,计算机设备基于订阅推送消息中的应用标识,下载目标微应用的目标微应用脚本,其中,该订阅推送消息由服务器在检测到用户帐号订阅的微应用发生变更时,向用户帐号下的各个设备推送。
可选的,订阅发起方设备完成目标微应用订阅后,用户资源管理服务器基于订阅发起方设备所登陆的用户帐号以及目标微应用的应用标识,更新用户帐号与微应用之间的订阅关系,并基于查询该用户帐号下的设备,从而向查询到的各个设备发送订阅推送消息,该订阅推送消息中至少包含目标微应用的应用标识。
计算机设备接收到订阅推送消息后,知悉与自身登陆同一用户帐号的其他设备订阅了目标微应用,从而基于订阅推送消息中的应用标识,从微应用商店服务器处下载目标微应用的目标微应用脚本。
示意性的,如图5所示,登陆用户帐号“张三”的设备A通过访问微应用商店服务器52,并订阅微应用后,用户资源管理服务器51中的应用管理模块511添加“张三”与微应用之间的订阅关系,并通过设备管理模块512查询到用户帐号“张三”下还包括设备B和设备C,从而通过向设备B和设备C发送订阅推送消息。设备B和设备C接收到订阅推送消息后,通过微应用引擎自动从微应用商店服务器52处下载微应用脚本。
由于微应用中的服务由业务逻辑串联,且在运行时才能够决定服务所部属的设备,因此在下载微应用的微应用脚本后,需要立即执行微应用脚本中的初始化触发器,并预先将该初始触发器所调用的服务部署在当前设备,以此保证微应用的正常运行。
在一种可能的实施方式中,计算机设备下载目标微应用的目标微应用脚本之后,基于目标微应用脚本中的初始化触发器,部署初始化服务,该初始化服务为初始化触发器所调用的服务,且该初始化服务的数量为至少一个。
在一个示意性的例子中,当微应用用于实现双指叩击跨端截屏时,该微应用的微应用脚本中包括初始化触发器、双指叩击触发器以及结束触发器。由于初始化触发器中需要调用双指叩击服务,因此双击叩击服务需要预先部署在设备中,避免因未预先部署双指叩击服务导致无法捕获双击叩击事件,进而导致无法触发双指叩击触发器,最终导致微应用无法运行的问题。
除了能够对微应用进行订阅外,计算机设备还可以在取消对微应用的订阅。在一种可能的实施方式中,响应于对目标微应用的取消订阅操作,计算机设备删除目标微应用的目标微应用脚本,避免取消订阅后的目标微应用脚本占用设备存储空间。
同时,为了保证同一用户帐号下各个设备中微应用脚本的一致性,计算机设备还需要向服务器发送订阅取消指令,以便服务器基于该订阅取消指令,向用户帐号下的各个设备推送订阅取消消息,以便各个终端删除目标微应用脚本。其中,订阅取消指令中至少包含目标微应用的应用标识。
示意性的,如图6所示,登陆用户帐号“张三”的设备A取消订阅微应用后,向用户资源管理服务器51发送订阅取消指令,用户资源管理服务器51中的应用管理模块511基于该订阅取消指令删除“张三”与微应用之间的订阅关系,并通过设备管理模块512查询到用户帐号“张三”下还包括设备B和设备C,从而通过向设备B和设备C发送订阅取消消息。设备B和设备C接收到订阅取消消息后,删除微应用的微应用脚本。
本实施例中,通过订阅、推送以及取消订阅机制,使同一用户帐号下各个设备中的微应用脚本保持一致,避免出现因不同设备侧微应用脚本不一致,导致微应用使用异常的问题,保证了微应用的可用性以及不同设备侧使用体验的一致性。此外,计算机设备在下载微应用脚本后,基于微应用脚本中初始化触发器所调用的服务,预先部署初始化服务,确保后续微应用的正常运行。
本申请实施例中,微应用脚本中定义了所调用的服务,而实际情况中可能存在多种具体的服务实例用以实现相同的服务功能。比如,可以通过支付应用提供的支付服务A、即时通信应用提供的支付服务B或支付动态服务C实现支付功能。因此在调用目标服务之前,计算机设备首先需要从若干候选服务中确定出目标服务。在一种可能的实施方式中,如图7所示,计算机设备确定目标服务的过程包括如下步骤。
步骤701,基于目标控制逻辑所调用服务的服务标识,确定候选服务列表,候选服务列表中包含至少一个与服务标识匹配的候选服务。
在一种可能的实施方式中,目标微应用脚本中目标控制逻辑下包括所调用服务的服务标识,微应用引擎中的运行时模块执行该目标控制逻辑时,获取该服务标识,从而通过服务调度模块确定与该服务标识匹配的至少一个候选服务。其中,服务标识可以为服务名称或者服务ID,本实施例对此不作限定。
由于控制逻辑所调用的服务既可能是静态服务,也可能是动态服务,因此计算机设备需要从本地和云端查询可用的候选服务。可选的,本步骤可以包括如下子步骤:
1、确定当前设备中与服务标识匹配的候选静态服务,其中,静态服务为设备中宿主应用所提供的服务。
静态服务作为一种预安装服务,其调用依赖于宿主应用,即在安装有宿主应用的情况下,该静态服务才能够被调用。在一种可能的实施方式中,服务治理模块用于管理本地设备中由宿主应用提供的静态服务,获取到服务标识后,服务调度模块通过服务治理模块,查询本地设备中与服务标识匹配的候选静态服务。
在一个示意性的例子中,服务治理模块基于服务名“支付”,将支付应用提供的支付服务A以及即时通信应用提供的支付服务B确定为候选静态服务(计算机设备安装有支付应用A和即时通信应用B)。
2、从云端服务库中确定与服务标识匹配的候选动态服务,其中,动态服务为支持动态部署至设备的服务。
动态服务作为一种支持动态部署的服务,其调用并不依赖预先安装的应用,且可供调用的动态服务统一存储在云端服务库中。在一种可能的实施方式中,服务调度模块基于服务标识,从云端服务库中查询与服务标识相匹配的候选动态服务。
在一个示意性的例子中,服务调度模块基于服务名“支付”,从云端服务库中查询到支付动态服务C,并将支付动态服务C确定为候选动态服务。
需要说明的是,确定出候选动态服务后,计算机设备并不会直接进行下载,而是在确定出目标服务,且目标服务属于候选动态服务时进行服务下载。
3、基于候选静态服务和候选动态服务生成候选服务列表。
进一步的,计算机设备对查询到的候选动态服务和候选静态服务进行合并,得到候选服务列表。
步骤702,从候选服务列表的候选服务中确定目标服务。
可选的,当候选服务列表中仅包含一个候选服务时,计算机设备直接将该候选服务确定为目标服务;当候选服务列表中包含至少两个候选服务时,计算机设备需要从中确定出目标服务。
在一种可能的实施方式中,计算机设备显示候选服务列表,由用户从候选服务列表中自行选择调用的目标服务。响应于对候选服务列表中候选服务的选择操作,计算机设备将选中的候选服务确定为目标服务。
在一些实施例中,计算机设备可以以弹窗的形式显示候选服务列表,并在接收到候选服务列表中候选服务的点击操作时,确定目标服务。本申请实施例并不对候选服务列表的显示方式进行限定。
在另一种可能的实施方式中,计算机设备可以基于服务选择策略,从候选服务中自动确定出目标服务。可选的,计算机设备可以基于用户信息、设备信息、历史使用记录、服务信息中的至少一种确定目标服务,本实施例并不对具体的服务选择策略进行限定。
比如,当候选服务列表中包含支付应用提供的支付服务A、即时通信应用提供的支付服务B以及支付动态服务C时,基于当前设备的历史支付记录,计算机设备将使用频率最高的支付服务A确定为目标服务。
又比如,当候选服务列表中包含不同类型设备提供的服务时,计算机设备可以基于当前设备与各个设备之间的位置关系(可以基于定位、网络位置等信息确定得到),将距离最近设备所提供的服务确定为目标服务。
确定出目标服务后,计算机设备进一步调用该目标服务。其中,当目标服务为静态服务时,计算机设备无需动态下载目标服务,而当目标服务为动态服务时,计算机设备需要基于动态服务的部署情况,确定是否需要实时下载并部署。
在一个示意性的例子中,如图8所示,运行时模块801在执行控制逻辑过程中,基于控制逻辑所调用服务的服务标识请求服务调度模块802进行服务调用。服务调度模块802基于服务标识分别从服务治理模块803和云端服务库804处查找可用的候选服务。服务器调度模块802可以显示候选服务列表805,供用户选择所要调用的目标应用,也可以基于服务选择策略,从若干候选服务中确定出目标服务。当确定出的目标服务为C设备的服务1时,服务调度模块802进一步通过服务网关806调用C设备中的服务1。
本实施例中,计算机设备基于所调用服务的服务标识,查询与该服务标识匹配的静态服务和动态服务,并进一步从查询到的静态服务和动态服务中确定出目标服务,丰富了服务调用的种类,提高了服务实现的多样性。
本申请实施例中,服务的调用可以由服务网关实现,且计算机设备除了能够通过自身的服务网关调用本地服务外,还可以通过其他设备的服务网关进行服务调用,从而实现跨端服务调用。在一种可能的实施方式中,计算机设备在调用目标服务时,确定提供目标服务的目标设备,从而通过目标服务网关调用目标服务器。其中,目标服务网关可以是当前设备的服务网关,和/或,当前设备以外的外部设备的服务网关(由微应用的业务逻辑决定),且外部设备中设置有目标微应用脚本,即该外部设备和当前设备均能够运行目标微应用。
为了使微应用支持异构操作系统,从而实现跨平台运行,在进行服务调用时需要采用统一格式的服务调用请求,服务网关需要通过本地部署的服务代理,将同一格式的服务调用请求转换为真实的服务调用(因为不同操作系统有自身不同的进程上层抽象方式,以及进程间不同的调用方式),即符合当前平台服务规范的服务调用。
在目标服务网关为当前设备的服务网关的情况下,在一种可能的实施方式中,计算机设备通过目标服务网关获取服务调用请求,从而通过目标服务网关确定目标服务对应的目标服务代理。进一步的,基于服务调用请求,通过目标服务代理调用目标服务。
而在目标服务网关为外部设备的服务网关的情况下,计算机设备向外部设备发送服务调用请求,由外部设备通过目标服务网关确定目标服务对应的目标服务代理,并基于服务调用请求,通过目标服务代理调用目标服务。
可选的,当目标服务网关为外部设备的服务网关时,计算机设备可以通过用户资源管理服务器(设备管理模块)获取外部设备的服务网关的网关地址,从而基于该网关地址发送服务调用请求。
在一些实施例中,基于所需提供服务的服务类型,计算机设备可以按需部署有不同的服务代理(比如在window系统的设备上无需部署安卓服务代理),其中,不同的服务代理对应不同的编程开发语言(比如java、js、php、C、C++等等),或,不同的服务代理对应不同的部署形态(比如小程序、浏览器插件、应用程序等等),或,不同的服务代理对应不同的运行环境(比如虚拟机、浏览器、操作系统、容器等等)。
示意性的,如图9所示,服务网关90的代理管理模块91中设置有Android Service代理911、云端restful代理912、Android动态服务代理913以及Web动态服务代理914。
可选的,目标服务网关获取到服务调用请求后,基于目标服务的服务信息,确定是否部署有目标服务对应的目标服务代理。若部署有目标服务代理,则通过目标服务代理进行服务调用;若未部署目标服务代理,则无法进行服务调用。
关于目标服务代理调用目标服务的具体方式,在一种可能的实施方式中,该调用过程可以包括如下步骤:
1、通过目标服务代理对服务调用请求中的原始输入参数进行转换,得到目标输入参数,其中,原始输入参数采用统一参数格式,目标输入参数符合目标服务的参数格式。
可选的,服务代理中定义了如何调用服务,包括如何对原始的调用参数转换为真实服务所需的参数、如何访问操作系统中指定进程的服务、如何将真实服务返回的参数转换为统一格式的参数等等。由于服务器调用请求中统一参数格式的原始输入参数并不符合目标服务的参数输入格式,因此目标服务代理首先需要对原始输入参数进行转换,得到符合目标服务所规定的参数格式的目标输入参数。
示意性的,如图9所示,当需要调用Android动态服务93中的服务A时,服务网关90通过Android动态服务代理913对原始输入参数进行转换,并基于转换后的参数调用Android动态服务93中的服务A;当需要调用Web动态服务94中的服务B时,服务网关90通过Web动态服务代理914对原始输入参数进行转换,并基于转换后的参数调用Web动态服务94中的服务B。
2、基于目标输入参数,通过目标服务代理调用目标服务,得到目标服务的原始输出参数。
进一步的,目标服务代理基于目标输入参数调用目标服务,从而得到目标服务器的原始输出参数,其中,该原始输出参数符合目标服务的参数输入格式。
3、通过目标服务代理对原始输出参数进行转换,得到目标输出参数,目标输出参数采用统一参数格式。
由于最终向微应用引擎反馈的数据需要符合同一参数格式,因此目标服务代理需要对原始输出参数进行转换,得到目标输出参数,进而将目标输出参数反馈至微应用引擎。
示意性的,如图9所示,服务网关90通过Android动态服务代理913对Android动态服务93中服务A输出的参数进行转换,并反馈至微应用引擎;服务网关90通过Web动态服务代理914对Web动态服务94中服务B输出的参数进行转换,并反馈至微应用引擎。
本实施例中,服务网关通过服务代理进行服务调用,由服务代理对调用参数进行参数转换,使转换后的参数符合真实服务的参数要求,保证服务能够被正确调用;由服务代理对服务输出的参数进行转换,使转换后的参数符合统一参数格式,保证不同操作系统、平台以及运行环境下的设备之间能够正常交互,实现了微应用的跨平台部署。
针对不同部署方式(静态部署和动态部署)的服务,其调用方式存在差异,下面分别对静态服务以及动态服务的调用方式进行说明。
在一种可能的实施方式中,在目标服务为静态服务的情况下,计算机设备通过静态服务管理器(图9所示,服务网关90的生命周期管理模块95中设置有静态服务管理器951)获取目标服务的服务状态,并在服务状态为未启动状态的情况下,启动目标服务。其中,计算机设备可以基于目标服务的描述信息,确定目标服务的部署方式。
可选的,静态服务管理器用于管理静态服务的生命周期。比如,当静态服务在目标时长内未被调用,静态服务管理器则结束静态服务的生命周期。
可选的,若目标服务启动成功,计算机设备则根据目标服务的描述信息,确定该目标服务对应的目标服务代理,并通过该目标服务代理进行参数转换,从而基于目标服务对应的宿主应用及访问路径,调用该目标服务。
可选的,若目标服务启动失败,或目标服务不满足预安装条件(比如宿主应用异常导致目标服务不可使用),计算机设备则进行失败提示。
在一个示意性的例子中,静态服务的调用过程如图10所示。
步骤1001,微应用引擎向服务网关发起服务调用请求。
步骤1002,服务网关验证请求是否合法;若合法,则执行步骤1003,若不合法,则执行步骤1010。
步骤1003,检测目标服务是否启动;若启动,则执行步骤1005;若未启动,则启动目标服务,并执行步骤1004。
步骤1004,检测目标服务是否启动成功;若启动成功,则执行步骤1005;若启动失败,则执行步骤1010。
步骤1005,检测是否存在目标服务对应的目标服务代理;若存在,则执行步骤1006;若不存在,则执行步骤1010。
步骤1006,通过目标服务代理进行输入参数转换。
步骤1007,基于转换后的输入参数调用目标服务。
步骤1008,通过目标服务代理进行输出参数转换。
步骤1009,向微应用引擎返回服务调用结果。
步骤1010,返回调用失败。
在一种可能的实施方式中,在目标服务为动态服务的情况下,计算机设备通过动态服务管理器(图9所示,服务网关90的生命周期管理模块95中设置有动态服务管理器952)获取目标服务对应宿主服务的服务状态。
其中,该动态服务的运行依赖于其对应的宿主服务。比如,当动态服务为容器创建服务时,计算机设备获取容器服务的服务状态。本申请实施例对具体的宿主服务的类型不作限定。
因此,在宿主服务的服务状态为未启动状态的情况下,计算机设备启动宿主服务。进一步的,计算机设备通过宿主服务查询目标服务的部署情况。
在未部署目标服务的情况下,计算机设备从云端服务库下载目标服务,并通过宿主服务加载目标服务。在已部署目标服务的情况下(可能是历史调用目标服务时缓存在本地),计算机设备直接通过宿主服务加载目标服务。
可选的,计算机设备需要根据目标服务的描述信息,确定该目标服务对应的目标服务代理,并通过该目标服务代理进行参数转换,从而向宿主服务传递转换后的参数,以便宿主服务基于参数调用目标服务。
在一个示意性的例子中,动态服务的调用过程如图11所示。
步骤1101,微应用引擎向服务网关发起服务调用请求。
步骤1102,服务网关验证请求是否合法;若合法,则执行步骤1103,若不合法,则执行步骤1112。
步骤1103,检测目标服务的宿主服务是否启动;若启动,则执行步骤1105;若未启动,则启动宿主服务,并执行步骤1104。
步骤1104,检测宿主服务是否启动成功;若启动成功,则执行步骤1105;若启动失败,则执行步骤1112。
步骤1105,检测是否存在目标服务对应的目标服务代理;若存在,则执行步骤1106;若不存在,则执行步骤1112。
步骤1106,通过目标服务代理进行输入参数转换。
步骤1107,通过宿主服务检测是否部署由目标服务;若已部署,则执行步骤1108;若未部署,则执行步骤1109。
步骤1108,基于转换后的输入参数调用目标服务。
步骤1109,从云端服务库下载目标服务。
步骤1110,通过目标服务代理进行输出参数转换。
步骤1111,向微应用引擎返回服务调用结果。
步骤1112,返回调用失败。
当微应用由不同设备进行交互以实现微应用功能时,由于不同设备侧的业务逻辑可能不同,因此不同设备侧部署的服务也可能存在差异,以实现不同的功能,即同一微应用运行过程中,不同设备中的服务差分部署。示意性的,如图12所示,对于跨端截屏微应用,实现跨端截屏所调用的服务包括双指叩击服务、图片显示服务以及截屏服务。当用户帐号订阅了跨端截屏微应用后,该用户帐号下的手机、平板、车机以及电视均会下载对应的微应用脚本,且在下载微应用脚本后均会预先基于初始触发器部署双指叩击服务。
当用户双指叩击手机的屏幕时,手机基于微应用脚本,确定执行的业务逻辑应该是图片显示,从而下载并动态部署图片显示服务,并请求调用其他设备侧的截屏服务。平板、车机以及电视接收到服务调用请求后,基于微应用脚本,确定执行的业务逻辑应该是截屏并发送,从而下载并动态部署截屏服务,并调用截屏服务对当前设备画面进行截屏,并反馈至手机。手机接收到其他设备反馈的截屏图片后,调用图片显示服务实现截屏展示。
针对不同的服务调用类型,计算机设备完成服务调用后的后续步骤也存在差异。在一种可能的实施方式中,在目标服务为同步调用服务的情况下,计算机设备获取目标服务的服务返回值,从而基于服务返回值调用下一服务(直至完成该触发器下所有服务的调用);在目标服务为异步调用服务的情况下,计算机设备获取目标服务的服务输出事件,从而通过服务输出事件触发目标微应用脚本中的触发器。
其中,服务返回值可以是数据、文件、指令等等,比如截屏服务的返回值可以为截取到的图片;服务输出事件所触发的触发器可以为目标触发器以外的触发器,也可以为目标触发器,本实施例对此不作限定。
并且,由于不同设备侧的微应用引擎是对等的,需要保持微应用运行过程中所需要的所有状态信息,因此当某一设备上微应用引擎的状态发生变化时(可能是由服务输出事件导致状态变化),微应用引擎需要通过数据同步模块将状态变化情况同步至其他设备。
示意性的,如图13所示,同一用户帐号下的不同设备在运行同一微应用时,设备A部署了服务1和服务2,设备B部署了服务1和服务3,而设备C部署了服务4和服务5。当设备B中服务1被调用后,服务1输出的服务输出事件改变了微应用引擎1301的引擎状态,设备B侧的微应用引擎1301即通过数据同步模块1302将引擎状态同步至设备A和设备C,以便设备A和设备C更新自身微应用引擎1301的引擎状态。当设备C中服务5被调用后,服务5输出的服务输出事件改变了微应用引擎1301的引擎状态,设备C侧的微应用引擎1301即通过数据同步模块1302将引擎状态同步至设备A和设备B,以便设备A和设备B更新自身微应用引擎1301的引擎状态。
通过上述同步机制,用户帐号下的各个设备对等,单个设备的掉线,并不会不影响微应用的运行。比如,当通过双指叩击截取其他设备的屏幕并发送到当前设备时,用户叩击任意一台设备都能完成此操作,并且任意设备掉线,并不会不影响其他设备的正常截屏。
微应用除了能够像传统应用一样通过图标点击操作来启动外,还可以通过其他交互方式启动。当用户执行特定交互动作,且计算机设备中多个微应用均可以由该特定交互动作启动时,计算机设备需要基于多个微应用中确定出实际需要启动的目标微应用,进而获取该目标微应用的目标微应用脚本。
在一种可能的实施方式中,如图14所示,计算机设备获取目标微应用脚本的过程可以包括如下步骤。
步骤1401,响应于初始化触发事件,确定初始化触发事件对应的至少一个候选微应用,初始化触发事件用于触发至少一个候选微应用的触发器。
在一种可能的实施方式中,当接收到初始化触发事件时,计算机设备从订阅的至少一个微应用中,确定出包含该初始化触发事件对应触发器的候选微应用,即将能够由该初始化触发事件触发运行的微应用确定为候选微应用。其中,该初始化触发事件可以是语音输出触发的事件、手势操作触发的事件(比如摇一摇、碰一碰)或情景感知触发的事件(比如检测到回到家中、达到办公地点等等),本实施例对此不作限定。
步骤1402,从至少一个候选微应用中确定目标微应用。
可选的,该目标微应用可以由用户自行指定,也可以由计算机设备基于应用选择策略自动确定得到。
在一种可能的实施方式中,计算机设备基于至少一个候选微应用显示微应用选择列表;当接收到对微应用选择列表的选择操作时,将选中的候选微应用确定为目标微应用。
比如,当用户摇一摇操作用户触发微应用A和微应用B运行时,当用户摇一摇终端时,终端通过弹窗显示显示微应用A和微应用B的应用图标,供用户选择使用。
在另一种可能的实施方式中,计算机设备基于应用选择策略,从至少一个候选微应用中确定目标微应用。
可选的,计算机设备可以基于用户信息、设备信息、地理位置信息、时间信息中的至少一项,确定目标微应用。比如,当用户摇一摇终端时,若终端位于家中,则基于应用选择策略将微应用A确定为目标微应用;若终端位于办公地点,则基于应用选择策略将微应用B确定为目标微应用。
又比如,当用户摇一摇终端时,若当前处于上午时段,则基于应用选择策略将微应用C确定为目标微应用;若当前处于下午时段,则基于应用选择策略将微应用D确定为目标微应用。本申请实施例并不对具体的应用选择策略进行限定。
示意性的,如图15所示,微应用引擎1501的事件总线模块1502下挂载有多个微应用对应的触发器,当接收到初始化触发事件,且该初始化触发事件导致事件总线模块1502下的触发器被触发时,事件总线模块1502基于被触发的触发器,将微应用A、B、C确定候选微应用,并指示应用调度模块1503进行应用调度。应用调度模块1503可以显示微应用选择列表供用户进行选择,也可以基于应用选择策略将微应用C确定为目标微应用。
步骤1403,获取目标微应用的目标微应用脚本。
进一步的,计算机设备基于目标微应用的应用标识,从本地获取目标微应用脚本。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图16,其示出了本申请一个实施例提供的微应用的运行装置的结构框图。该装置可以包括:
脚本获取模块1601,用于获取目标微应用的目标微应用脚本,所述目标微应用是由服务构成的集合,所述目标微应用脚本由触发器构成,且所述触发器用于在触发事件下通过执行控制逻辑进行服务调用;
触发模块1602,用于响应于目标触发事件,触发所述目标微应用脚本中所述目标触发事件对应的目标触发器;
服务调用模块1603,用于执行所述目标触发器对应的目标控制逻辑,并调用目标服务,以实现所述目标微应用的微应用功能。
可选的,所述装置还包括:
候选服务确定模块,用于基于所述目标控制逻辑所调用服务的服务标识,确定候选服务列表,所述候选服务列表中包含至少一个与所述服务标识匹配的候选服务;
目标服务确定模块,用于从所述候选服务列表的所述候选服务中确定所述目标服务。
可选的,所述候选服务确定模块,用于:
确定当前设备中与所述服务标识匹配的候选静态服务,其中,静态服务为设备中宿主应用所提供的服务;
从云端服务库中确定与所述服务标识匹配的候选动态服务,其中,动态服务为支持动态部署至设备的服务;
基于所述候选静态服务和所述候选动态服务生成所述候选服务列表。
可选的,所述目标服务确定模块,用于:
显示所述候选服务列表;响应于对所述候选服务列表中候选服务的选择操作,将选中的所述候选服务确定为所述目标服务;或,
基于服务选择策略,从所述候选服务列表的所述候选服务中确定所述目标服务。
可选的,所述服务调用模块1603,用于:
通过目标服务网关调用所述目标服务,所述目标服务网关为当前设备的服务网关,和/或,当前设备以外的外部设备的服务网关,所述外部设备中设置有所述目标微应用脚本。
可选的,所述服务调用模块1603,包括:
第一调用单元,用于在所述目标服务网关为当前设备的服务网关的情况下,通过所述目标服务网关获取服务调用请求;通过所述目标服务网关确定所述目标服务对应的目标服务代理;基于所述服务调用请求,通过所述目标服务代理调用所述目标服务;
第二调用单元,用于在所述目标服务网关为外部设备的服务网关的情况下,向所述外部设备发送服务调用请求,所述外部设备用于通过所述目标服务网关确定所述目标服务对应的目标服务代理,并基于所述服务调用请求,通过所述目标服务代理调用所述目标服务;
其中,不同的服务代理对应不同的编程开发语言,或,不同的服务代理对应不同的部署形态,或,不同的服务代理对应不同的运行环境。
可选的,所述第一调用单元或第二调用单元,用于:
通过所述目标服务代理对所述服务调用请求中的原始输入参数进行转换,得到目标输入参数,其中,所述原始输入参数采用统一参数格式,所述目标输入参数符合所述目标服务的参数格式;
基于所述目标输入参数,通过所述目标服务代理调用所述目标服务,得到所述目标服务的原始输出参数;
通过所述目标服务代理对所述原始输出参数进行转换,得到目标输出参数,所述目标输出参数采用所述统一参数格式。
可选的,所述装置还包括:
第一服务启动模块,用于在所述目标服务为静态服务的情况下,通过静态服务管理器获取所述目标服务的服务状态;在所述服务状态为未启动状态的情况下,启动所述目标服务。
可选的,所述装置还包括:
第二服务启动模块,用于在所述目标服务为动态服务的情况下,通过动态服务管理器获取所述目标服务对应宿主服务的服务状态;在所述服务状态为未启动状态的情况下,启动所述宿主服务;通过所述宿主服务查询所述目标服务的部署情况;在未部署所述目标服务的情况下,从云端服务库下载所述目标服务,并通过所述宿主服务加载所述目标服务。
可选的,所述服务调用模块1603,还用于在所述目标服务为同步调用服务的情况下,获取所述目标服务的服务返回值;基于所述服务返回值调用下一服务;
所述触发模块1602,还用于在所述目标服务为异步调用服务的情况下,获取所述目标服务的服务输出事件;通过所述服务输出事件触发所述目标微应用脚本中的触发器。
可选的,所述装置还包括:
第一下载模块,用于响应于对所述目标微应用的订阅操作,下载所述目标微应用的所述目标微应用脚本;或,
第二下载模块,用于响应于订阅推送消息,基于所述订阅推送消息中的应用标识,下载所述目标微应用的所述目标微应用脚本,所述订阅推送消息由服务器在检测到用户帐号订阅的微应用发生变更时,向所述用户帐号下的各个设备推送。
可选的,所述装置还包括:
初始化部署模块,用于基于所述目标微应用脚本中的初始化触发器,部署初始化服务,所述初始化服务为所述初始化触发器所调用的服务。
可选的,所述装置还包括:
删除模块,用于响应于对所述目标微应用的取消订阅操作,删除所述目标微应用的所述目标微应用脚本;
指令发送模块,用于向所述服务器发送订阅取消指令,所述服务器用于基于所述订阅取消指令,向所述用户帐号下的各个设备推送订阅取消消息,以便各个终端删除所述目标微应用脚本。
可选的,所述脚本获取模块1601,包括:
候选应用确定单元,用于响应于初始化触发事件,确定所述初始化触发事件对应的至少一个候选微应用,所述初始化触发事件用于触发至少一个所述候选微应用的初始化触发器;
目标应用确定单元,用于从至少一个所述候选微应用中确定所述目标微应用;
获取单元,用于获取所述目标微应用的所述目标微应用脚本。
可选的,所述目标应用确定单元,用于:
基于至少一个所述候选微应用显示微应用选择列表;响应于对所述微应用选择列表的选择操作,将选中的所述候选微应用确定为所述目标微应用;或,
基于应用选择策略,从至少一个所述候选微应用中确定所述目标微应用。
综上所述,本申请实施例中,在运行由若干服务构成的微应用时,通过获取微应用的微应用脚本,并基于触发事件触发微应用脚本中对应的触发器,进而通过执行该触发器对应的控制逻辑,调用相应的服务以实现微应用的微应用功能。由于微应用的运行基于低代码量的微应用脚本,因此相较于传统应用所需占用的存储空间更小;并且,将服务组装成微应用,并利用微应用脚本管理服务之间的调用关系,实现了微应用的组件化,提高了微应用间服务的复用性,有助于降低微应用的开发难度。
请参考图17,其示出了本申请一个示例性实施例提供的计算机设备的结构方框图。该计算机设备1700可以实现成为上述各个实施例中的源端设备或目的端设备。计算机设备1700可以包括一个或多个如下部件:处理器1710和存储器1720。
处理器1710可以包括一个或者多个处理核心。处理器1710利用各种接口和线路连接整个计算机设备1700内的各个部分,通过运行或执行存储在存储器1720内的指令、程序、代码集或指令集,以及调用存储在存储器1720内的数据,执行计算机设备1700的各种功能和处理数据。可选地,处理器1710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1710可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责触摸显示屏所需要显示的内容的渲染和绘制;NPU用于实现人工智能(Artificial Intelligence,AI)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1710中,单独通过一块芯片进行实现。
存储器1720可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选地,该存储器1720包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1720可用于存储指令、程序、代码、代码集或指令集。存储器1720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据计算机设备1700的使用所创建的数据(比如音频数据、电话本)等。
除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备1700的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备1700中还包括显示屏、摄像组件、麦克风、扬声器、射频电路、输入单元、传感器(比如加速度传感器、角速度传感器、光线传感器等等)、音频电路、WiFi模块、电源、蓝牙模块等部件,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如上各个实施例所述的微应用的运行方法。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的微应用的运行方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本申请实施例对此不作限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (17)
1.一种微应用的运行方法,其特征在于,所述方法包括:
响应于对目标微应用的订阅操作,下载所述目标微应用的目标微应用脚本;或,响应于订阅推送消息,基于所述订阅推送消息中的应用标识,下载目标微应用的目标微应用脚本,所述订阅推送消息由服务器在检测到用户帐号订阅的微应用发生变更时,向所述用户帐号下的各个设备推送;
获取所述目标微应用的所述目标微应用脚本,所述目标微应用是由服务构成的集合,所述目标微应用脚本由触发器构成,且所述触发器用于在触发事件下通过执行控制逻辑进行服务调用;
响应于目标触发事件,触发所述目标微应用脚本中所述目标触发事件对应的目标触发器;
执行所述目标触发器对应的目标控制逻辑,并通过目标服务网关调用目标服务,以实现所述目标微应用的微应用功能,所述目标服务网关为当前设备的服务网关,和/或,当前设备以外的外部设备的服务网关,所述外部设备中设置有所述目标微应用脚本。
2.根据权利要求1所述的方法,其特征在于,所述通过目标服务网关调用目标服务之前,所述方法包括:
基于所述目标控制逻辑所调用服务的服务标识,确定候选服务列表,所述候选服务列表中包含至少一个与所述服务标识匹配的候选服务;
从所述候选服务列表的所述候选服务中确定所述目标服务。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标控制逻辑所调用服务的服务标识,确定候选服务列表,包括:
确定当前设备中与所述服务标识匹配的候选静态服务,其中,静态服务为设备中宿主应用所提供的服务;
从云端服务库中确定与所述服务标识匹配的候选动态服务,其中,动态服务为支持动态部署至设备的服务;
基于所述候选静态服务和所述候选动态服务生成所述候选服务列表。
4.根据权利要求2所述的方法,其特征在于,所述从所述候选服务列表的所述候选服务中确定所述目标服务,包括:
显示所述候选服务列表;响应于对所述候选服务列表中候选服务的选择操作,将选中的所述候选服务确定为所述目标服务;或,
基于服务选择策略,从所述候选服务列表的所述候选服务中确定所述目标服务。
5.根据权利要求1至4任一所述的方法,其特征在于,所述通过目标服务网关调用目标服务,包括:
在所述目标服务网关为当前设备的服务网关的情况下,通过所述目标服务网关获取服务调用请求;通过所述目标服务网关确定所述目标服务对应的目标服务代理;基于所述服务调用请求,通过所述目标服务代理调用所述目标服务;
在所述目标服务网关为外部设备的服务网关的情况下,向所述外部设备发送服务调用请求,所述外部设备用于通过所述目标服务网关确定所述目标服务对应的目标服务代理,并基于所述服务调用请求,通过所述目标服务代理调用所述目标服务;
其中,不同的服务代理对应不同的编程开发语言,或,不同的服务代理对应不同的部署形态,或,不同的服务代理对应不同的运行环境。
6.根据权利要求5所述的方法,其特征在于,所述基于所述服务调用请求,通过所述目标服务代理调用所述目标服务,包括:
通过所述目标服务代理对所述服务调用请求中的原始输入参数进行转换,得到目标输入参数,其中,所述原始输入参数采用统一参数格式,所述目标输入参数符合所述目标服务的参数格式;
基于所述目标输入参数,通过所述目标服务代理调用所述目标服务,得到所述目标服务的原始输出参数;
通过所述目标服务代理对所述原始输出参数进行转换,得到目标输出参数,所述目标输出参数采用所述统一参数格式。
7.根据权利要求5所述的方法,其特征在于,所述基于所述服务调用请求,通过所述目标服务代理调用所述目标服务之前,所述方法还包括:
在所述目标服务为静态服务的情况下,通过静态服务管理器获取所述目标服务的服务状态;
在所述服务状态为未启动状态的情况下,启动所述目标服务。
8.根据权利要求5所述的方法,其特征在于,所述基于所述服务调用请求,通过所述目标服务代理调用所述目标服务之前,所述方法还包括:
在所述目标服务为动态服务的情况下,通过动态服务管理器获取所述目标服务对应宿主服务的服务状态;
在所述服务状态为未启动状态的情况下,启动所述宿主服务;
通过所述宿主服务查询所述目标服务的部署情况;
在未部署所述目标服务的情况下,从云端服务库下载所述目标服务,并通过所述宿主服务加载所述目标服务。
9.根据权利要求1至4任一所述的方法,其特征在于,所述通过目标服务网关调用目标服务之后,所述方法还包括:
在所述目标服务为同步调用服务的情况下,获取所述目标服务的服务返回值;基于所述服务返回值调用下一服务;
在所述目标服务为异步调用服务的情况下,获取所述目标服务的服务输出事件;通过所述服务输出事件触发所述目标微应用脚本中的触发器。
10.根据权利要求1至4任一所述的方法,其特征在于,所述下载所述目标微应用的目标微应用脚本之后,所述方法还包括:
基于所述目标微应用脚本中的初始化触发器,部署初始化服务,所述初始化服务为所述初始化触发器所调用的服务。
11.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
响应于对所述目标微应用的取消订阅操作,删除所述目标微应用的所述目标微应用脚本;
向所述服务器发送订阅取消指令,所述服务器用于基于所述订阅取消指令,向所述用户帐号下的各个设备推送订阅取消消息,以便各个终端删除所述目标微应用脚本。
12.根据权利要求1至4任一所述的方法,其特征在于,所述获取所述目标微应用的所述目标微应用脚本,包括:
响应于初始化触发事件,确定所述初始化触发事件对应的至少一个候选微应用,所述初始化触发事件用于触发至少一个所述候选微应用的初始化触发器;
从至少一个所述候选微应用中确定所述目标微应用;
获取所述目标微应用的所述目标微应用脚本。
13.根据权利要求12所述的方法,其特征在于,所述从至少一个所述候选微应用中确定所述目标微应用,包括:
基于至少一个所述候选微应用显示微应用选择列表;响应于对所述微应用选择列表的选择操作,将选中的所述候选微应用确定为所述目标微应用;或,
基于应用选择策略,从至少一个所述候选微应用中确定所述目标微应用。
14.一种微应用的运行装置,其特征在于,所述装置包括:
第一下载模块,用于响应于对目标微应用的订阅操作,下载所述目标微应用的目标微应用脚本;或,第二下载模块,用于响应于订阅推送消息,基于所述订阅推送消息中的应用标识,下载目标微应用的目标微应用脚本,所述订阅推送消息由服务器在检测到用户帐号订阅的微应用发生变更时,向所述用户帐号下的各个设备推送;
脚本获取模块,用于获取所述目标微应用的所述目标微应用脚本,所述目标微应用是由服务构成的集合,所述目标微应用脚本由触发器构成,且所述触发器用于在触发事件下通过执行控制逻辑进行服务调用;
触发模块,用于响应于目标触发事件,触发所述目标微应用脚本中所述目标触发事件对应的目标触发器;
服务调用模块,用于执行所述目标触发器对应的目标控制逻辑,并通过目标服务网关调用目标服务,以实现所述目标微应用的微应用功能,所述目标服务网关为当前设备的服务网关,和/或,当前设备以外的外部设备的服务网关,所述外部设备中设置有所述目标微应用脚本。
15.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至13任一所述的微应用的运行方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至13任一所述的微应用的运行方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中;计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如权利要求1至13任一所述的微应用的运行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111434742.1A CN114125028B (zh) | 2021-11-29 | 2021-11-29 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
PCT/CN2022/127460 WO2023093429A1 (zh) | 2021-11-29 | 2022-10-25 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111434742.1A CN114125028B (zh) | 2021-11-29 | 2021-11-29 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114125028A CN114125028A (zh) | 2022-03-01 |
CN114125028B true CN114125028B (zh) | 2024-05-14 |
Family
ID=80371877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111434742.1A Active CN114125028B (zh) | 2021-11-29 | 2021-11-29 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114125028B (zh) |
WO (1) | WO2023093429A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114125028B (zh) * | 2021-11-29 | 2024-05-14 | Oppo广东移动通信有限公司 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
CN114595010A (zh) * | 2022-03-11 | 2022-06-07 | Oppo广东移动通信有限公司 | 服务调用系统、方法、设备及存储介质 |
CN115150507A (zh) * | 2022-05-07 | 2022-10-04 | Oppo广东移动通信有限公司 | 服务调度方法及系统、电子设备及计算机可读存储介质 |
CN115150378A (zh) * | 2022-05-07 | 2022-10-04 | Oppo广东移动通信有限公司 | 出行服务方法及装置、电子设备及计算机可读存储介质 |
CN114968406B (zh) * | 2022-05-27 | 2023-10-13 | 北京青云科技股份有限公司 | 一种插件管理方法、装置、电子设备及存储介质 |
CN115296949A (zh) * | 2022-06-28 | 2022-11-04 | 青岛海尔科技有限公司 | 智能家电设备远程控制方法、装置和系统 |
CN117056173B (zh) * | 2023-10-12 | 2024-01-30 | 麒麟软件有限公司 | 在Web操作系统上监控安卓应用生命周期的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908658A (zh) * | 2019-11-15 | 2020-03-24 | 国网电子商务有限公司 | 一种“微服务+微应用”系统、数据处理方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020120746A1 (en) * | 2001-02-23 | 2002-08-29 | Basavaraj Patil | Method and system for providing a service |
US20170187785A1 (en) * | 2015-12-23 | 2017-06-29 | Hewlett Packard Enterprise Development Lp | Microservice with decoupled user interface |
US10635433B2 (en) * | 2017-08-24 | 2020-04-28 | General Electric Company | Cross application behavior customization |
US10503726B2 (en) * | 2017-12-21 | 2019-12-10 | Adobe Inc. | Reducing frontend complexity for multiple microservices with consistent updates |
US11553053B2 (en) * | 2020-04-16 | 2023-01-10 | Citrix Systems, Inc. | Tracking application usage for microapp recommendation |
CN114125028B (zh) * | 2021-11-29 | 2024-05-14 | Oppo广东移动通信有限公司 | 微应用的运行方法、装置、设备、存储介质及程序产品 |
-
2021
- 2021-11-29 CN CN202111434742.1A patent/CN114125028B/zh active Active
-
2022
- 2022-10-25 WO PCT/CN2022/127460 patent/WO2023093429A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908658A (zh) * | 2019-11-15 | 2020-03-24 | 国网电子商务有限公司 | 一种“微服务+微应用”系统、数据处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
电力营销多渠道微服务架构设计;刘俊玲等;供用电;第36卷(第6期);第1-3章 * |
Also Published As
Publication number | Publication date |
---|---|
WO2023093429A1 (zh) | 2023-06-01 |
CN114125028A (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114125028B (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
EP3255909B1 (en) | Messaging application interacting with one or more extension applications | |
US9798555B2 (en) | Application implementation method and apparatus | |
EP3588916A1 (en) | A method and arrangement for managing persistent rich internet applications | |
CN103440574A (zh) | 游戏支付处理方法、客户端及系统 | |
CN106230977B (zh) | 一种客户端功能加载方法、系统、客户端和服务端 | |
CN102196037A (zh) | 访问装置的服务的方法和设备 | |
WO2023185166A1 (zh) | 服务调用方法、装置、设备及存储介质 | |
WO2007074464A2 (en) | Method and system for operating applications for remote terminal devices | |
WO2023093452A1 (zh) | 资源交互方法、装置、终端及存储介质 | |
US20130124693A1 (en) | System, method, and device for executing a composite service | |
CN110968331A (zh) | 应用程序运行的方法和装置 | |
WO2023098345A1 (zh) | 订阅系统、方法、电子设备、服务器、存储介质及产品 | |
US20050160155A1 (en) | Method and apparatus for dynamic rendering of services | |
CN114222003A (zh) | 服务调用方法、系统、装置、设备及存储介质 | |
WO2023124657A1 (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
CN112764746A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115002274B (zh) | 控制方法及装置、电子设备及计算机可读存储介质 | |
KR20110122996A (ko) | 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체 | |
KR100713148B1 (ko) | 멀티미디어 자원 공유 시스템 및 방법 | |
CN113709541A (zh) | 基于web的多终端设备互动方法、系统、终端设备 | |
Fjellheim | Over-the-air deployment of applications in multi-platform environments | |
CN116709549B (zh) | 资源共享方法、装置、电子设备及可读存储介质 | |
CN113050962A (zh) | 移动服务升级方法、装置和终端 | |
CN114168335A (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 |