CN113448756B - 一种进程间通信系统、方法及计算设备 - Google Patents

一种进程间通信系统、方法及计算设备 Download PDF

Info

Publication number
CN113448756B
CN113448756B CN202111000685.6A CN202111000685A CN113448756B CN 113448756 B CN113448756 B CN 113448756B CN 202111000685 A CN202111000685 A CN 202111000685A CN 113448756 B CN113448756 B CN 113448756B
Authority
CN
China
Prior art keywords
interface
plug
service process
service
calling request
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
Application number
CN202111000685.6A
Other languages
English (en)
Other versions
CN113448756A (zh
Inventor
卢桢
张升
黄钰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202111287820.XA priority Critical patent/CN114020490A/zh
Priority to CN202111000685.6A priority patent/CN113448756B/zh
Publication of CN113448756A publication Critical patent/CN113448756A/zh
Application granted granted Critical
Publication of CN113448756B publication Critical patent/CN113448756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

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

本发明公开了一种进程间通信系统,包括:主进程;基于主进程创建的服务进程,服务进程适于加载一个或多个插件,并适于接收插件发送的第一接口调用请求;代理服务端,分别与主进程、服务进程相连,适于从服务进程获取第一接口调用请求,从第一接口调用请求中获取第一接口信息,并将第一接口信息发送至主进程,以便主进程基于第一接口信息来调用主进程的第一接口;接收主进程发送的第二接口调用请求,从第二接口调用请求中获取第二接口信息,并将第二接口信息发送至服务进程,以便服务进程基于第二接口信息来调用插件的第二接口。本发明一并公开了相应的进程间通信方法和计算设备。根据本发明的技术方案,避免因插件异常而导致应用运行过程不稳定。

Description

一种进程间通信系统、方法及计算设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种进程间通信系统、进程间通信方法及计算设备。
背景技术
目前,越来越多的文件管理器(简称“文管”)实现了插件化,例如,Linux 平台上的文件管理器鹦鹉螺可以加载C插件,也可以加载Python脚本插件,通过这种加载插件的方案,可以为文管提供良好的扩展性,实现文管功能的动态扩充。但该方案存在一定风险,由于第三方插件的稳定性无法保证,导致文管在接入插件后,稳定性会受到一定的影响。
例如,现有技术中有一种方案,是通过直接加载动态库插件来实现文管功能的扩展性,直接加载动态库的方式实现较简单,插件只需要继承主框架提供的通用插件基类,并在内部实现自己的具体业务。但,这种方案无法保证动态库内部的稳定性,如果动态库内部发生错误,可能会导致文件管理器发生崩溃。另外,单个进程的方式会导致内存、线程、依赖库等资源过于集中,影响文管主进程的启动效率和运行效率。
基于此,需要一种进程间通信系统及方法,以解决现有技术中存在的问题。
发明内容
为此,本发明提供一种进程间通信系统、进程间通信方法及计算设备,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种进程间通信系统,布置在计算设备的操作系统上,所述进程间通信系统包括:主进程;基于主进程创建的服务进程,所述服务进程适于加载一个或多个插件,并适于接收插件发送的第一接口调用请求;以及代理服务端,分别与所述主进程、服务进程相连,适于:从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口;接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口。
可选地,在根据本发明的进程间通信系统中,所述操作系统上包括文件管理器,所述主进程为文件管理器的主进程。
可选地,在根据本发明的进程间通信系统中,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件;通过调用第一接口适于创建新的界面控件;通过调用第二接口适于处理对界面控件的触发事件。
可选地,在根据本发明的进程间通信系统中,所述主进程适于:接收对界面控件的触发操作事件,响应于所述触发操作事件,向代理服务端发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口来处理所述触发操作事件。
可选地,在根据本发明的进程间通信系统中,所述第一接口信息包括第一目标路径、第一函数名和第一参数值;所述第二接口信息包括第二目标路径、第二函数名和第二参数值。
可选地,在根据本发明的进程间通信系统中,所述主进程适于:基于所述第一目标路径定位到相应的目标界面对象,基于第一函数名来调用所述目标界面对象中相应的第一函数,并将所述第一参数值传入所述第一函数。
可选地,在根据本发明的进程间通信系统中,所述主进程中包括第一映射表,所述主进程进一步适于:基于第一函数名从所述映射表中获取相应的第一函数指针,基于所述第一函数指针来调用第一函数。
可选地,在根据本发明的进程间通信系统中,所述服务进程适于:基于所述第二目标路径定位到相应的目标插件对象,基于第二函数名来调用所述目标插件对象中相应的第二函数,将第参数值传入所述第二函数。
可选地,在根据本发明的进程间通信系统中,所述服务进程中包括第二映射表,所述服务进程进一步适于:基于第二函数名从所述第二映射表中获取相应的第二函数指针,基于所述第二函数指针来调用第二函数。
可选地,在根据本发明的进程间通信系统中,所述代理服务端通过总线与所述主进程、服务进程相连。
可选地,在根据本发明的进程间通信系统中,所述主进程包括第一数据处理模块,所述第一数据处理模块与总线相连;所述服务进程包括第二数据处理模块,所述第二数据处理模块与总线相连。
可选地,在根据本发明的进程间通信系统中,还包括:监控模块,分别与主进程、服务进程相连,适于监控所述服务进程的运行状态,其中,所述监控模块适于获取所述服务进程的终止信号,并将终止信发送至主进程,以便再次基于主进程来创建服务进程。
可选地,在根据本发明的进程间通信系统中,所述服务进程是利用Fork方法基于主进程来创建的子进程。
根据本发明的一个方面,提供一种进程间通信方法,在进程间通信系统中执行,所述方法包括步骤:基于主进程来创建服务进程;通过服务进程加载一个或多个插件,并接收插件发送的第一接口调用请求;通过代理服务端从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口;以及通过代理服务端接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口。
可选地,在根据本发明的进程间通信方法中,所述主进程为文件管理器的主进程。
可选地,在根据本发明的进程间通信方法中,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件;通过调用第一接口适于创建新的界面控件;通过调用第二接口适于处理对界面控件的触发事件。
可选地,在根据本发明的进程间通信方法中,接收主进程发送的第二接口调用请求包括:接收主进程响应于对界面控件的触发操作事件发送的第二接口调用请求。
可选地,在根据本发明的进程间通信方法中,基于主进程来创建服务进程的步骤包括:利用Fork方法,基于主进程创建相应的子进程作为服务进程。
根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的进程间通信方法的指令。
根据本发明的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的进程间通信方法。
根据本发明的技术方案,提供了一种进程间通信系统和方法,文件管理器等应用在启动后可以基于主进程来创建相应的子进程作为服务进程,主进程与服务进程之间相互隔离,并经由代理服务端进行交互,服务进程用于加载第三方插件并接收插件对主进程接口的调用请求,服务进程与主进程的接口调用均经由代理服务端来实现。从而,能实现主进程在与插件隔离的状态下调用插件提供的接口,确保文件管理器等应用使用第三方插件过程中的稳定性。这样,根据本发明的技术方案,在文件管理器等应用基于第三方插件来实现功能扩展的同时,实现了与第三方插件隔离的效果,避免了因第三方插件异常而导致文件管理器运行过程不稳定的问题。另外,主进程与服务进程之间经由代理服务器进行通信,使得主进程与服务进程之间可以共用大部分接口,从而降低了接口开发成本。
进一步地,监控模块可以监控并获取服务进程的终止信号,通过将终止信号发送至主进程,可以再次基于主进程来创建服务进程。这样,能实现服务进程在崩溃终止运行后进行重启,进一步提高了文件管理器等应用的稳定性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的进程间通信系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的文管界面示意图;以及
图4示出了根据本发明一个实施例的进程间通信方法400的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中的文件管理器插件化实现方案中存在的不稳定问题,本发明提出了一种进程间通信方案,可用于文件管理器等应用的进程间的交互。其中,应用的主进程与服务进程之间隔离,并经由代理服务端进行通信,这样,不仅能实现利用第三方插件来扩展应用的功能,而且,能实现与第三方插件隔离的效果,避免因第三方插件异常而导致应用运行过程不稳定。
图1示出了根据本发明一个实施例的进程间通信系统100的示意图。进程间通信系统100布置在计算设备的操作系统上。
如图1所示,进程间通信系统100包括应用的主进程110、基于主进程创建的服务进程120、代理服务端130。其中,主进程110与服务进程120之间相互隔离,并且,主进程110、服务进程120分别与代理服务端130相连,这样,主进程110与服务进程120可以通过代理服务端130进行通信。
根据本发明的实施例,计算设备的操作系统上可以运行一个或多个应用,应用例如包括文件管理器。进程间通信系统100中的主进程110可以是运行在操作系统上的任意一个应用的主进程,例如是文件管理器的主进程。并且,应用在启动后可以基于主进程110来创建相应的子进程作为服务进程120。应用的主进程110与服务进程120之间相互隔离,可以经由代理服务端130进行通信。应当指出,本发明对应用的种类不做限制,本发明的进程间通信系统100可以用于各种类型的应用,以便应用主进程在与第三方插件隔离的状态下使用插件。
根据本发明的一个实施例,操作系统上的应用包括文件管理器,进程间通信系统100中的主进程110可以实现为文件管理器的主进程,使得进程间通信系统100用于文件管理器进程之间的数据交互。文件管理器在启动后,可以利用Fork方法,基于主进程110来创建相应的子进程作为服务进程120,即,服务进程120是利用Fork方法基于主进程110来创建的子进程。并且,文件管理器的主进程110与服务进程120之间经由代理服务端130进行通信。这样,可以在隔离第三方插件的情况下实现文件管理器的插件化,在使用插件过程中能够避免因第三方插件异常而导致文件管理器运行过程不稳定的问题。
下文仅以文件管理器为例来对本发明的进程间通信系统100进行详细描述,但,应当指出,本发明的进程间通信系统100可以用于各种类型的应用进程之间的数据交互。
其中,服务进程120与外部的插件库相连,通过服务进程120可以加载插件库中的一个或多个第三方插件(以下简称“插件”)。这样,本发明通过基于主进程创建的服务进程来加载插件的方式,不仅能实现文件管理器的插件化、扩展文件管理器的功能,而且可以实现一些逻辑的复用,只需要维护一套程序代码。应当指出,本发明不限于插件的具体类型和基于插件实现的文件管理器的扩展功能。
在一个实施例中,代理服务端130、主进程110、服务进程120分别与DBus总线相连,从而代理服务端130可以通过DBus总线与主进程110、服务进程120通信相连。基于代理服务器,可以使主进程110与服务进程120之间可以共用大部分接口,在调用接口过程中才需要使用不同的逻辑,从而降低了接口开发成本。如图1所示,主进程110和服务进程120均包括一个用于实现通信数据处理的模块,其中,主进程110包括与DBus总线相连的第一数据处理模块111,服务进程120包括与DBus总线相连的第二数据处理模块122,这样,主进程110可以通过第一数据处理模块111与DBus总线进行数据交互,服务进程120可以通过第二数据处理模块122与DBus总线进行数据交互。
需要说明的是,第一数据处理模块111、第二数据处理模块122均继承于DBus相关的基类,另外,第一数据处理模块111、第二数据处理模块122均可以实现一个或多个数据处理接口,因继承了DBus的基类,从而可以将这些数据处理接口注册到DBus总线,以便提供给其他进程调用这些数据处理接口。
在一个实施例中,应用包括相应的应用界面,以便用户基于应用界面来与应用进行交互。应用界面上可以包括一个或多个界面控件,用户可以通过操作这些界面控件来触发相应的事件。
在一种实现方式中,文件管理器包括相应的文管界面,以便用户基于文管界面来与文件管理器进行交互。文管界面上可以包括一个或多个界面控件,例如包括左侧边栏、右侧边栏、工具栏中的控件等,用户可以通过操作这些界面控件来触发相应的事件。以下仅以文管界面为例来对界面控件触发事件的处理机制进行详细说明。但,应当指出,文管界面是文件管理器对应的应用界面,当本发明的进程间通信系统100应用于其他应用时,可以相应替换为其他应用的界面。
需要说明的是,根据本发明的技术方案,为了实现文件管理器等应用的插件化、基于插件扩展文件管理器的功能,需要文件管理器(应用端)的主进程向外部提供一些接口,具体可以包括用于实现在文管界面上创建新的界面控件的接口,使得插件可以通过调用该接口实现在文管界面上创建与插件相对应的新的界面控件,例如在文管界面的侧边栏添加新的条目、在工具栏添加新的工具等界面控件。这样,用户便可以通过操作新的界面控件来使用基于插件实现的相应扩展功能。对于插件而言,需要调用文件管理器主进程提供的接口。这里,将主进程提供的接口称作“第一接口”。
另外,在文管界面上创建了与插件实现的扩展功能相对应的界面控件后,用户在需要使用扩展功能而触发相应的界面控件时,文件管理器的主进程会处理对界面控件的触发事件,而具体的扩展功能需要通过插件来实现,基于此,文管的主进程需要将对界面控件的触发事件信息发送至插件内部,通过调用插件内部的接口来处理对界面控件的触发事件。这里,将插件提供的接口称作“第二接口”。
根据本发明的进程间通信系统100,可以实现插件对文件管理器(应用端)主进程提供的第一接口的调用、以及实现文件管理器主进程对插件内的第二接口的调用。
在本发明的实施例中,在基于文件管理器的主进程110创建服务进程120之后,服务进程120可以从插件库加载一个或多个插件。在加载插件后,插件会向服务进程120发送第一接口调用请求,以请求调用文件管理器主进程的第一接口。在一个实施例中,通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。
如前文所述,服务进程120可以通过代理服务端130实现与主进程110通信,基于此,服务进程120在接收到插件发送的第一接口调用请求之后,可以将第一接口调用请求发送至代理服务端130,以便经由代理服务端130与主进程110进行通信,来实现调用主进程的第一接口。具体地,代理服务端130可以从第一接口调用请求中获取第一接口信息,并将第一接口信息打包发送至主进程110,以便主进程110基于第一接口信息来调用文件管理器主进程的第一接口。通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。
在一个实施例中,在通过调用第一接口创建与插件相对应的新的界面控件后,文管界面上显示与一个或多个插件相对应的一个或多个新的界面控件。当用户操作界面上的任意一个界面控件时,文件管理器的主进程110可以接收到用户对界面控件的触发操作事件。如果用户触发的是插件(即第三方插件)通过调用第一接口而创建的新的界面控件,主进程110在接收到用户对界面控件的触发操作事件后,会请求调用与所触发的界面控件相对应的插件内的第二接口。
具体地,基于主进程110可以通过代理服务端130实现与服务进程120通信,主进程110可以响应于用户对界面控件的触发操作事件,向代理服务端130发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口,以便通过调用第二接口来处理对界面控件的触发操作事件。这里,应当指出,这里的界面控件是基于插件创建的,界面控件对应的第二接口是插件提供的用于处理对该界面控件的触发操作事件的事件处理接口。
在本发明的实施例中,代理服务端130在接收到主进程110发送的第二接口调用请求,可以将第二接口调用请求发送至代理服务端130,以便经由代理服务端130与服务进程120进行通信,来实现调用插件中的第二接口。具体地,代理服务端130可以从第二接口调用请求中获取第二接口信息,并将第二接口信息打包发送至服务进程120,以便由服务进程120基于第二接口信息来调用插件提供的第二接口。
在一个实施例中,代理服务端130从第一接口调用请求中获取到的第一接口信息包括第一源路径、第一目标路径、第一函数名和第一参数值,并将获取到的第一目标路径、第一函数名和第一参数值进行打包后通过DBus总线发送至主进程110。这里,第一目标路径是目标界面对象对应的路径,需要说明的是,界面对象是界面控件对应的实例对象,目标界面对象即是插件要创建的新的界面控件对应的界面对象。
主进程110在获取到第一接口信息后,可以基于第一目标路径定位到相应的目标界面对象,并基于第一函数名来调用目标界面对象中相应的第一函数(第一接口对应的函数),在调用第一函数时将第一参数值传入第一函数,从而实现对第一函数的调用,可以获取到第一函数返回的结果。这里,第一函数的执行结果可以是创建了与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。这样,便根据本发明的进程间通信系统100实现了第三方插件调用文件管理器提供的第一接口的过程。
在一个实施例中,代理服务端130从第二接口调用请求中获取到的第二接口信息包括第二源路径、第二目标路径、第二函数名和第二参数值,并将获取到的第二目标路径、第二函数名和第二参数值进行打包后通过DBus总线发送至服务进程120。这里,第二目标路径是目标插件对象对应的路径,需要说明的是,目标插件对象即是用户触发的界面控件对应的插件的实例对象。
服务进程120在获取到第二接口信息后,可以基于第二目标路径定位到相应的目标插件对象,基于第二函数名来调用目标插件对象中的第二函数,在调用第二函数时将第参数值传入所述第二函数,从而实现对第二函数的调用,可以获取第二函数返回的结果。即,通过调用第二函数来实现处理界面控件的触发操作事件。这样,便根据本发明的进程间通信系统100实现了文管主进程在与插件隔离的状态下调用插件提供的第二接口,从而确保文件管理器使用第三方插件过程中的稳定性。
图3示出了根据本发明一个实施例的文管界面示意图。如图3所示,文管界面上的左侧包括侧边栏(Sidebar),其中包括多个侧边栏条目(SidebarItem),例如包括最近使用、主目录、桌面、视频、图片、音乐、文档、下载、回收站、计算机、系统盘、数据盘等条目。
在一种实现方式中,第一接口可以实现为在侧边栏添加条目接口。具体地,当插件需要在文管界面上的侧边栏添加一个条目时,首先查找到服务进程120中的侧边栏Sidebar对象,请求调用Sidebar对象中的添加条目addItem接口,并传入Item的相关参数,参数例如包括条目名称等属性。随后,Sidebar对象根据标志位来判断是否使用代理逻辑,如果标志位为真,则进入代理逻辑,将对addItem接口的调用请求发送至代理服务器120。代理服务器130从接口调用请求中获取源路径、目标路径、函数名、传入参数等接口信息,并将接口信息打包发送至文件管理器的主进程110。主进程110在基于接口信息实现调用相应的添加条目接口之后,可以实现在文管界面上添加一个新的侧边栏条目,用户可以通过点击等方式来操作该新的侧边栏条目。
需要说明的是,通过Sidebar对象可以获取到新添加的SidebarItem对象。SidebarItem对象可以注册一个Handle对象,用于响应并处理对侧边栏条目的触发事件。
当用户操作新添加的侧边栏条目时,主进程110通过Handle对象可以响应于用户对侧边栏条目的触发操作事件,并会判断当前的Fork标志位,如果标志位为真,则向代理服务端130发送对相应的插件的接口的调用请求(第二接口调用请求),以请求调用与侧边栏条目相对应的插件的接口(第二接口)。代理服务端130从接口调用请求中获取源路径、目标路径、函数名、传入参数等接口信息,并将接口信息打包发送至服务进程120。服务进程120在接收到接口信息后,基于接口信息实现调用相应插件的接口,从而实现对侧边栏条目的触发操作事件的处理。
在一种实现方式中,文件管理器的主进程110定义了Map<URL, Object> 类型的成员变量,基于该变量来存储文管界面上的一个或多个界面控件对应的界面对象,从而主进程110可以基于URL路径来定位到相应的界面对象。例如,第一目标路径可以实现为ui:///window/sidebar,相应地,存储在Map中的目标界面对象可以实现为insert( “ui:///window/sidebar”, sidebarObject)。这样,基于第一目标路径可以定位到相应的目标界面对象。
相应地,服务进程120也可以通过Map<URL, Object> 类型的成员变量,来存储一个或多个插件对象,从而服务进程120可以基于URL路径来定位到相应的插件对象。基于第二目标路径可以定位到相应的目标插件对象。
这里,以ui:///window/sidebar为例来对对象的路径进行说明。在ui:///window/sidebar中,“ui”为 sheme字段, sheme根据不同场景进行具体定义,在本发明的实施例中,用 “ui”表示定位界面对象,用 “plugin”表示定位插件对象。另外,“sidebar”用于标识最终的对象名,这里,sidebar 代表文管的侧边栏对象。“window”是“sidebar”的父集合,在URL中,位于左侧的集合包含位于右侧的集合或对象。例如,对于 URL “ui:///window/toolbar/addressbar”,其中addressbar对象属于toolbar集合,而toolbar集合属于window集合。通过URL 的方式可以有效避免查找路径重复的问题,也更直观。
需要说明的是,由于两个进程之间无法直接使用函数进行调用,因此,根据本发明的技术方案,代理服务端130通过发送需要调用的函数的函数名和参数值的形式,来实现对函数的调用。另外,还需要在接收端(主进程、服务进程)基于各自的对象(界面对象、插件对象)中的函数名和函数指针来建立相应的映射表。这样,在接收到代理服务端130发送的调用请求时,在基于目标路径确定目标对象后,可以基于接收到的函数名从映射表中查询到相应的函数指针,基于函数指针调用函数并传入相应的参数值,即可实现对函数的调用。
其中,主进程110基于所存储的每个界面控件对应的界面对象,基于界面对象中的函数的函数名和函数指针来建立相应的第一映射表。在第一映射表中,界面对象中的函数名与函数指针建立了一对一的映射关系。这样,主进程110包括预先建立的第一映射表,在获取到第一接口信息并基于第一目标路径定位到目标界面对象后,可以基于第一函数名从第一映射表中获取相应的第一函数指针,基于第一函数指针来调用第一函数。
服务进程120基于所存储的每个插件对象中的函数的函数名和函数指针来建立相应的第二映射表。在第二映射表中,插件对象中的函数名与函数指针建立了一对一的映射关系。这样,服务进程120包括预先建立的第二映射表,在获取到第二接口信息并基于第二目标路径定位到目标插件对象后,可以基于第二函数名从第二映射表中获取相应的第二函数指针,基于第二函数指针来调用第二函数。
根据一个实施例,进程间通信系统还包括监控模块150,监控模块150分别与主进程110、服务进程120相连,适于监控服务进程120的运行状态,获取服务进程120的信号。当服务进程120发生异常而崩溃时,监控模块150可以获取到服务进程120的终止信号,并将终止信号发送至主进程110,以便再次基于主进程来创建服务进程。这样,能实现服务进程在崩溃终止运行后进行重启,进一步提高了文件管理器等应用的稳定性。
根据本发明的进程间通信系统100,文件管理器等应用在启动后可以基于主进程来创建相应的子进程作为服务进程,主进程与服务进程之间相互隔离,并经由代理服务端进行交互,服务进程用于加载第三方插件并接收插件对主进程接口的调用请求,服务进程与主进程的接口调用均经由代理服务端来实现。从而,能实现主进程在与插件隔离的状态下调用插件提供的接口,确保文件管理器等应用使用第三方插件过程中的稳定性。这样,根据本发明的技术方案,在文件管理器等应用基于第三方插件来实现功能扩展的同时,实现了与第三方插件隔离的效果,避免了因第三方插件异常而导致文件管理器运行过程不稳定的问题。另外,主进程与服务进程之间经由代理服务器进行通信,使得主进程与服务进程之间可以共用大部分接口,从而降低了接口开发成本。
图2示出了根据本发明一个实施例的计算设备200的示意图。
如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238。
计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的进程间通信方法400。计算设备100的操作系统上包含用于执行本发明的进程间通信方法400的多条程序指令,使得本发明的进程间通信方法400可以在计算设备100的操作系统中执行。
根据本发明的一个实施例,计算设备200中驻留有进程间通信系统100,进程间通信系统100布置在计算设备200的操作系统上。进程间通信系统100包括执行进程间通信方法400的多条程序指令,这些程序指令可以指示处理器204执行本发明的进程间通信方法400,使得本发明的进程间通信方法400可以在进程间通信系统100中执行。
在根据本发明的实施例中,计算设备200的操作系统上可以运行一个或多个应用,其中可以包括文件管理器。进程间通信系统100包括应用的主进程110、基于主进程创建的服务进程120、代理服务端130。其中,主进程110与服务进程120之间相互隔离,并且,主进程110、服务进程120分别与代理服务端130相连,这样,主进程110与服务进程120可以通过代理服务端130进行通信。进程间通信系统100中的主进程110可以是运行在操作系统上的任意一个应用的主进程。
在一个实施例中,主进程110可以实现为文件管理器的主进程,使得本发明的进程间通信方法400可用于文件管理器进程之间的数据交互。
图4示出了根据本发明一个实施例的进程间通信方法400的流程图。方法400适于在进程间通信系统100中执行。
如图4所示,方法400始于步骤S410。
在步骤S410中,基于主进程110来创建服务进程。这里,应用(例如文件管理器)在启动后,可以利用Fork方法,基于主进程110来创建相应的子进程作为服务进程120。
随后,在步骤S420中,通过服务进程120从外部的插件库加载一个或多个插件,随后接收插件发送的第一接口调用请求。
随后,在步骤S420中,通过代理服务端130从服务进程获取第一接口调用请求,从第一接口调用请求中获取第一接口信息,并将第一接口信息发送至主进程,以便主进程110基于第一接口信息来调用主进程的第一接口。
最后,在步骤S440中,通过代理服务端130接收主进程发送的第二接口调用请求,从第二接口调用请求中获取第二接口信息,并将第二接口信息发送至服务进程,以便服务进程120基于第二接口信息来调用插件的第二接口。
在一种实现方式中,文件管理器包括相应的文管界面,以便用户基于文管界面来与文件管理器进行交互。文管界面上可以包括一个或多个界面控件,例如包括左侧边栏、右侧边栏、工具栏中的控件等,用户可以通过操作这些界面控件来触发相应的事件。
在一个实施例中,通过调用第一接口可以创建与插件相对应的新的界面控件,并将新的界面控件显示在文管界面上。通过调用第二接口可以处理用户对界面控件的触发操作事件。
具体地,主进程110可以响应于用户对界面控件的触发操作事件,向代理服务端130发送第二接口调用请求,以请求调用与界面控件相对应的第二接口,以便通过调用第二接口来处理对界面控件的触发操作事件。应当指出,这里的界面控件可以是基于插件创建的,界面控件对应的第二接口是插件提供的用于处理对该界面控件的触发操作事件的事件处理接口。
代理服务端130可以接收到主进程响应于对界面控件的触发操作事件发送的第二接口调用请求。随后,代理服务端130可以将第二接口调用请求发送至代理服务端130,以便经由代理服务端130与服务进程120进行通信,来实现调用插件中的第二接口。具体地,代理服务端130可以从第二接口调用请求中获取第二接口信息,并将第二接口信息打包发送至服务进程120,以便由服务进程120基于第二接口信息来调用插件提供的第二接口。
应当指出,在步骤S410~S440中,主进程110、服务进程120和代理服务端130之间的具体通信逻辑和实现方式参见前文对进程间通信系统100的具体描述,这里不再重复描述。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的进程间通信方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (8)

1.一种进程间通信系统,布置在计算设备的操作系统上,所述操作系统上包括文件管理器,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件,所述进程间通信系统包括:
文件管理器的主进程;
基于主进程创建的服务进程,所述服务进程适于加载一个或多个插件,并适于接收插件发送的第一接口调用请求;以及
代理服务端,分别与所述主进程、服务进程相连,适于:
从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口,以通过所述第一接口创建新的界面控件;
接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口,以通过所述第二接口处理对界面控件的触发事件。
2.如权利要求1所述的系统,其中,所述主进程适于:
接收对界面控件的触发操作事件,响应于所述触发操作事件,向代理服务端发送第二接口调用请求,以请求调用与所述界面控件相对应的第二接口来处理所述触发操作事件。
3.如权利要求2所述的系统,其中,
所述第一接口信息包括第一目标路径、第一函数名和第一参数值;
所述第二接口信息包括第二目标路径、第二函数名和第二参数值。
4.如权利要求3所述的系统,其中,所述主进程适于:
基于所述第一目标路径定位到相应的目标界面对象,基于第一函数名来调用所述目标界面对象中相应的第一函数,并将所述第一参数值传入所述第一函数。
5.如权利要求1-4中任一项所述的系统,其中,还包括:
监控模块,分别与主进程、服务进程相连,适于监控所述服务进程的运行状态,其中,所述监控模块适于获取所述服务进程的终止信号,并将终止信发送至主进程,以便再次基于主进程来创建服务进程。
6.一种进程间通信方法,在进程间通信系统中执行,所述进程间通信系统布置在计算设备的操作系统上,所述操作系统上包括文件管理器,所述文件管理器包括相应的文管界面,所述文管界面上包括一个或多个界面控件,所述方法包括步骤:
基于文件管理器的主进程来创建服务进程;
通过服务进程加载一个或多个插件,并接收插件发送的第一接口调用请求;
通过代理服务端从服务进程获取第一接口调用请求,从所述第一接口调用请求中获取第一接口信息,并将所述第一接口信息发送至所述主进程,以便所述主进程基于所述第一接口信息来调用主进程的第一接口,以通过所述第一接口创建新的界面控件;以及
通过代理服务端接收主进程发送的第二接口调用请求,从所述第二接口调用请求中获取第二接口信息,并将所述第二接口信息发送至服务进程,以便所述服务进程基于所述第二接口信息来调用插件的第二接口,以通过所述第二接口处理对界面控件的触发事件。
7.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求6所述的方法的指令。
8.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求6所述方法。
CN202111000685.6A 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备 Active CN113448756B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111287820.XA CN114020490A (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备
CN202111000685.6A CN113448756B (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111000685.6A CN113448756B (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111287820.XA Division CN114020490A (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备

Publications (2)

Publication Number Publication Date
CN113448756A CN113448756A (zh) 2021-09-28
CN113448756B true CN113448756B (zh) 2021-12-07

Family

ID=77818900

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111287820.XA Pending CN114020490A (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备
CN202111000685.6A Active CN113448756B (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111287820.XA Pending CN114020490A (zh) 2021-08-30 2021-08-30 一种进程间通信系统、方法及计算设备

Country Status (1)

Country Link
CN (2) CN114020490A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117480768A (zh) * 2021-12-06 2024-01-30 华为技术有限公司 通信装置及报文传输方法
CN115037612B (zh) * 2022-03-10 2024-03-26 广东统信软件有限公司 一种服务器配置方法、计算设备及存储介质
CN115114120B (zh) * 2022-08-29 2022-11-04 统信软件技术有限公司 进程异常监控方法和装置、计算设备和可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663318A (zh) * 2012-03-22 2012-09-12 百度在线网络技术(北京)有限公司 浏览器及客户端
CN104216738A (zh) * 2014-08-20 2014-12-17 北京奇艺世纪科技有限公司 一种应用程序的运行方法及装置
CN105912366A (zh) * 2016-04-14 2016-08-31 广州市久邦数码科技有限公司 一种桌面应用程序插件化的实现方法
CN108959062A (zh) * 2017-05-22 2018-12-07 腾讯科技(深圳)有限公司 网页元素获取方法及装置
CN111176752A (zh) * 2019-12-20 2020-05-19 汪佐怀 一种浏览器页面内嵌窗口小程序的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565641B2 (en) * 2005-06-24 2009-07-21 Microsoft Corporation Securely providing extensible third-party plug-ins

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663318A (zh) * 2012-03-22 2012-09-12 百度在线网络技术(北京)有限公司 浏览器及客户端
CN104216738A (zh) * 2014-08-20 2014-12-17 北京奇艺世纪科技有限公司 一种应用程序的运行方法及装置
CN105912366A (zh) * 2016-04-14 2016-08-31 广州市久邦数码科技有限公司 一种桌面应用程序插件化的实现方法
CN108959062A (zh) * 2017-05-22 2018-12-07 腾讯科技(深圳)有限公司 网页元素获取方法及装置
CN111176752A (zh) * 2019-12-20 2020-05-19 汪佐怀 一种浏览器页面内嵌窗口小程序的方法及装置

Also Published As

Publication number Publication date
CN113448756A (zh) 2021-09-28
CN114020490A (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
CN113448756B (zh) 一种进程间通信系统、方法及计算设备
CN108055248B (zh) 基于dubbo框架的远程调用方法、服务器及存储介质
CN108170740B (zh) 数据迁移方法、系统和计算机可读存储介质
CN111614738B (zh) 基于Kubernetes集群的服务访问方法、装置、设备及存储介质
WO2019104973A1 (zh) 跨语言调用方法、服务器及存储介质
JP5052568B2 (ja) ネットワーク内の装置を管理するための方法、システム、およびプログラム
CN111290806B (zh) 应用程序接口的调用方法、装置、计算机设备及存储介质
CN110647316B (zh) 通用业务对象的生成方法、装置、计算机设备及存储介质
CN109669787B (zh) 数据传输方法及装置、存储介质、电子设备
JP7048663B2 (ja) コード実行方法、装置、レンダリングデバイス、記憶媒体、及びプログラム
CN113761412A (zh) 应用页面的显示方法、装置、电子设备、介质及应用系统
US12014170B2 (en) Mini program batch processing method and apparatus, electronic device, and readable storage medium
CN113709246B (zh) 一种网络代理方法、计算设备及可读存储介质
CN114443076A (zh) 镜像构建方法、装置、设备及存储介质
US11379201B2 (en) Wrapping method, registration method, device, and rendering apparatus
CN113760318A (zh) 信息处理方法、装置、服务器及存储介质
CN114584618A (zh) 信息交互方法、装置、设备、存储介质和系统
WO2023273028A1 (zh) 事务处理方法及相关产品
WO2021243665A1 (zh) 编译方法、编译装置、编译系统、存储介质与电子设备
CN113515299A (zh) 软件开发工具包sdk热升级方法、装置、设备及存储介质
CN114168937A (zh) 一种资源访问方法、计算设备及可读存储介质
CN114510334A (zh) 类实例的调用方法、装置、电子设备及自动驾驶车辆
CN112988686A (zh) 插件处理方法、装置、设备和存储介质
CN113452532A (zh) 一种网络通信方法、计算设备及可读存储介质
CN112579129A (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