CN114168269A - WebAssembly的数据执行方法、装置、设备及介质 - Google Patents
WebAssembly的数据执行方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN114168269A CN114168269A CN202111538332.1A CN202111538332A CN114168269A CN 114168269 A CN114168269 A CN 114168269A CN 202111538332 A CN202111538332 A CN 202111538332A CN 114168269 A CN114168269 A CN 114168269A
- Authority
- CN
- China
- Prior art keywords
- wasm
- data
- instance
- execution
- shared memory
- 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
Images
Classifications
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种WebAssembly的数据执行方法、装置、设备及介质,可用于金融领域的非web客户端的数据的处理与执行,也可用于除金融领域之外的任意领域非web客户端的数据的处理与执行。该WebAssembly的数据执行方法方法包括:通过WASM解析执行层集成多种解析执行工具;通过申请共享内存将非web客户端传递的数据传入WASM解析执行层;通过数据选择对应的解析执行工具生成的对应的WASM实例;调用WASM实例处理数据得到出参结果;以及通过申请共享内存将出参结果传出并返回非web客户端并释放共享内存。本公开还提供了一种WebAssembly的数据执行装置、设备、存储介质和程序产品。
Description
技术领域
本公开涉及WebAssembly技术领域,具体地涉及一种WebAssembly的数据执行方法、装置、设备及介质,可用于金融领域的非web客户端的数据的处理与执行,也可用于除金融领域之外的任意领域非web客户端的数据的处理与执行。
背景技术
WebAssembly(以下简称WASM)是采用“基于栈的虚拟机”的机制,即一个操作符所需要的所有值,在操作进行之前都已经存放在堆栈中。所有的操作符,比如加法,都知道自己需要多少个值。假如需要两个值,它从堆栈顶部取两个值就可以了。那么加指令就可以变的更短(单字节),因为指令不需要指定源寄存器和目的寄存器。这也使得“.wasm”文件变得更小,进而使得加载“.wasm”文件更快。
现有的技术方案中,由于WASM对数据类型支持有限,且WASM对Web端的支持较好,对于非Web端的场景则缺乏有效的实现,这也导致WebAssembly技术在非Web端环境应用较少。
发明内容
鉴于上述问题,本公开提供了一种扩展WebAssembly技术在非Web端环境应用的WebAssembly的数据执行方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种WebAssembly的数据执行方法,包括:通过WASM解析执行层集成多种解析执行工具;通过申请共享内存将非web客户端传递的数据传入WASM解析执行层;通过数据选择对应的解析执行工具生成的对应的WASM实例;调用WASM实例处理数据得到出参结果;以及通过申请共享内存将出参结果传出并返回非web客户端并释放共享内存。
根据本公开的实施例,数据执行方法还包括:根据WASM实例名称、WASM实例内容及WASM编译预言构建WASM实例管理层;通过WASM实例管理层对WASM实例进行加载、调用及删除。
根据本公开的实施例,通过WASM解析执行层集成多种解析执行工具包括:编写WASM解析执行层的预设接口,其中,预设接口包括创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口;将满足创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口条件的至少一种解析执行工具接入WASM解析执行层,得到多种解析执行工具。
根据本公开的实施例,通过申请共享内存将非web客户端传递的数据传入WASM解析执行层包括:接收非web客户端传递的数据并解析为字节流数据;申请共享内存中的第一内存块并将字节流数据写入第一内存块;将第一内存块的内存索引与字节流数据的长度传入WASM解析执行层。
根据本公开的实施例,通过数据选择对应的解析执行工具生成的对应的WASM实例包括:通过多种解析执行工具生成多种WASM实例并多种WASM实例包含的WASM实例名称、WASM实例内容及WASM编译预言接入WASM实例管理层;通过数据获得非web客户端的语言、调用方法;根据语言匹配WASM实例管理层中多种WASM实例的WASM编译语言,根据调用方法匹配WASM实例管理层中多种WASM实例的WASM实例名称,得到匹配的WASM实例;加载WASM实例。
根据本公开的实施例,通过申请共享内存将出参结果传出并返回非web客户端并释放共享内存包括:调用WASM实例将出参结果添加结束标识并转换成出参字节流数据;申请共享内存中的第二内存块并将出参字节流数据写入第二内存块;将第二内存块的内存索引与出参字节流数据的长度传出至数据处理层;解析出参字节流数据并向非web客户端发送出参结果;根据结束标识释放第一内存块及第二内存块。
根据本公开的实施例,至少一种解析执行工具包含wasmer、wasmer-go、wasmer-python、wasmer-java及wasmtime中的至少一种。
本公开的第二方面提供了一种WebAssembly的数据执行装置,包括:集成模块,用于通过WASM解析执行层集成多种解析执行工具;传递模块,用于通过申请共享内存将非web客户端传递的数据传入WASM解析执行层;匹配模块,用于通过所述数据选择对应的解析执行工具生成的对应的WASM实例;处理模块,用于调用WASM实例处理数据得到出参结果;以及返回模块,用于通过申请共享内存将出参结果返回非web客户端并释放共享内存。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述WebAssembly的数据执行方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述WebAssembly的数据执行方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述WebAssembly的数据执行方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的WebAssembly的数据执行方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开实施例的WebAssembly的数据执行方法的流程图;
图3示意性示出了根据本公开实施例的数据传递方法的流程图;
图4示意性示出了根据本公开实施例的数据返回方法的流程图;
图5示意性示出了根据本公开实施例的多种解析执行工具集成方法的流程图;
图6示意性示出了根据本公开实施例的匹配WASM实例的方法的流程图;
图7示意性示出了根据本公开实施例的数据处理层的构架图;
图8示意性示出了根据本公开实施例的解析执行层的构架图;
图9示意性示出了根据本公开实施例的WebAssembly的数据执行装置的结构框图;以及
图10示意性示出了根据本公开实施例的适于实现WebAssembly的数据执行方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
需要说明的是,本公开提供的WebAssembly的数据执行方法和装置可用于金融领域的对非web客户端的支持,也可用于除金融领域之外的任意领域对非web客户端的支持,本公开提供的WebAssembly的数据执行的方法和装置的应用领域不做限定。
图1示意性示出了根据本公开实施例的WebAssembly的数据执行方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括终端设备上的客户端传入数据调用服务器上的WASM,服务器执行WebAssembly的数据执行方法对该数据进行处理。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种金融产品应用。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所调用的实时汇率的计算。后台管理服务器可以执行本公开的WebAssembly的数据执行方法对传入的计算参数和所调用的实施汇率的调用方法进行处理,并将处理的结果生成出参结果返回给终端设备101、102、103。
需要说明的是,本公开实施例所提供的WebAssembly的数据执行方法一般可以由服务器105执行。相应地,本公开实施例所提供的WebAssembly的数据执行装置一般可以设置于服务器105中。本公开实施例所提供的WebAssembly的数据执行方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的WebAssembly的数据执行装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
本公开的实施例提供了一种WebAssembly的数据执行方法,其中,WebAssembly(简称WASM)是采用“基于栈的虚拟机”的机制,即一个操作符所需要的所有值在操作进行之前都已经存放在堆栈中。举例来说,对于所有的操作符,比如加法,已知需要若干个值,若加法需要两个值,则它从堆栈顶部取两个值就可以进行操作。因此,加指令就可以变的更短,其不需要指定源寄存器和目的寄存器。这使得“.wasm”格式的文件变得更小,进而使得加载“.wasm”格式的文件更快。现有技术中方案中,由于WASM对数据类型支持有限,而且对于非Web端以及非Javascript语言的场景则缺乏有效的实现,这也导致WebAssembly技术在非Web端环境应用较少。本公开实施例提供的一种WebAssembly的数据执行方法,通过传递非web客户端传递的复杂数据,利用共享内存的管理机制,并通过集成多语言解析执行工具进行对应的非web环境的支持,完善了WASM对非web环境的支持,同时WASM是一种字节码,类似汇编语言,其二进制格式具有很高的紧凑型,能够极大的缩小目标代码文件的大小、提高应用程序分发效率。本公开实施例中的非web客户端是指在非web环境下运行的程序,举例来说,用Python或者Java开发一个软件,若该软件通过传入数据调用本公开实施例提供的WASM,其即为本公开中的非web客户端,该客户端可以是安装在个人计算机上的程序,也可是安装在平板电脑或者移动设备上的APP。
以下将基于图1描述的场景,通过图2~图6对公开实施例的WebAssembly的数据执行方法进行详细描述。
图2示意性示出了根据本公开实施例的WebAssembly的数据执行方法的流程图。
如图2所示,该实施例的WebAssembly的数据执行方法包括操作S201~操作S205,该WebAssembly的数据执行方法可以由服务器105的数据处理层执行。
在操作S201,通过WASM解析执行层集成多种解析执行工具。
在操作S202,通过申请共享内存将非web客户端传递的数据传入WASM解析执行层。
在操作S203,通过数据选择对应的解析执行工具生成的对应的WASM实例。
在操作S204,调用WASM实例处理数据得到出参结果。
在操作S205,通过申请共享内存将出参结果返回非web客户端并释放共享内存。
在本公开一具体的实施例中,本方法可由服务端中的数据处理层执行,该数据处理层包括有WASM解析执行层,首先通过WASM解析执行层其集成有多种不同语言的解析执行工具。该解析执行工具对应非web客户端不同的语言环境,通过相匹配语言的解析执行工具对非web客户端提供服务支持。当非web客户端传递数据时,例如手机中的某一金融APP,用户通过该APP传递包含计算参数和所调用存款业务收益计算的方法的数据至数据处理层,该数据处理层再通过申请共享内存的方式将数据传递至WASM解析执行层中;在WASM解析执行层中,通过匹配传递数据的非web客户端对应的语言,通过对应的多语言执行工具进行处理,例如APP对应的编写语言环境为java,则匹配的解析执行工具可为wasmer-java;通过对应的该解析执行工具,生成对应语言的WASM实例;调用该WASM实例对该数据进行处理,得出上述的例子中的存款业务收益的出参结果;最后申请共享内存将出参结果返回至非web客户端的手机的APP上。
本公开的WebAssembly的数据执行方法利用内存管理机制将数据传递到WASM内,解决了非web客户端无法传递复杂数据的问题,并通过WASM解析执行层解析执行实现多语言接入,实现非web客户端的多语言解析的问题,扩展了WASM的应用,提高WASM是易用性。同时,WASM是一种字节码,类似汇编语言,其二进制格式具有很高的紧凑型,能够极大的缩小目标代码文件的大小、提高应用程序分发效率,减少服务器段的成本压力。
本公开中的WASM实例是解析执行工具创建的能在WASM中运行的执行相应业务逻辑的实例化代码。本公开的多种解析执行工具包含wasmer、wasmer-go、wasmer-python、wasmer-java及wasmtime中的至少一种。本公开通过集成多种解析执行工具来创建多种实例,以应对不同的非web客户端环境。以wasmer为例,其为Rust语言编写的一款开源项目,它可以作为解析执行器支持WebAssembly在web外部以超轻量级的方式运行,在Rust语言中,在编译成WASM实例后,可通过例如“#[no_mangle]’标签”的方法将其暴露,使该实例能在外部通过方法名来直接调用,使用户不需要关注内存的具体操作与实现,直接按照传统方式实现,例如传递需要执行的方法和参数并得到相应的返回结果。
在本公开一实施例中,WebAssembly的数据执行方法还包括:根据WASM实例名称、WASM实例内容及WASM编译预言构建WASM实例管理层;通过WASM实例管理层对WASM实例进行加载、调用及删除。参见图8,其示意性示出了根据本公开实施例的解析执行层的构架图。其中,WASM解析执行层通过WASM实例管理层对WASM实例进行加载、调用及删除,其中,WASM实例管理层通过WASM信息进行管理,WASM信息包括WASM实例名称、WASM实例内容及WASM编译预言。
WASM解析执行层中设有的WASM实例管理层对多语言解析执行工具所生成的WASM实例进行针对的管理,从WASM信息方面进行管理,包括WASM实例名称、WASM实例内容及WASM编译语言,其中,WASM实例名称即对外暴露的方法的名称,可供非web客户端进行调用;WASM实例内容即WASM具体的业务执行逻辑,用以处理数据;WASM编译语言则为对应生成该WASM实例的多语言解析执行工具的语言,例如wasmer-java对应的java。通过构建WASM解析执行层中的WASM实例管理,对多语言的WASM实例进行管理,提高执行效率。
图3示意性示出了根据本公开实施例的数据传递方法的流程图。
如图3所示,该实施例的WebAssembly的数据执行方法包括操作S301~操作S303。
在操作S301,接收非web客户端传递的数据并解析为字节流数据。
在操作S302,申请共享内存中的第一内存块并将字节流数据写入第一内存块。
在操作S303,将第一内存块的内存索引与字节流数据的长度传入WASM解析执行层。
在本公开的一实施例中,WebAssembly的数据执行方法操作S202由操作S301~S303实现。在WASM中,其采用了二进制格式的字节码,需要对数据进行解析转换成字节流数据再进行传输。
参见图7,其示意性示出了根据本公开实施例的数据处理层的构架图。其中,客户端为非web客户端,是指除了以web的方式实现的网页客户端之外的任意可以调用该方法执行WASM的客户端。数据处理层接收的非web客户端的数据,将数据解析为字节流数据,将字节流数据写入在共享内存中申请的第一内存块,并将内存块的内存索引及字节流数据的长度传递至数据处理层中的WASM解析执行层。
该方法将非web客户端传递的数据转换为字节流数据并利用内存管理机制传入WASM解析执行层,解决非web客户端的复杂数据无法传递至WASM解析执行层的困难。
图4示意性示出了根据本公开一实施例的数据返回方法的流程图。
如图4所示,该实施例的数据返回方法方法包括操作S401~操作S405。
在操作S401,调用WASM实例将出参结果添加结束标识并转换成出参字节流数据。
在操作S402,申请共享内存中的第二内存块并将出参字节流数据写入第二内存块。
在操作S403,将第二内存块的内存索引与出参字节流数据的长度传入数据处理层。
在操作S404,解析出参字节流数据并向非web客户端发送出参结果。
在操作S405,根据结束标识释放第一内存块及第二内存块。
在本公开一实施例中,WebAssembly的数据执行方法操作S205由操作S401~S405实现,解析执行层通过申请共享内存,将出参字节流数据写入第二内存块,并传递第二内存块的内存索引和出参字节流数据的长度至数据处理层。数据处理层再继续解析出参字节流数据,得到出参结果并将出参结构返回至非web客户端,最后利用写入出参字节流数据的结束标识释放第一内存块及第二内存块。本公开中,第一内存块与第二内存块是两块内存地址不同的内存块,分别用于传输字节流数据和出参字节流数据。
该方法将WASM解析执行层的出参结果利用内存管理机制传递至数据处理层并返回非web客户端,利用结束标识释放申请的内存块,完善内存管理机制。
图5示意性示出了根据本公开另一实施例的数多种解析执行工具集成方法的流程图。
如图5所示,该实施例的多种解析执行工具集成方法包括操作S501~操作S502。
在操作S501,编写WASM解析执行层的预设接口,其中,预设接口包括创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口。
在操作S502,将满足预设接口条件的至少一种解析执行工具接入WASM解析执行层,即将满足创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口条件的至少一种解析执行工具接入WASM解析执行层,得到多种解析执行工具。
在本公开一实施例中,本公开通过WASM解析执行层集成多语言解析执行工具,首先通过编写WASM解析执行层的预设接口,其中,预设接口包括创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口;最后将满足创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口条件的至少一种解析执行工具接入WASM解析执行层。
本公开以面向接口的方式为各类第三方解析执行工具提供接入与注册服务,在实际应用中可根据功能需求扩展接口规范支持根据不同的语言环境接入不同的第三方解析工具。其中,各预设接口实现功能为:创建实例接口:通过指定的解析执行工具创建WASM实例,用于解析调用WASM文件;用方法接口:通过WASM实例调用WASM文件中暴露的指定方法;释放实例接口:释放指定WASM实例与其使用的内存;写入共享内存接口:将指定字节流数据写入WASM实例中的共享内存中并返回内存索引;获取共享内存接口:通过内存索引与字节流长度获取共享内存中的字节流数据;释放共享内存接口:接收内存索引与长度,释放共享内存中的内存块。本公开通过编写与本申请共享内存管理机制对应的预设借口实现集成多语言解析执行工具。
图6示意性示出了根据本公开又一实施例的匹配WASM实例的方法的流程图。
如图6所示,该实施例的匹配WASM实例的方法包括操作S601~操作S603。
在操作S601,通过数据获得非web客户端的语言、调用方法。
在操作S602,根据语言匹配WASM实例管理层中WASM实例的WASM编译语言,根据调用方法匹配WASM实例管理层中WASM实例的WASM实例名称,得到匹配的WASM实例。
在操作S603,加载WASM实例。
在本公开一实施例中,本公开的匹配WASM实例的方法通过数据获取非web客户端的语言环境和所调用的方法,语言环境即该非web客户端的编译语言,例如java、python。所调用的方法即用户使用该非web客户端需要执行的操作逻辑对应的方法,例如需要计算存款业务收益对应的方法。本公开的解析执行层中包括有WASM实例管理层,该WASM实例管理层通过WASM信息进行管理,WASM信息包括WASM实例名称、WASM实例内容及WASM编译预言。将从上述数据获取的语言和所调用的方法匹配WASM实例管理层的WASM实例并加载。本公开根据数据所包括的语言、调用方法的信息匹配对应的所述WASM实例并加载,实现非web客户端的多语言解析的问题。
本公开还提出了一种基于WebAssembly的数据执行方法的系统框架图,如图7、图8所示。该系统框架包括客户端、数据处理层。客户端指的是本公开中的非web客户端,其传递包含调用方法和参数进入数据处理层。数据处理层需要将该数据传入数据处理层中的WASM解析执行层。通过申请共享内存并写入数据,并返回共享内存的位置索引,再将该位置索引和数据的长度传入WASM解析执行层中根据相应的业务逻辑进行执行。得到的执行结果即出参结果通过申请共享内存的方法再传出WASM解析执行层,通过数据处理层解析后将出参结果返回该客户端,并释放内存结束调用。
在WASM解析执行层中,其包含WASM实例管理层和解析执行引擎管理层。其中,解析执行引擎即解析执行工具,至少包含wasmer、wasmer-go、wasmer-python、wasmer-java以及wasmtime的至少一种。WASM解析执行层通过解析执行引擎,编写包括:创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、释放共享内存接口、获取共享内存接口,通过这些接口实现多种第三方解析执行工具的接入。通过多种解析执行工具接入生成的多种WASM实例通过WASM实例管理层进行管理,包括加载实例、调用实例以及删除实例。
基于上述WebAssembly的数据执行方法,本公开还提供了一种WebAssembly的数据执行装置。以下将结合图9对该装置进行详细描述。
图9示意性示出了根据本公开实施例的WebAssembly的数据执行装置的结构框图。
如图9所示,该实施例的WebAssembly的数据执行装置900包括集成模块901、传递模块902、匹配模块903、处理模块904和返回模块905。
集成模块901用于通过WASM解析执行层集成多语言解析执行工具。在一实施例中,集成模块901可以用于执行前文描述的操作S201,在此不再赘述。
传递模块902用于通过申请共享内存将非web客户端传递的数据传入WASM解析执行层。在一实施例中,传递模块902可以用于执行前文描述的操作S202,在此不再赘述。
匹配模块903用于通过非web客户端的语言选择对应语言的多语言解析执行工具生成对应语言的WASM实例。在一实施例中,匹配模块903可以用于执行前文描述的操作S203,在此不再赘述。
处理模块904用于调用WASM实例处理数据得到出参结果。在一实施例中,处理模块904可以用于执行前文描述的操作S203,在此不再赘述。
返回模块905用于通过申请共享内存将出参结果返回非web客户端并释放共享内存。在一实施例中,返回模块905可以用于执行前文描述的操作S203,在此不再赘述。
根据本公开的实施例,集成模块901、传递模块902、匹配模块903、处理模块904和返回模块905的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,集成模块901、传递模块902、匹配模块903、处理模块904和返回模块905中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,集成模块901、传递模块902、匹配模块903、处理模块904和返回模块905中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图10示意性示出了根据本公开实施例的适于实现WebAssembly的数据执行方法的电子设备的方框图。
如图10所示,根据本公开实施例的电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。电子设备1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM1003以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的WebAssembly的数据执行方法。
在该计算机程序被处理器1001执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (11)
1.一种WebAssembly的数据执行方法,包括:
通过WASM解析执行层集成多种解析执行工具;
通过申请共享内存将非web客户端传递的数据传入所述WASM解析执行层;
通过所述数据选择对应的解析执行工具生成的对应的WASM实例;
调用所述WASM实例处理所述数据得到出参结果;以及
通过申请所述共享内存将所述出参结果传出并返回所述非web客户端并释放所述共享内存。
2.根据权利要求1所述的数据执行方法,所述数据执行方法还包括:
根据WASM实例名称、WASM实例内容及WASM编译预言构建WASM实例管理层;
通过WASM实例管理层对所述WASM实例进行加载、调用及删除。
3.根据权利要求1或2所述的数据执行方法,其中,所述通过WASM解析执行层集成多种解析执行工具包括:
编写所述WASM解析执行层的预设接口,其中,所述预设接口包括创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口;
将满足所述创建实例接口、调用方法接口、释放实例接口、写入共享内存接口、获取共享内存接口、释放共享内存接口条件的至少一种解析执行工具接入所述WASM解析执行层,得到所述多种解析执行工具。
4.根据权利要求1或2所述的数据执行方法,所述通过申请共享内存将非web客户端传递的数据传入WASM解析执行层包括:
接收非web客户端传递的所述数据并解析为字节流数据;
申请所述共享内存中的第一内存块并将所述字节流数据写入所述第一内存块;
将所述第一内存块的内存索引与所述字节流数据的长度传入所述WASM解析执行层。
5.根据权利要求2所述的数据执行方法,其中,所述通过所述数据选择对应的解析执行工具生成的对应的WASM实例包括:
通过多种解析执行工具生成多种WASM实例并所述多种WASM实例包含的WASM实例名称、WASM实例内容及WASM编译预言接入所述WASM实例管理层;
通过所述数据获得所述非web客户端的语言、调用方法;
根据所述语言匹配所述WASM实例管理层中所述多种WASM实例的WASM编译语言,根据所述调用方法匹配所述WASM实例管理层中所述多种WASM实例的WASM实例名称,得到匹配的所述WASM实例;
加载所述WASM实例。
6.根据权利要求4所述的数据执行方法,所述通过申请所述共享内存将所述出参结果传出并返回所述非web客户端并释放所述共享内存包括:
调用所述WASM实例将所述出参结果添加结束标识并转换成出参字节流数据;
申请所述共享内存中的第二内存块并将所述出参字节流数据写入所述第二内存块;
将所述第二内存块的内存索引与所述出参字节流数据的长度传出至数据处理层;
解析所述出参字节流数据并向非web客户端发送所述出参结果;
根据所述结束标识释放所述第一内存块及所述第二内存块。
7.根据权利要求3所述的数据执行方法,其中,所述至少一种解析执行工具包含wasmer、wasmer-go、wasmer-python、wasmer-java及wasmtime中的至少一种。
8.一种WebAssembly的数据执行装置,包括:
集成模块,用于通过WASM解析执行层集成多种解析执行工具;
传递模块,用于通过申请共享内存将非web客户端传递的数据传入所述WASM解析执行层;
匹配模块,用于通过所述数据选择对应的解析执行工具生成的对应的WASM实例;
处理模块,用于调用所述WASM实例处理所述数据得到出参结果;以及
返回模块,用于通过申请所述共享内存将所述出参结果返回所述非web客户端并释放所述共享内存。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111538332.1A CN114168269A (zh) | 2021-12-15 | 2021-12-15 | WebAssembly的数据执行方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111538332.1A CN114168269A (zh) | 2021-12-15 | 2021-12-15 | WebAssembly的数据执行方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168269A true CN114168269A (zh) | 2022-03-11 |
Family
ID=80486911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111538332.1A Pending CN114168269A (zh) | 2021-12-15 | 2021-12-15 | WebAssembly的数据执行方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168269A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049002A (zh) * | 2023-01-17 | 2023-05-02 | 三度观测云(北京)科技有限责任公司 | 可观测性数据的获取方法、装置、终端设备及存储介质 |
CN116560878A (zh) * | 2023-07-07 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 一种内存共享方法和相关装置 |
-
2021
- 2021-12-15 CN CN202111538332.1A patent/CN114168269A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116049002A (zh) * | 2023-01-17 | 2023-05-02 | 三度观测云(北京)科技有限责任公司 | 可观测性数据的获取方法、装置、终端设备及存储介质 |
CN116049002B (zh) * | 2023-01-17 | 2024-01-19 | 算想未来(北京)科技有限责任公司 | 可观测性数据的获取方法、装置、终端设备及存储介质 |
CN116560878A (zh) * | 2023-07-07 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 一种内存共享方法和相关装置 |
CN116560878B (zh) * | 2023-07-07 | 2024-03-22 | 腾讯科技(深圳)有限公司 | 一种内存共享方法和相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110008045B (zh) | 微服务的聚合方法、装置、设备及存储介质 | |
CN111221521A (zh) | 日志代码的生成方法、装置、计算机系统和可读存储介质 | |
CN114168269A (zh) | WebAssembly的数据执行方法、装置、设备及介质 | |
CN113946425A (zh) | 业务处理方法及装置、电子设备和计算机可读存储介质 | |
CN111309304B (zh) | 一种生成idl文件的方法、装置、介质和电子设备 | |
WO2023174013A1 (zh) | 显存分配方法、装置、介质及电子设备 | |
CN112346794A (zh) | 接口调用方法、装置、设备及介质 | |
KR20210042283A (ko) | 애플릿용 데이터 처리 방법, 장치, 기기 및 매체 | |
CN113434241A (zh) | 页面跳转方法及装置 | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
CN115982491A (zh) | 页面更新方法及装置、电子设备和计算机可读存储介质 | |
CN115357761A (zh) | 链路追踪方法、装置、电子设备及存储介质 | |
WO2022062634A1 (zh) | 在业务中集成地图服务的方法、装置、设备和存储介质 | |
CN116561013B (zh) | 基于目标服务框架的测试方法、装置、电子设备和介质 | |
US20170063966A1 (en) | Real time data streaming from a mainframe computer to off platform destinations | |
CN113596164B (zh) | 数据访问方法、装置、系统、设备和介质 | |
CN115374207A (zh) | 业务处理方法及装置、电子设备和计算机可读存储介质 | |
CN112769975B (zh) | 一种数据集成方法、装置、服务器及存储介质 | |
CN111325456B (zh) | 资产数据处理方法和装置、计算机系统和存储介质 | |
CN114116263A (zh) | 用于浏览器中多页签通信的系统、方法、设备及介质 | |
CN114546370A (zh) | 一种数据对接方法及相关装置 | |
CN114219643A (zh) | 一种交易调用方法、装置、设备及存储介质 | |
CN113448578A (zh) | 页面数据处理方法、处理系统、电子设备和可读存储介质 | |
CN113760262A (zh) | 任务处理方法、装置、计算机系统和计算机可读存储介质 | |
CN113067885B (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 |