CN110532045A - 一种跨进程调用方法及相关装置 - Google Patents
一种跨进程调用方法及相关装置 Download PDFInfo
- Publication number
- CN110532045A CN110532045A CN201910834133.1A CN201910834133A CN110532045A CN 110532045 A CN110532045 A CN 110532045A CN 201910834133 A CN201910834133 A CN 201910834133A CN 110532045 A CN110532045 A CN 110532045A
- Authority
- CN
- China
- Prior art keywords
- call
- result
- message
- calling
- striding course
- 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 248
- 230000008569 process Effects 0.000 claims abstract description 191
- 238000003860 storage Methods 0.000 claims abstract description 28
- 230000006854 communication Effects 0.000 claims abstract description 26
- 238000004891 communication Methods 0.000 claims abstract description 24
- 238000009434 installation Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 239000003795 chemical substances by application Substances 0.000 description 37
- 235000013399 edible fruits Nutrition 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种跨进程调用方法,包括:采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;将所述调用结果消息的调用结果对象与所述代理对象关联。本申请还公开了一种跨进程调用系统、计算机装置以及计算机可读存储介质。通过在进行跨进程调用时,向调用进程返回代理对象避免等待卡顿,提高软件运行的流程程度,提升用户体验。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种跨进程调用方法、跨进程调用系统、计算机装置以及计算机可读存储介质。
背景技术
随着信息技术的不断发展,客户端应用领域出现了多种客户端构建框架,不同的框架在完成桌面应用程序的基础上,还具有不同的开发优势。其中,Electron(框架名称)框架就是使用WEB(World Wide Web)编程语言开发应用程序的框架。具体的,Electron框架是由Github开发,用HTM(Hyper Text Markup Language超文本标记语言),CSS(CascadingStyle Sheets层叠样式表)和JavaScript(一种脚本语言)来构建跨平台桌面应用程序的一个开源库。
目前,在Electron框架下为了实现方便的低成本的跨进程调用,也就是调用进程向目标进程请求调用结果,通常调用进程采用remote(模块名称)模块向目标进程发送调用请求。但是remote模块在IPC(Inter-Process Communication进程间通信)通信过程中是采用同步等待的方式进行调用,使得任意一次调用都需要调用进程等待,且等待时间不可预知。当IPC通过未返回结果之前调用进程将不能处理其他任务,造成客户端处理卡顿,降低用户体验。
因此,如何避免跨进程调用过程中造成的卡顿是本领域技术人员关注的重点问题。
发明内容
本申请的目的是提供一种跨进程调用方法、跨进程调用系统、计算机装置以及计算机可读存储介质,旨在解决调用进程出现在跨进程调用时出现的卡顿问题。
为实现上述目的,本发明提供一种跨进程调用方法,包括:
采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;
控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;
将所述调用结果消息的调用结果对象与所述代理对象关联。
优选的,采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象,包括:
将所述调用进程的调用请求进行序列化处理,得到JSON包格式的所述调用请求消息;
采用异步IPC通信规则将所述调用请求消息发送至所述目标进程;
向所述调用进程返回代理对象。
优选的,控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息,包括:
控制所述目标进程对接收到的所述调用请求消息进行反序列化处理,得到所述调用请求;
根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果;
对所述调用结果进行序列化处理得到所述调用结果消息,以异步IPC消息形式发送所述调用结果消息。
优选的,将所述调用结果消息的调用结果对象与所述代理对象关联,包括:
对所述调用结果消息进行反序列化处理,得到所述调用结果对象;
将所述调用结果对象与所述代理对象关联。
优选的,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为模块请求时,所述目标进程通过require函数获取到所述调用结果。
优选的,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为函数请求或方法请求时,所述目标进程执行所述调用请求得到所述调用结果。
优选的,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为构造函数请求时,所述目标进程对所述构造函数请求进行调用,得到调用对象;
将所述调用对象作为所述调用结果。
为实现上述目的,本发明进一步提供一种跨进程调用系统,其特征在于,所述系统包括:
调用请求发送模块,用于采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;
调用请求处理模块,用于控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;
调用结果关联模块,用于将所述调用结果消息的调用结果对象与所述代理对象关联。
为实现上述目的,本发明进一步提供一种计算机装置,其特征在于,所述计算机装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的跨进程调用程序,所述跨进程调用程序被所述处理器执行时实现如上述的跨进程调用方法。
可选的,所述设备为组成CDN网络或者区块链网络的节点。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现如上所述的跨进程调用方法。
本申请所提供的一种跨进程调用方法,包括:采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;将所述调用结果消息的调用结果对象与所述代理对象关联。
可见,本申请技术方案通过当进行跨进程调用时,除了将调用请求从调用进程发送至目标进程,还向调用进程返回代理对象,相当于调用进程获取到调用结果,使调用进程不再等待调用结果,直接执行后续的步骤,避免等待调用结果出现的卡顿情况,提高用户的体验。并且,控制目标进程对调用请求执行调用操作得到调用结果,也就是调用进程所需要获取到的调用结果,最后将该调用结果与该代理对象进行关联,以便调用进程对调用结果进行获取,实现对目标进程进行跨进程调用,同时还可以对该调用结果进行循环引用,降低了调用结果的引用成本。
本申请还提供一种跨进程调用系统、计算机装置以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的第一种跨进程调用方法的流程图;
图2为本申请实施例所提供的第二种跨进程调用方法的流程图;
图3为本申请实施例所提供的第三种跨进程调用方法的流程图;
图4为本申请实施例所提供的第四种跨进程调用方法的流程图;
图5为本申请实施例所提供的一种跨进程调用系统的结构示意图;
图6为本申请实施例所提供的一种计算机装置的结构示意图。
具体实施方式
本申请的核心是提供一种跨进程调用方法、跨进程调用系统、计算机装置以及计算机可读存储介质,通过在进行跨进程调用时,向调用进程返回代理对象避免等待卡顿,提高软件运行的流程程度,提升用户体验。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
目前,现有技术中在Electron框架下为了实现方便的低成本的跨进程调用,也就是调用进程向目标进程请求调用结果,通常调用进程采用remote模块向目标进程发送调用请求。但是remote模块在IPC通信过程中是采用同步等待的方式进行调用,使得任意一次调用都需要调用进程等待,且等待时间不可预知。当IPC通过未返回结果之前调用进程将不能处理其他任务,造成客户端处理卡顿,降低用户体验。
因此,本申请提供一种跨进程调用方法,当进行跨进程调用时,除了将调用请求从调用进程发送至目标进程,还向调用进程返回代理对象,相当于调用进程获取到调用结果,使调用进程不再等待调用结果,直接执行后续的步骤,避免等待调用结果出现的卡顿情况,提高用户的体验。并且,控制目标进程对调用请求执行调用操作得到调用结果,也就是调用进程所需要获取到的调用结果,最后将该调用结果与该代理对象进行关联,以便调用进程对调用结果进行获取,实现对目标进程进行跨进程调用,同时还可以对该调用结果进行循环引用,降低了调用结果的引用成本。
请参考图1,图1为本申请实施例所提供的第一种跨进程调用方法的流程图。
本实施例中,该方法可以包括:
S101,采用异步通信规则将调用进程的调用请求消息发送至目标进程,向调用进程返回代理对象;
本步骤主要是将调用请求发送至目标进程,使得目标进程根据调用请求完成跨进程调用。并且,再向调用进程返回代理对象。
而在现有技术中调用进程采用的同步的方式进行调用,首先将调用进程的调用请求发送至目标进程,然后调用进程等待目标进程返回对应的结果。当调用进程得到结果才继续进行后续的执行步骤。可想而知,当调用请求的结果获取速度较慢时,那么调用进程就需要一直等待目标进程返回对应的调用结果,而无法继续执行后续的步骤。也就是调用进程卡在目前的进程上,而无法继续执行。如果该调用进程是渲染进程时,则会导致界面卡顿等情况,降低用户体验。
因此,本步骤中为了避免出现卡顿情况,当调用进程的调用请求消息发送至目标进程后直接向调用进程返回代理对象,相当于向调用进程返回调用结果,使调用进程结束等待,直接执行后续的步骤,避免出现卡顿的情况,提升用于体验。
S102,控制目标进程根据调用请求消息执行调用操作得到调用结果消息,并返回调用结果消息;
在S101的基础上,本步骤旨在获取到调用结果消息,也就是使目标进程对调用请求进行处理得到调用结果。
需要说明的是,本步骤中目标进程对调用请求进行处理的方式可以采用现有技术提供的任意一种处理方式,具体的在此不做具体限定。
S103,将调用结果消息的调用结果对象与代理对象关联。
在S102的基础上,本步骤旨在将获取到的调用结果消息中的调用结果和代理对象进行关联。也就是使调用进程可以通过代理对象获取到调用结果,即引用到调用结果。
一般的调用进程可以是任意一个具有调用需求的进程,当采用本实施例中的跨进程调用方法向目标进程进行调用时,都可以减少调用进程的等待时间。当该调用进程是渲染进程时,减少等待时间可以有效的减少界面动画卡动的过程,进而提升用户的使用体验。
综上,本实施例通过当进行跨进程调用时,除了将调用请求从调用进程发送至目标进程,还向调用进程返回代理对象,相当于调用进程获取到调用结果,使调用进程不再等待调用结果,直接执行后续的步骤,避免等待调用结果出现的卡顿情况,提高用户的体验。并且,控制目标进程对调用请求执行调用操作得到调用结果,也就是调用进程所需要获取到的调用结果,最后将该调用结果与该代理对象进行关联,以便调用进程对调用结果进行获取,实现对目标进程进行跨进程调用,同时还可以对该调用结果进行循环引用,降低了调用结果的引用成本。
以下通过一个实施例,对上一实施例中如何向目标进程发送调用消息并返回代理对象进行说明。
请参考图2,图2为本申请实施例所提供的第二种跨进程调用方法的流程图。
本实施例中,该方法可以包括:
S201,将调用进程的调用请求进行序列化处理,得到JSON包格式的调用请求消息;
本实施例中,主要是将调用进程中的调用请求发送至目标进程中。并且,本实施例的通信环境是在基于Node.js的Electron框架下采用异步IPC进行通信。同时,JSON(JavaScript Object Notation JavaScript对象格式)包格式是在Node.js环境中常用的轻量级数据结构。因此,本步骤中将调用进程的调用请求序列化成JSON包格式的调用请求消息,以便在异步IPC通信规则下进行数据传输。
S202,采用异步IPC通信规则将调用请求消息发送至目标进程;
在S201的基础上,本步骤旨在采用异步IPC通信规则将调用请求消息发送至目标进程中。
其中,采用异步IPC通信规则发送消息的方法可以采用现有技术提供的任意一种异步IPC消息发送方法,只要能采用异步的方式将调用请求消息发送至目标进程即可,在此不做具体限定。
S203,向调用进程返回代理对象;
在S202的基础上,本步骤旨在向该调用进程返回代理对象,也就是是向调用进程返回Proxy(代理)对象。
其中,Proxy对象是在ECMA2015标准中添加的新特性,可任意通过该Proxy对象访问目标对象的一般行为。并且,在本实施例中通过调用请求获取到的远程对象一般并不直接暴露给调用进程,而是通过将远程对象与代理对象之间相互关联,调用进程直接访问代理对象,代理对象将所有的访问行为均发送至远程对象,使得访问代理对象相当于访问远程对象。降低了访问远程对象的成本,在循环引用的过程中降低应用成本。
S204,控制目标进程根据调用请求消息执行调用操作得到调用结果消息,并返回调用结果消息;
S205,将调用结果消息的调用结果对象与代理对象关联。
关于上述步骤S204和S205的具体实施过程可参照前述实施例的内容,在此不再进行赘述。
可见,本实施例中提供了一种更具体的跨进程调用方法,通过将调用请求消息直接发送时目标进程,并向调用进程返回代理对象,相当于向调用进程返回了调用结果。避免调用进程对调用请求消息的结果进行等待,而造成的卡顿情况。提高调用进程在跨进程调用过程的流畅性,保证用的使用体验。
以下通过一个实施例,对上一实施例中如何向目标进程发送调用消息并返回代理对象进行说明。
请参考图3,图3为本申请实施例所提供的第三种跨进程调用方法的流程图。
本实施例中,该方法可以包括:
S301,将调用进程的调用请求进行序列化处理,得到JSON包格式的调用请求消息;
S302,采用异步IPC通信规则将调用请求消息发送至目标进程;
S303,向调用进程返回代理对象;
S304,控制目标进程对接收到的调用请求消息进行反序列化处理,得到调用请求;
在S303的基础上,本步骤旨在控制目标进程从接收到的调用请求消息中进行处理,得到调用请求。具体的,是对调用请求消息进行反序列化处理,得到调用请求。
需要说明的是,本申请技术方案中的序列化处理方式,均可采用现有技术提供的任意一种序列化处理方式。本申请技术方案中的反序列化处理方式,同样可以采用现有技术提供的任意一种反序列化处理方式,在此不做具体限定。
S305,根据调用请求的类型确定调用操作,执行调用操作得到调用结果;
在S304的基础上,本步骤中旨在控制目标进程对调用请求执行对应的调用操作,得到调用结果。
由于调用进程根据不同的调用需求发送不同类型的调用请求,而每种调用请求也对应了不同类型的调用操作。因此,本实施例中为了更准确的进行调用请求的调用,先根据调用请求的类型确定调用操作,然后再执行该调用操作,最后得到调用结果。
S306,对调用结果进行序列化处理得到调用结果消息,以异步IPC消息形式发送调用结果消息;
在S305的基础上,本步骤旨在将调用结果进行序列化处理,得到调用结果消息,以便通过异步IPC消息的形式将调用结果消息发送至调用进程。
其中,将调用结果进行序列化处理主要是也是为了将调用结果序列化为可以在IPC通信中进程传输的JSON包格式的消息。
S307,将调用结果消息的调用结果对象与代理对象关联。
关于上述步骤S301至S303和S307的具体实施过程可参照前述实施例的内容,在此不再进行赘述。
可见,本实施例提供了一种更具体的跨进程调用方法,通过对应不同的调用请求的类型,执行不同的调用操作。以便执行最正确的调用操作,提高获取正确调用结果的效率,避免浪费更多的性能资源。
以下通过三个实施例,对如何根据不同的调用请求类型执行调用操作得到调用结果进行说明。
一个实施例:
当调用请求的类型为模块请求时,目标进程通过require函数获取到调用结果。也就是说本实施例中的调用请求的目的是取得目标进程中的模块或对象时,控制目标进程通过require函数获取到调用结果。
另一个实施例:
当调用请求的类型为函数请求或方法请求时,目标进程执行调用请求得到调用结果。也就是说本实施例中的调用请求的目的是调用目标进程中的某个具体的函数或者成员方法时,可以直接在目标进程中对该函数或成员方法进行执行,得到调用结果。
还一个实施例:
当调用请求的类型为构造函数请求时,目标进程对构造函数请求进行调用,得到调用对象;将调用对象作为调用结果。也就是说,本实施例中的调用请求的目的是调用目标进程中的构造函数时,旨在在目标进程中调用该构造函数,得到调用对象,并将调用对象作为调用结果。
以下通过一个实施例,对上一实施例中如何向目标进程发送调用消息并返回代理对象进行说明。
请参考图4,图4为本申请实施例所提供的第四种跨进程调用方法的流程图。
本实施例中,该方法可以包括:
S401,将调用进程的调用请求进行序列化处理,得到JSON包格式的调用请求消息;
S402,采用异步IPC通信规则将调用请求消息发送至目标进程;
S403,向调用进程返回代理对象;
S404,控制目标进程对接收到的调用请求消息进行反序列化处理,得到调用请求;
S405,根据调用请求的类型确定调用操作,执行调用操作得到调用结果;
S406,对调用结果进行序列化处理得到调用结果消息,以异步IPC消息形式发送调用结果消息;
S407,对调用结果消息进行反序列化处理,得到调用结果对象;
S408,将调用结果对象与代理对象关联。
关于上述步骤S401至S406的具体实施过程可参照前述实施例的内容,在此不再进行赘述。
可见,本实施例提供了一种更具体的跨进程调用方法,在本实施例中通过将调用结果消息进行反序列化处理后得到调用结果对象,并将该调用给结果对象对代理对象进行关联,以便可以从蒂埃里对象中进行引用,得到对应的数据,避免对目标进程进行再次调用,降低引用成本。
以下通过一个实施例,对本申请所提供的跨进程调用方法中的序列化处理进行进一步说明。
实施例:
本实施例中为了降低从对象中获取结果的成本,也就是调用进程可以直接访问调用结果中的一切子孙成员。也就是,将调用结果的对象中所有子孙成员也都加入序列化的过程中,即对调用结果进行递归序列化处理。具体的,当对调用结果进行递归序列化处理时,一般情况下由于存在循环引用的问题。为了解决该问题,则需要将调用结果的对象当作树结构进行遍历,首先从树结构的根部开始遍历,将对根节点生成对应的ID,并缓存。然后继续进行遍历,当需要与该根节点相同的ID时,得到遍历结果,结束遍历。将该遍历结果再进行序列化处理,得到JSON包格式的调用结果对象。
其中,远程对象即与目标进程中进行调用得到结果对象,每一个远程对象在目标进程有一个与之一一对应的对象存在,两者的生命周期同步。本申请技术方案中还可以监视远程对象的生命周期,当远程对象销毁时,其对应的对象将释放引用。两者的对象结构是相同的,即有相同的属性描述符和原型链。远程对象中的函数调用和new操作符等指派给其相应对象,得到返回结果,并返回至调用进程。
此外,本申请中提供的反序列化处理的具体实施过程可参照本实施例的内筒,在此不再进行赘述。
可见,在本实施例中,解决了对循环引用的情况下进行序列化的问题,实现了将远程对象以低成本进行循环引用,提高了循环调用的效率,降低了跨进程调用过程中的资源消耗。
下面对本申请实施例提供的一种跨进程调用系统进行介绍,下文描述的一种跨进程调用系统与上文描述的一种跨进程调用方法可相互对应参照。
请参考图5,图5为本申请实施例所提供的一种跨进程调用系统的结构示意图。
本实施例中,该系统可以包括:
调用请求发送模块100,用于采用异步通信规则将调用进程的调用请求消息发送至目标进程,向调用进程返回代理对象;
调用请求处理模块200,用于控制目标进程根据调用请求消息执行调用操作得到调用结果消息,并返回调用结果消息;
调用结果关联模块300,用于将调用结果消息的调用结果对象与代理对象关联。
下面对本申请实施例提供的一种计算机装置进行介绍,下文描述的一种计算机装置与上文描述的一种跨进程调用方法可相互对应参照。
请参考图6,图6为本申请实施例所提供的一种计算机装置的结构示意图。
在本实施例中,计算机装置1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。
该装置1可以是组成CDN网络或者区块链网络的节点。
该计算机装置1可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是计算机装置1的内部存储单元,例如该计算机装置1的硬盘。存储器11在另一些实施例中也可以是计算机装置1的外部存储设备,例如计算机装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括计算机装置1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于计算机装置1的应用软件及各类数据,例如跨进程调用程序01的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行跨进程调用程序01等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,计算机装置还可以包括网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该装置1与其他电子设备之间建立通信连接。
可选地,该装置1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在计算机装置1中处理的信息以及用于显示可视化的用户界面。
图6仅示出了具有组件11-13以及跨进程调用程序的计算机装置1,本领域技术人员可以理解的是,图1示出的结构并不构成对计算机装置1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现如以上实施例所述的跨进程调用方法。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种跨进程调用方法,其特征在于,包括:
采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;
控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;
将所述调用结果消息的调用结果对象与所述代理对象关联。
2.如权利要求1所述的跨进程调用方法,其特征在于,采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象,包括:
将所述调用进程的调用请求进行序列化处理,得到JSON包格式的所述调用请求消息;
采用异步IPC通信规则将所述调用请求消息发送至所述目标进程;
向所述调用进程返回代理对象。
3.如权利要求2所述的跨进程调用方法,其特征在于,控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息,包括:
控制所述目标进程对接收到的所述调用请求消息进行反序列化处理,得到所述调用请求;
根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果;
对所述调用结果进行序列化处理得到所述调用结果消息,以异步IPC消息形式发送所述调用结果消息。
4.如权利要求3所述的跨进程调用方法,其特征在于,将所述调用结果消息的调用结果对象与所述代理对象关联,包括:
对所述调用结果消息进行反序列化处理,得到所述调用结果对象;
将所述调用结果对象与所述代理对象关联。
5.如权利要求3所述的跨进程调用方法,其特征在于,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为模块请求时,所述目标进程通过require函数获取到所述调用结果。
6.如权利要求3所述的跨进程调用方法,其特征在于,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为函数请求或方法请求时,所述目标进程执行所述调用请求得到所述调用结果。
7.如权利要求3所述的跨进程调用方法,其特征在于,根据所述调用请求的类型确定调用操作,执行所述调用操作得到调用结果,包括:
当所述调用请求的类型为构造函数请求时,所述目标进程对所述构造函数请求进行调用,得到调用对象;
将所述调用对象作为所述调用结果。
8.一种跨进程调用系统,其特征在于,所述系统包括:
调用请求发送模块,用于采用异步通信规则将调用进程的调用请求消息发送至目标进程,向所述调用进程返回代理对象;
调用请求处理模块,用于控制所述目标进程根据所述调用请求消息执行调用操作得到调用结果消息,并返回所述调用结果消息;
调用结果关联模块,用于将所述调用结果消息的调用结果对象与所述代理对象关联。
9.一种计算机装置,其特征在于,所述计算机装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的跨进程调用程序,所述跨进程调用程序被所述处理器执行时实现如权利要求1至7任一项所述的跨进程调用方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现如权利要求1至7任一项所述的跨进程调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834133.1A CN110532045A (zh) | 2019-09-04 | 2019-09-04 | 一种跨进程调用方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834133.1A CN110532045A (zh) | 2019-09-04 | 2019-09-04 | 一种跨进程调用方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110532045A true CN110532045A (zh) | 2019-12-03 |
Family
ID=68666954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910834133.1A Pending CN110532045A (zh) | 2019-09-04 | 2019-09-04 | 一种跨进程调用方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532045A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381728A (zh) * | 2020-03-11 | 2020-07-07 | 努比亚技术有限公司 | 一种触摸数据管控方法、设备及计算机可读存储介质 |
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
WO2021233103A1 (en) * | 2020-05-21 | 2021-11-25 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method and apparatus of cross-ipc access |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087314A (zh) * | 2007-05-15 | 2007-12-12 | 华为技术有限公司 | 一种应用程序跨进程使用套接字服务的系统及方法 |
CN101674326A (zh) * | 2009-09-21 | 2010-03-17 | 中兴通讯股份有限公司 | 进程间同步通信实现方法及代理单元 |
CN106547631A (zh) * | 2016-09-26 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 基于安卓平台的跨进程通信方法和装置 |
CN109739666A (zh) * | 2019-01-09 | 2019-05-10 | 广州虎牙信息科技有限公司 | 单例方法的跨进程调用方法、装置、设备及存储介质 |
CN109933443A (zh) * | 2019-03-07 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 进程间通信方法、装置、计算机设备及可读存储介质 |
CN110109718A (zh) * | 2019-03-26 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种应用程序接口调用方法及装置 |
-
2019
- 2019-09-04 CN CN201910834133.1A patent/CN110532045A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087314A (zh) * | 2007-05-15 | 2007-12-12 | 华为技术有限公司 | 一种应用程序跨进程使用套接字服务的系统及方法 |
CN101674326A (zh) * | 2009-09-21 | 2010-03-17 | 中兴通讯股份有限公司 | 进程间同步通信实现方法及代理单元 |
CN106547631A (zh) * | 2016-09-26 | 2017-03-29 | 腾讯科技(深圳)有限公司 | 基于安卓平台的跨进程通信方法和装置 |
CN109739666A (zh) * | 2019-01-09 | 2019-05-10 | 广州虎牙信息科技有限公司 | 单例方法的跨进程调用方法、装置、设备及存储介质 |
CN109933443A (zh) * | 2019-03-07 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 进程间通信方法、装置、计算机设备及可读存储介质 |
CN110109718A (zh) * | 2019-03-26 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种应用程序接口调用方法及装置 |
Non-Patent Citations (3)
Title |
---|
HOUSZCHINA: "Electron 基础教程-6.3 异步IPC通信", 《CSDN:HTTPS://BLOG.CSDN.NET/HOUSZCHINA/ARTICLE/DETAILS/79619447》 * |
IONEFINE: "ipcMain、ipcRenderer——主进程和渲染进程之间的异步通信", 《CSDN:HTTPS://BLOG.CSDN.NET/JIDUOCHOU963/ARTICLE/DETAILS/100075346》 * |
作者不详: "electron-ipc-proxy", 《NPMJS:HTTPS://WWW.NPMJS.COM/PACKAGE/ELECTRON-IPC-PROXY》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381728A (zh) * | 2020-03-11 | 2020-07-07 | 努比亚技术有限公司 | 一种触摸数据管控方法、设备及计算机可读存储介质 |
CN111381728B (zh) * | 2020-03-11 | 2024-01-09 | 努比亚技术有限公司 | 一种触摸数据管控方法、设备及计算机可读存储介质 |
WO2021233103A1 (en) * | 2020-05-21 | 2021-11-25 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method and apparatus of cross-ipc access |
CN112463198A (zh) * | 2020-12-09 | 2021-03-09 | 深圳智药科技有限公司 | 基于Electron的更新方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3053028B1 (en) | Rendering interpreter for visualizing data provided from restricted environment container | |
US20150261428A1 (en) | Method and apparatus for updating a web-based user interface | |
US9703761B2 (en) | Delayed code parsing for reduced startup latency | |
CN110532045A (zh) | 一种跨进程调用方法及相关装置 | |
CN103176804B (zh) | 一种用户界面实现方法 | |
US10007555B1 (en) | Dynamic resource management | |
JP7170768B2 (ja) | 開発マシン操作タスクの処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム | |
CN101630272B (zh) | 进程调度方法和系统 | |
CN111694857B (zh) | 存储资源数据的方法、装置、电子设备及计算机可读介质 | |
CN109067890A (zh) | 一种基于docker容器的CDN节点边缘计算系统 | |
CN103631664A (zh) | 一种进程间的通信方法和装置 | |
KR102522958B1 (ko) | 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체 | |
CN113296758B (zh) | 一种前端组件库构建方法、装置及存储介质 | |
CN109918203A (zh) | 接入服务器内存管理优化方法、接入服务器及通信系统 | |
EP4060496A2 (en) | Method, apparatus, device and storage medium for running inference service platform | |
CN109740092A (zh) | 浏览器系统、消息处理方法、电子设备、装置及存储介质 | |
CN107391274A (zh) | 离线消息的处理方法及装置 | |
US20230179546A1 (en) | Processor and implementation method, electronic device, and storage medium | |
CN113448650A (zh) | 直播功能插件加载方法、装置、设备及存储介质 | |
CN110764779B (zh) | 封装方法、注册方法、装置和渲染设备 | |
CN112130888A (zh) | 应用程序更新的方法、装置、设备和计算机存储介质 | |
JP7419293B2 (ja) | 命令実行方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びプログラム | |
CN113726855B (zh) | 服务聚合方法、装置、电子设备以及计算机可读存储介质 | |
CN109618016A (zh) | 一种dns请求的发送处理方法、相关方法及相关装置 | |
CN111240850A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191203 |
|
RJ01 | Rejection of invention patent application after publication |