应用程序运行方法及装置与流程
未命名
07-14
阅读:74
评论:0
1.本发明实施例涉及物联网应用开发技术领域,尤其涉及一种应用程序运行方法及装置。
背景技术:
2.随着社会的发展,物联网设备受到广泛的应用,同时物联网应用软件的开发和应用也越来越受重视。一般一个物联网应用通常由云端系统、物端设备和智能路由端三个部分组成,这就导致了物联网应用呈现出碎片化严重、开发难度高、开发周期长的现状。
3.现有技术中,存在物联网应用开发的类似技术,其通过对传感器设备构建运行时模型的方式来完成对传感器设备的统一管理,再根据应用场景构建定制模型,通过模型转换确保定制模型和传感器设备运行时模型之间的同步。通过该方法开发者只需构建传感器设备运行时模型和定制模型来满足个性化应用场景,定制模型上的操作通过模型转换自动映射到传感器设备运行时模型上,所有应用逻辑都可以通过在定制模型上执行操作程序来执行。
4.然而,上述技术不仅可伸缩性差,开发代码量大,而且仅适用于仅有设备端这一应用端的场景,不能适用于同时包含硬件端、云端等多应用端的物联网应用,影响物联网应用的开发效率。
技术实现要素:
5.鉴于此,为解决现有技术中,物联网应用开发技术不仅可伸缩性差,开发代码量大,而且仅适用于仅有设备端这一应用端的场景,不能适用于同时包含硬件端、云端等多应用端的物联网应用,影响物联网应用的开发效率的技术问题,本发明实施例提供一种应用程序运行方法及装置。
6.第一方面,本发明实施例提供一种应用程序运行方法,所述方法包括:
7.接收目标应用程序,所述目标应用程序为wasm二进制文件;
8.确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;
9.将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
10.作为一个可能的实现方式,所述确定n个运行终端,包括:
11.获取终端列表,以及所述终端列表中每个终端的运行状态;
12.根据所述终端列表中每个所述终端的所述运行状态,从所述终端列表中确定n个运行终端。
13.作为一个可能的实现方式,所述将所述目标应用程序分发至n个所述运行终端,包括:
14.将所述目标应用程序进行复制,得到n个目标应用程序,其中,n个所述目标应用程
序与n个所述运行终端一一对应;
15.获取每个所述运行终端的设备类型;
16.针对每一所述运行终端,根据所述运行终端的所述设备类型,将对应的所述目标应用程序与所述运行终端进行适配;
17.将进行适配后的所述目标应用程序发送至所述运行终端。
18.作为一个可能的实现方式,每个所述运行终端通过所述wasm引擎运行所述目标应用程序,包括:
19.每个所述运行终端部署的所述wasm引擎通过以下步骤运行所述目标应用程序:
20.解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中;
21.确定所述运行终端的内存中存储的所述指令和所述函数是否满足预设的内存数据结构规则;
22.在所述指令和所述函数满足所述内存数据结构规则的情况下,按照预设的读取规则从所述内存中依次读取每个指令,并确定每个指令对应的目标函数;
23.按照所述指令执行所述目标函数。
24.作为一个可能的实现方式,所述解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中,包括:
25.按照预设的解码规则将所述目标应用程序对应的wasm二进制文件的格式解码为所述运行终端对应的内存格式;
26.将解码为所述内存格式的所述目标应用程序记录在所述运行终端的内存中。
27.作为一个可能的实现方式,在将所述目标应用程序分发至n个所述运行终端之后,还包括:
28.获取每个运行终端的运行结果,得到n个运行结果;
29.基于n个运行结果,确定所述目标应用程序对应的目标运行结果。
30.作为一个可能的实现方式,所述基于n个运行结果,确定所述目标应用程序对应的目标运行结果,包括:
31.从n个所述运行结果中,确定异常运行结果;
32.对n个所述运行结果中除所述异常运行结果之外的运行结果进行设定运算,得到所述目标应用程序对应的目标运行结果。
33.作为一个可能的实现方式,所述从n个所述运行结果中,确定异常运行结果,包括:
34.分别确定n个所述运行结果对应的下四分位数、中位数、上四分位数、上边缘,以及下边缘;
35.按照所述下四分位数、所述中位数、所述上四分位数、所述上边缘,以及所述下边缘构造n个所述运行结果对应的箱线图;
36.将位于所述箱线图中所述上边缘和所述下边缘之外的运行结果确定为异常运行结果。
37.作为一个可能的实现方式,所述对n个所述运行结果中除所述异常运行结果之外的运行结果进行设定运算,得到所述目标应用程序对应的目标运行结果,包括:
38.计算n个所述运行结果中除所述异常运行结果之外的运行结果的平均值;
39.将所述平均值确定为所述目标应用程序对应的目标运行结果。
40.第二方面,本发明实施例提供一种应用程序运行装置,所述装置包括:
41.接收模块,用于接收目标应用程序,所述目标应用程序为wasm二进制文件;
42.确定模块,用于确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;
43.分发模块,用于将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
44.作为一个可能的实现方式,所述确定模块,包括:
45.获取子模块,用于获取终端列表,以及所述终端列表中每个终端的运行状态;
46.确定子模块,用于根据所述终端列表中每个所述终端的所述运行状态,从所述终端列表中确定n个运行终端。
47.作为一个可能的实现方式,所述分发模块,具体用于:
48.将所述目标应用程序进行复制,得到n个目标应用程序,其中,n个所述目标应用程序与n个所述运行终端一一对应;
49.获取每个所述运行终端的设备类型;
50.针对每一所述运行终端,根据所述运行终端的所述设备类型,将对应的所述目标应用程序与所述运行终端进行适配;
51.将进行适配后的所述目标应用程序发送至所述运行终端。
52.作为一个可能的实现方式,所述分发模块,包括:
53.解析子模块,用于每个所述运行终端部署的所述wasm引擎通过以下步骤运行所述目标应用程序:解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中;
54.确定子模块,用于确定所述运行终端的内存中存储的所述指令和所述函数是否满足预设的内存数据结构规则;
55.读取子模块,用于在所述指令和所述函数满足所述内存数据结构规则的情况下,按照预设的读取规则从所述内存中依次读取每个指令,并确定每个指令对应的目标函数;
56.执行子模块,用于按照所述指令执行所述目标函数。
57.作为一个可能的实现方式,所述解析子模块,具体用于:
58.按照预设的解码规则将所述目标应用程序对应的wasm二进制文件的格式解码为所述运行终端对应的内存格式;
59.将解码为所述内存格式的所述目标应用程序记录在所述运行终端的内存中。
60.作为一个可能的实现方式,所述装置还包括:
61.获取模块,用于在将所述目标应用程序分发至n个所述运行终端之后,获取每个运行终端的运行结果,得到n个运行结果;
62.运行结果确定模块,用于基于n个运行结果,确定所述目标应用程序对应的目标运行结果。
63.作为一个可能的实现方式,所述运行结果确定模块,包括:
64.第一确定子模块,用于从n个所述运行结果中,确定异常运行结果;
65.运算子模块,用于对n个所述运行结果中除所述异常运行结果之外的运行结果进
行设定运算,得到所述目标应用程序对应的目标运行结果。
66.作为一个可能的实现方式,所述第一确定子模块,具体用于:
67.分别确定n个所述运行结果对应的下四分位数、中位数、上四分位数、上边缘,以及下边缘;
68.按照所述下四分位数、所述中位数、所述上四分位数、所述上边缘,以及所述下边缘构造n个所述运行结果对应的箱线图;
69.将位于所述箱线图中所述上边缘和所述下边缘之外的运行结果确定为异常运行结果。
70.作为一个可能的实现方式,所述运算子模块,具体用于:
71.计算n个所述运行结果中除所述异常运行结果之外的运行结果的平均值;
72.将所述平均值确定为所述目标应用程序对应的目标运行结果。
73.第三方面,本发明实施例提供一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的一种应用程序运行程序,以实现第一方面中任一项所述的应用程序运行方法。
74.第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任一项所述的应用程序运行方法。
75.本发明实施例提供的技术方案,通过接收目标应用程序,上述目标应用程序为wasm二进制文件,确定n个运行终端,其中,每个运行终端部署有预设的wasm引擎,上述n为正整数,将目标应用程序分发至n个运行终端,以由每个运行终端通过wasm引擎运行该目标应用程序。这一技术方案,通过在多个运行终端中部署wasm引擎,该wasm引擎不仅具有轻量级的特性,而且可运行以webassembly开发的目标应用程序,实现了以较少的代码量开发同时包含硬件端、云端等多应用端的物联网应用,从而实现了提高物联网应用的可伸缩性,减少代码量,提高物联网应用的开发效率。
附图说明
76.图1为本发明实施例提供的一种应用场景示意图;
77.图2为本发明实施例提供的一种应用程序运行方法的实施例流程图;
78.图3为本发明实施例提供的一种目标应用程序被执行的流程示意图;
79.图4为本发明实施例提供的另一种应用程序运行方法的实施例流程图;
80.图5为本发明实施例提供的一种n个运行结果对应的箱线图示意图;
81.图6为本发明实施例提供的又一种应用程序运行方法的实施例流程图;
82.图7为本发明实施例提供的一种目标应用程序分发流程示意图;
83.图8为本发明实施例提供的一种应用程序运行装置的实施例框图;
84.图9为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
85.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
86.为便于理解本发明实施例提供的应用程序运行方法,以下先对本发明实施例涉及的应用场景进行举例说明:
87.参见图1,为本发明实施例提供的一种应用场景示意图。
88.图1所示应用场景包括:终端101、智能路由端102,以及多个运行终端:云端103和物端104。其中,终端101、智能路由端102、云端103,以及物端104之间通过网络通信连接。
89.终端101,可以是支持网络连接从而提供各种网络服务的硬件设备或软件。当终端101为硬件时,其可以是支持具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机等,图1中仅以台式计算机为例。当终端101为软件时,可以安装在上述所列举的电子设备中。在本发明实施例中,开发技术人员可通过终端101开发应用程序。
90.智能路由端102,可以是静态路由器,也可以是动态路由器,本发明实施例对此不做限制。
91.云端103,可以包括云端服务器,其可以采用一台服务器来实现,也可以采用多台服务器组成服务器集群的形式来实现,本发明实施例对此不做限制。
92.物端104,可为物理设备,其可包括但不限于:红外感应器、激光扫描器、二维码,以及条码等。
93.在一实施例中,上述云端103和物端104分别部署有wasm引擎,该wasm引擎基于webassembly开发。开发技术人员可通过终端101开发物联网应用程序,并将开发后的应用程序发送至上述智能路由端102,之后,智能路由端102可利用本发明实施例提供的应用程序运行方法将该应用程序分发至上述云端103和物端104,以使云端103和物端104通过自身安装的wasm引擎运行该应用程序。
94.在另一实施例中,上述云端103和物端104分别部署有wasm引擎,该wasm引擎基于webassembly开发。开发技术人员可通过终端101开发物联网应用程序,并利用本发明实施例提供的应用程序运行方法将该应用程序通过智能路由端102分发至上述云端103和物端104,以使云端103和物端104通过自身安装的wasm引擎运行该应用程序。
95.下面结合附图以具体实施例对本发明提供的应用程序运行方法做进一步的解释说明,实施例并不构成对本发明实施例的限定。
96.参见图2,为本发明实施例提供的一种应用程序运行方法的实施例流程图。作为一个实施例,图2所示流程可应用于物联网系统中的智能路由端或者终端,例如图1所示的智能路由端102或者终端101,图2所示流程以应用于智能路由端为例进行说明。如图2所示,该流程可包括以下步骤:
97.步骤201、接收目标应用程序,上述目标应用程序为wasm二进制文件。
98.上述目标应用程序指待运行的应用程序,其可为物联网应用程序,本发明实施例对此不做限制。
99.上述wasm二进制文件指基于webassembly开发的编译文件。其中,webassembly是一个虚拟指令集体系架构,其编译文件作为一个可移植的、紧凑的、快速加载的二进制格式,可以在各种平台上高效运行,是比较理想的物联网应用开发语言。基于此,开发人员可
基于webassembly开发物联网应用程序,也即上述目标应用程序。
100.本发明实施例中,开发人员可通过终端(例如图1所示的终端101)开发上述目标应用程序,并通过终端将该目标应用程序发送至智能路由端(例如图1所示的智能路由端102)。基于此,智能路由端可接收上述目标应用程序。
101.步骤202、确定n个运行终端,其中,每个运行终端部署有预设的wasm引擎,上述n为正整数。
102.上述运行终端指可以运行目标应用程序的终端,其可为物联网应用系统中的云端或者物端,本发明实施例对此不做限制。
103.上述n个运行终端可为设备类型相同的终端,例如均为物联网应用系统中的云端或物端,也可为设备类型不同的终端,例如可为物联网应用系统中的云端和多个物端,本发明实施例对此不做限制。
104.上述wasm引擎为预设的由开发人员设计的基于webassembly开发的引擎,其可运行基于webassembly开发的目标应用程序。
105.可选的,上述wasm引擎通过降低webassembly标准的兼容性和实现为运行时的方式,实现了轻量级的特性,可为目标应用程序提供运行环境,并且wasm引擎采用了纯c语言实现,提高可移植性,以提供对多种物联网操作系统中的多个运行终端的支持。
106.实际应用中,不同类型的运行终端对应用程序具有不同的开发条件,因此,现有技术中,针对不同的运行终端则需要开发不同的应用程序,这则降低了应用程序的开发效率。对此,本发明实施例中,可在每个运行终端部署上述wasm引擎,以使每个运行终端可以通过该wasm引擎运行目标终端。
107.在一实施例中,智能路由端在接收到目标应用程序后,可确定n个运行终端,其中n为正整数。
108.具体的,智能路由端可预先存储终端列表,该终端列表中记录了多个终端,以及每个终端的运行状态。其中,每个终端的运行状态可包括但不限于:在线空闲、在线忙、在线故障,以及非在线等。基于此,智能路由端可获取上述终端列表,以及该终端列表中每个终端的运行状态,并根据该终端列表中每个终端的运行状态,从终端列表中确定n个运行终端。
109.可选的,可将终端列表中,运行状态为在线且空闲的终端确定为运行终端,得到n个运行终端。
110.步骤203、将目标应用程序分发至n个运行终端,以由每个运行终端通过wasm引擎运行目标应用程序。
111.本发明实施例中,由于每个运行终端部署有wasm引擎,而wasm引擎可以为目标应用程序提供运行环境,因此,可将目标应用程序分发至上述n个运行终端,每个运行终端可通过上述wasm引擎运行上述目标应用程序,从而实现开发适用于同时包含多个运行终端(包括但不限于硬件端和云端等)的物联网应用程序。
112.在一实施例中,智能路由端在将目标应用程序分发至n个运行终端时,可将该目标应用程序进行复制,得到n个目标应用程序,其中,n个目标应用程序与n个运行终端可一一对应。
113.之后,可将上述n个目标应用程序分别发送至每个目标应用程序对应的运行终端。
114.具体的,由于不同的运行终端对应用程序的开发有不同的适配要求,因此,在将n
个目标应用程序分别发送至每个目标应用程序对应的运行终端时,可获取每个运行终端的设备类型,并针对每一运行终端,根据该运行终端的设备类型,将对应的目标应用程序与运行终端进行适配,例如对该运行终端不适配的功能或者代码进行必要的删减。之后,可将适配后的目标应用程序发送至运行终端。
115.在一实施例中,每个运行终端部署的wasm引擎可通过以下步骤运行目标应用程序:首先,wasm引擎可先解析目标应用程序包括的指令和函数,并将该指令和函数写入对应的运行终端的内存中。之后,可确定运行终端的内存中存储的指令和函数是否满足预设的内存数据结构规则,并在确定指令和函数满足上述内存数据结构规则的情况下,按照预设的读取规则从内存中依次读取每个指令,并确定每个指令对应的目标函数。最后,可按照上述指令执行该目标函数。上述读取规则可为按照内存中的位置索引信息依次读取每个指令。
116.作为一个可能的实现方式,运行终端的内存中可存储每个指令与函数的对应关系,基于此,可从该对应关系中确定每次读取的指令对应的目标函数。
117.作为另一个可能的实现方式,运行终端的内存中存储的每个指令包括对应的目标函数,基于此,可从每个指令中确定该指令对应的目标函数。
118.在一实施例中,在解析目标应用程序包括的指令和函数,并将指令和函数写入对应的运行终端的内存中时,可按照预设的解码规则将目标应用程序对应的wasm二进制文件的格式解码为运行终端对应的内存格式,并将解码为内存格式的目标应用程序记录在运行终端的内存中。
119.例如,上述目标应用程序被wasm引擎执行可包括三个阶段,参见图3,为本发明实施例提供的一种目标应用程序被执行的流程示意图。如图3所示,目标应用程序在被执行过程中可包括四种表现形式:二进制格式(.wasm格式),其为目标应用程序的主要编码格式,以.wasm后缀结尾;文本格式(.wat格式),其主要为了方便开发人员理解目标应用程序,或者编写小型的测试代码,以.wat后缀结尾,相当于汇编语言程序;内存格式(in-memory),将目标应用程序加载到运行终端的内存中的表现,该表现形式与wasm引擎的实现有关,不同的wasm引擎的实现存在不同的内存格式;模块实例(instance),若将内存格式理解为面向对象语言中的类,那么,模块实例相当于“对象”。
120.其中,各个格式之间的关联如下:二进制格式主要由高级编程语言编译器生成,也可通过文本格式编译生成;文本格式可以由开发者直接编写,也可由二进制反编译生成;wasm引擎中的解释器通常会将二进制模块解码为内部形式,即内存格式(比如c/c++结构体),然后再进行后续处理。
121.在一实施例中,目标应用程序被wasm引擎执行主要分为三个阶段:解码阶段:将二进制解码为内存格式;验证阶段:对模块进行静态分析,确保模块的结构满足规范要求,且函数的字节码没有不良行为;执行阶段:进一步分为实例化和函数调用两个阶段。
122.具体的,解码阶段:目标应用程序对应的wasm二进制格式也是以魔数和版本号开头,之后就是模块的主体内容,这些内容根据不同用途被分别放在不同的段(section)中。一共定义了12种段,每种段分配了id(从0到11)。除了自定义段之外,其他所有段都最多只能出现一次,且须按照id递增的顺序出现。id从0到11依次有如下12个段:自定义段、类型段、导入段、函数段、表段、内存段、全局段、导出段、起始段、元素段、代码段、数据段。wasm引
擎的解释器根据段规则,将二进制文件的各个段信息记录到内存中的数据结构module中,之后就可用通过对module的函数调用和索引来操作wasm文件。
123.执行阶段:wasm引擎是基于栈式虚拟机的二进制指令格式,所以在执行阶段需要一个符合wasm规范的模拟cpu来执行module中的指令。执行指令包括三个阶段:取指:从module中对应的位置取出将要执行的指令;译码:根据指令类型,进入不同的处理分支;执行:处理分支执行具体的在宿主机上的函数。
124.本发明实施例提供的技术方案,通过接收目标应用程序,上述目标应用程序为wasm二进制文件,确定n个运行终端,其中,每个运行终端部署有预设的wasm引擎,上述n为正整数,将目标应用程序分发至n个运行终端,以由每个运行终端通过wasm引擎运行该目标应用程序。这一技术方案,通过在多个运行终端中部署wasm引擎,该wasm引擎不仅具有轻量级的特性,而且可运行以webassembly开发的目标应用程序,实现了开发同时包含硬件端、云端等多应用端的物联网应用,从而实现了提高物联网应用的可伸缩性,减少代码量,提高物联网应用的开发效率。
125.参见图4,为本发明实施例提供的另一种应用程序运行方法的实施例流程图。图4所示流程在图1所示流程的基础上,详细描述了具体是如何确定目标应用程序的运行结果的。如图4所示,该流程可包括:
126.步骤401、接收目标应用程序,上述目标应用程序为wasm二进制文件。
127.步骤402、确定n个运行终端,其中,每个运行终端部署有预设的wasm引擎,上述n为正整数。
128.步骤403、将目标应用程序分发至n个上述运行终端,以由每个运行终端通过wasm引擎运行上述目标应用程序。
129.步骤401至步骤403的详细描述可参见步骤201至步骤203中的描述,这里不再赘述。
130.步骤404、获取每个运行终端的运行结果,得到n个运行结果。
131.步骤405、基于n个运行结果,确定目标应用程序对应的目标运行结果。
132.以下对步骤404和步骤405进行统一说明:
133.上述运行结果可为每个运行终端运行上述目标应用程序的运行结果。由上述描述可知,智能路由端在接收到目标应用程序时,可将上述目标应用程序分发至n个运行终端运行,并获取每个运行终端的运行结果。
134.实际应用中,由于物端设备工作场景复杂恶劣,因此物端设备容易出现故障,同时物端设备往往数量较多,一次计算中设备出现故障的概率大大提升,如果直接把物端设备的计算结果作为最终结果,会导致计算结果不准确。
135.对此,本发明实施例中可将目标应用程序分发至n个运行终端运行,得到n个运行结果,从而基于n个运行结果,确定目标应用程序对应的目标运行结果。
136.具体的,可先从n个运行结果中,确定异常运行结果,并对n个运行结果中,除上述异常运行结果之外的运行结果进行设定运算,得到目标应用程序对应的目标运行结果。其中,上述异常运行结果可用于表征目标应用程序在运行终端运行异常的结果,其可能由于运行终端的运行故障导致的异常运行结果,也可能由于设备传感器、计算精度以及其他因素导致的异常运行结果,本发明实施例对此不做限制。
137.作为一个可能的实现方式,可按照以下步骤从n个运行结果中,确定异常运行结果:首先,可分别确定n个运行结果对应的下四分位数、中位数、上四分位数、上边缘,以及下边缘。之后,可按照上述下四分位数、上述中位数、上述上四分位数、上述上边缘,以及上述下边缘构造如图5所示的n个运行结果对应的箱线图,参见图5,为本发明实施例提供的一种n个运行结果对应的箱线图示意图。最后,如图5所示,可将位于箱线图中上边缘和下边缘之外的运行结果(也即图中的异常值)确定为异常运行结果。
138.进一步地,不同的异常运行结果可对应不同的运行终端故障,因此,智能路由端可预先存储异常运行结果与运行终端故障的对应关系。基于此,在确定异常运行结果后,可根据异常运行结果,从预设的异常运行结果与运行终端故障的对应关系中,确定上述异常运行结果对应的运行终端故障。之后可生成上述异常运行结果对应的运行日志,该运行日志可包括上述运行终端故障,以用于告知开发者目标应用程序运行过程中出现的bug或设备端可能存在的问题,来帮助开发者更好地进行目标应用程序的开发和升级。
139.在一实施例中,在对n个运行结果中除异常运行结果之外的运行结果进行设定运行,得到目标应用程序对应的目标运行结果时,可计算n个运行结果中除异常运行结果之外的运行结果的平均值,并将平均值确定为目标应用程序对应的目标运行结果。
140.本发明实施例提供的技术方案,通过接收目标应用程序,上述目标应用程序为wasm二进制文件,确定n个运行终端,其中,每个运行终端部署有预设的wasm引擎,上述n为正整数,将目标应用程序分发至n个上述运行终端,以由每个运行终端通过wasm引擎运行上述目标应用程序,获取每个运行终端的运行结果,得到n个运行结果,基于n个运行结果,确定目标应用程序对应的目标运行结果。这一技术方案,通过获取n个运行终端的运行结果,并基于n个运行结果确定目标应用程序的目标运行结果,实现了提高确定目标应用程序的运行结果的准确性。
141.参见图6,为本发明实施例提供的又一种应用程序运行方法的实施例流程图。如图6所示,该流程可包括以下内容:
142.第一步、编写wasm应用程序。
143.在一实施例中,使用c/c++/rust等编写应用程序,在编译时设置编译目标为wasm文件,对于有设备类型要求的,应在程序中标注,对于有分发要求的程序,应在程序中注明使用的设备的数量。
144.第二步、程序的分发。
145.本发明实施例中,主要涉及对开发的应用程序进行分发操作,然后该程序先挂起进入阻塞状态,等待结果反馈。具体可参见图7,为本发明实施例提供的一种目标应用程序分发流程示意图。如图7所示,该流程可包括以下内容:
146.首先,可进行程序的预处理,主要提取指定设备类型和多设备分发需求。然后,根据设备类型,为源程序增加必要的运行代码,生成可运行程序。之后检查设备状态,包括设备的使用情况(空闲/忙/故障)和在线状态,如果存在满足设备分发需求的条件,就将程序分发给对应设备,之后修改设备状态,从空闲到忙;最后控制程序挂起,等待反馈结果。
147.第三步、收集程序反馈结果。
148.本发明实施例中,物端设备在执行完成后,将计算结果反馈到智能路由端,收到结果时,控制程序被唤醒,然后修改对应设备使用状态,如果未收到所有结果,则继续挂起,反
之则执行结果的综合。
149.第四步、对计算结果进行综合。
150.本发明实施例中,对于收集到的计算结果,首先使用箱线图找出异常点,直接删除,然后求取均值,将均值作为最终计算结果。
151.第五步、生成执行日志,修改设备状态。
152.本发明实施例中,通过完成以上所有步骤,开发人员所开发的面向多设备的物联网应用就能成功执行,并完成该应用在所有应用端的任务。当应用在执行过程中出现任何异常或者错误的情况下,比如出现某设备多次报告异常点,除了完成应用的执行之外,还同时生成一份执行日志,用于告知开发者应用运行过程中程序出现的bug或设备端可能存在的回题,来帮助开发者更好地进行应用的开发和升级。
153.本发明实施例提供的技术方案,通过首先编写wasm应用程序,之后进行程序的分发,并收集程序反馈结果,对计算结果进行综合,生成执行日志,修改设备状态。这一技术方案,通过编写wasm应用程序,并对应用程序分发至多个运行终端,收集多个运行终端的运行结果,并生成执行日志,来帮助开发者更好地进行应用程序的开发和升级,实现了开发同时包含硬件端、云端等多应用端的物联网应用,从而实现了提高物联网应用的可伸缩性,减少代码量,提高物联网应用的开发效率。
154.参见图8,为本发明实施例提供的一种应用程序运行装置的实施例框图。如图8所示,该装置可包括:
155.接收模块81,用于接收目标应用程序,所述目标应用程序为wasm二进制文件;
156.确定模块82,用于确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;
157.分发模块83,用于将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
158.作为一个可能的实现方式,所述确定模块82,包括(图中未示出):
159.获取子模块,用于获取终端列表,以及所述终端列表中每个终端的运行状态;
160.确定子模块,用于根据所述终端列表中每个所述终端的所述运行状态,从所述终端列表中确定n个运行终端。
161.作为一个可能的实现方式,所述分发模块83,具体用于:
162.将所述目标应用程序进行复制,得到n个目标应用程序,其中,n个所述目标应用程序与n个所述运行终端一一对应;
163.获取每个所述运行终端的设备类型;
164.针对每一所述运行终端,根据所述运行终端的所述设备类型,将对应的所述目标应用程序与所述运行终端进行适配;
165.将进行适配后的所述目标应用程序发送至所述运行终端。
166.作为一个可能的实现方式,所述分发模块83,包括(图中未示出):
167.解析子模块,用于每个所述运行终端部署的所述wasm引擎通过以下步骤运行所述目标应用程序:解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中;
168.确定子模块,用于确定所述运行终端的内存中存储的所述指令和所述函数是否满
足预设的内存数据结构规则;
169.读取子模块,用于在所述指令和所述函数满足所述内存数据结构规则的情况下,按照预设的读取规则从所述内存中依次读取每个指令,并确定每个指令对应的目标函数;
170.执行子模块,用于按照所述指令执行所述目标函数。
171.作为一个可能的实现方式,所述解析子模块,具体用于:
172.按照预设的解码规则将所述目标应用程序对应的wasm二进制文件的格式解码为所述运行终端对应的内存格式;
173.将解码为所述内存格式的所述目标应用程序记录在所述运行终端的内存中。
174.作为一个可能的实现方式,所述装置还包括(图中未示出):
175.获取模块,用于在将所述目标应用程序分发至n个所述运行终端之后,获取每个运行终端的运行结果,得到n个运行结果;
176.运行结果确定模块,用于基于n个运行结果,确定所述目标应用程序对应的目标运行结果。
177.作为一个可能的实现方式,所述运行结果确定模块,包括:
178.第一确定子模块,用于从n个所述运行结果中,确定异常运行结果;
179.运算子模块,用于对n个所述运行结果中除所述异常运行结果之外的运行结果进行设定运算,得到所述目标应用程序对应的目标运行结果。
180.作为一个可能的实现方式,所述第一确定子模块,具体用于:
181.分别确定n个所述运行结果对应的下四分位数、中位数、上四分位数、上边缘,以及下边缘;
182.按照所述下四分位数、所述中位数、所述上四分位数、所述上边缘,以及所述下边缘构造n个所述运行结果对应的箱线图;
183.将位于所述箱线图中所述上边缘和所述下边缘之外的运行结果确定为异常运行结果。
184.作为一个可能的实现方式,所述运算子模块,具体用于:
185.计算n个所述运行结果中除所述异常运行结果之外的运行结果的平均值;
186.将所述平均值确定为所述目标应用程序对应的目标运行结果。
187.作为一个可能的实现方式,所述装置还包括(图中未示出):
188.故障确定模块,用于在所述确定异常运行结果之后,根据所述异常运行结果,从预设的异常运行结果与运行终端故障的对应关系中,确定所述异常运行结果对应的运行终端故障;
189.生成模块,用于生成所述异常运行结果对应的运行日志,所述运行日志包括所述运行终端故障。
190.图9为本发明实施例提供的一种电子设备的结构示意图,图9所示的电子设备900包括:至少一个处理器901、存储器902、至少一个网络接口904和用户接口903。电子设备900中的各个组件通过总线系统905耦合在一起。可理解,总线系统905用于实现这些组件之间的连接通信。总线系统905除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统905。
191.其中,用户接口903可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球
(trackball)、触感板或者触摸屏等)。
192.可以理解,本发明实施例中的存储器902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double datarate sdram,ddrsdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,drram)。本文描述的存储器902旨在包括但不限于这些和任意其它适合类型的存储器。
193.在一些实施方式中,存储器902存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统9021和应用程序9022。
194.其中,操作系统9021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序9022,包含各种应用程序,例如媒体播放器(media player)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序9022中。
195.在本发明实施例中,通过调用存储器902存储的程序或指令,具体的,可以是应用程序9022中存储的程序或指令,处理器901用于执行各方法实施例所提供的方法步骤,例如包括:
196.接收目标应用程序,所述目标应用程序为wasm二进制文件;
197.确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;
198.将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
199.上述本发明实施例揭示的方法可以应用于处理器901中,或者由处理器901实现。处理器901可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器901可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器902,处理器901读取存储器902中的信息,结合其硬件完成上述方法的步骤。
200.可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(application specific integrated circuits,asic)、数字信号处理器(digital signal processing,dsp)、数字信号处理设备(dsp device,dspd)、可编程逻辑设备(programmable logic device,pld)、现场可编程门阵列(field-programmable gate array,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本技术所述功能的其它电子单元或其组合中。
201.对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
202.本实施例提供的电子设备可以是如图9中所示的电子设备,可执行如图2、图4和图6中应用程序运行方法的所有步骤,进而实现图2、图4和图6中应用程序运行方法的技术效果,具体请参照图2、图4和图6相关描述,为简洁描述,在此不作赘述。
203.本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
204.当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的应用程序运行方法。
205.所述处理器用于执行存储器中存储的应用程序运行程序,以实现以下在电子设备侧执行的应用程序运行方法的步骤:
206.接收目标应用程序,所述目标应用程序为wasm二进制文件;
207.确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;
208.将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
209.专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
210.结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
211.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种应用程序运行方法,其特征在于,所述方法包括:接收目标应用程序,所述目标应用程序为wasm二进制文件;确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。2.根据权利要求1所述的方法,其特征在于,所述确定n个运行终端,包括:获取终端列表,以及所述终端列表中每个终端的运行状态;根据所述终端列表中每个所述终端的所述运行状态,从所述终端列表中确定n个运行终端。3.根据权利要求1所述的方法,其特征在于,所述将所述目标应用程序分发至n个所述运行终端,包括:将所述目标应用程序进行复制,得到n个目标应用程序,其中,n个所述目标应用程序与n个所述运行终端一一对应;获取每个所述运行终端的设备类型;针对每一所述运行终端,根据所述运行终端的所述设备类型,将对应的所述目标应用程序与所述运行终端进行适配;将进行适配后的所述目标应用程序发送至所述运行终端。4.根据权利要求1所述的方法,其特征在于,每个所述运行终端通过所述wasm引擎运行所述目标应用程序,包括:每个所述运行终端部署的所述wasm引擎通过以下步骤运行所述目标应用程序:解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中;确定所述运行终端的内存中存储的所述指令和所述函数是否满足预设的内存数据结构规则;在所述指令和所述函数满足所述内存数据结构规则的情况下,按照预设的读取规则从所述内存中依次读取每个指令,并确定每个指令对应的目标函数;按照所述指令执行所述目标函数。5.根据权利要求4所述的方法,其特征在于,所述解析所述目标应用程序包括的指令和函数,并将所述指令和函数写入对应的所述运行终端的内存中,包括:按照预设的解码规则将所述目标应用程序对应的wasm二进制文件的格式解码为所述运行终端对应的内存格式;将解码为所述内存格式的所述目标应用程序记录在所述运行终端的内存中。6.根据权利要求1所述的方法,其特征在于,在将所述目标应用程序分发至n个所述运行终端之后,还包括:获取每个运行终端的运行结果,得到n个运行结果;基于n个运行结果,确定所述目标应用程序对应的目标运行结果。7.根据权利要求6所述的方法,其特征在于,所述基于n个运行结果,确定所述目标应用程序对应的目标运行结果,包括:从n个所述运行结果中,确定异常运行结果;
对n个所述运行结果中除所述异常运行结果之外的运行结果进行设定运算,得到所述目标应用程序对应的目标运行结果。8.根据权利要求7所述的方法,其特征在于,所述从n个所述运行结果中,确定异常运行结果,包括:分别确定n个所述运行结果对应的下四分位数、中位数、上四分位数、上边缘,以及下边缘;按照所述下四分位数、所述中位数、所述上四分位数、所述上边缘,以及所述下边缘构造n个所述运行结果对应的箱线图;将位于所述箱线图中所述上边缘和所述下边缘之外的运行结果确定为异常运行结果。9.根据权利要求7所述的方法,其特征在于,所述对n个所述运行结果中除所述异常运行结果之外的运行结果进行设定运算,得到所述目标应用程序对应的目标运行结果,包括:计算n个所述运行结果中除所述异常运行结果之外的运行结果的平均值;将所述平均值确定为所述目标应用程序对应的目标运行结果。10.一种应用程序运行装置,其特征在于,所述装置包括:接收模块,用于接收目标应用程序,所述目标应用程序为wasm二进制文件;确定模块,用于确定n个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述n为正整数;分发模块,用于将所述目标应用程序分发至n个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。
技术总结
本发明实施例涉及一种应用程序运行方法及装置,所述方法包括:接收目标应用程序,所述目标应用程序为wasm二进制文件,确定N个运行终端,其中,每个所述运行终端部署有预设的wasm引擎,所述N为正整数,将所述目标应用程序分发至N个所述运行终端,以由每个所述运行终端通过所述wasm引擎运行所述目标应用程序。由此,能够实现以较少的代码量开发同时包含硬件端、云端等多应用端的物联网应用,从而实现了提高物联网应用的可伸缩性,减少代码量,提高物联网应用的开发效率。物联网应用的开发效率。物联网应用的开发效率。
技术研发人员:马霖 李峰
受保护的技术使用者:中科海微(北京)科技有限公司
技术研发日:2023.03.21
技术公布日:2023/7/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
