CN107402782A - 一种用于在直播软件中加载插件的方法及装置 - Google Patents
一种用于在直播软件中加载插件的方法及装置 Download PDFInfo
- Publication number
- CN107402782A CN107402782A CN201710524053.7A CN201710524053A CN107402782A CN 107402782 A CN107402782 A CN 107402782A CN 201710524053 A CN201710524053 A CN 201710524053A CN 107402782 A CN107402782 A CN 107402782A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- main program
- target
- loading
- 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
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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
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
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于在直播软件中加载插件的方法及装置。
背景技术
随着计算机技术的发展,电子设备的应用也越来越广泛,电子设备上的应用程序也越来越多,而随着用户对应用程序功能的需求的变化,应用程序的更新变动也较为频繁,当应用程序发生变化时,用户则需要重新下载新的应用程序,这样增加了系统的资源消耗。
为了解决上述问题,采用在应用程序中加载插件的方法,来实现应用程序的更新,但是由于插件对运行环境的要求较高,当运行环境不稳定时,插件容易发生崩溃,而该插件已加载至应用程序中,从而导致应用程序的崩溃。
由此可知,现有技术中加载插件的方法存在稳定性较差的技术问题。
发明内容
本发明实施例提供了一种用于在直播软件中加载插件的方法及装置,用以解决现有技术中加载插件的方法存在稳定性较差的技术问题。
第一方面,本发明提供了一种用于在直播软件中加载插件的方法,包括:
基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
通过所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
将所述插件加载进程作为协议连接的客户端,所述主进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
基于同样的发明构思,本发明第二方面提供了一种用于在直播软件中加载插件的方法,包括:
基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
可选地,在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,所述方法还包括:调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
可选地,所述基于所述路径,使所述主程序进程调用所述目标插件包括:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用。
可选地,在所述将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用之前,所述方法还包括:
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主进程。
可选地,若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,所述方法还包括:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
基于同样的发明构思,本发明第三方面提供了一种用于在直播软件中加载插件的装置,包括:
获取模块,用于基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
创建模块,用于通过与所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
连接模块,用于将所述插件加载进程作为协议连接的客户端,所述主进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
基于同样的发明构思,本发明第四方面提供了一种用于在直播软件中加载插件的装置,包括:
获取模块,用于基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建模块,用于创建插件加载进程;
连接模块,用于在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
可选的,本发明提供的用于在直播软件中加载插件的装置,还包括调用模块,用于在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
可选的,本发明提供的用于在直播软件中加载插件的装置,所述调用模块还用于:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用。
可选的,本发明提供的用于在直播软件中加载插件的装置,还包括判断模块,用于在所述将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用之前,
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主进程。
可选的,本发明提供的用于在直播软件中加载插件的装置,还包括处理模块,用于若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
基于同样的发明构思,本发明第五方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
基于同样的发明构思,本发明第六方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明实施例的方法,通过基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件,创建插件加载进程,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接,将所述目标插件加载至所述插件加载进程中,并基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。由于本发明的方法,获取的待加载至主程序进程中的目标插件不是直接加载到主程序进程中,而是加载到创建的插件加载进程中,并通过插件加载进程与主程序进程之间远程过程调用协议连接,来实现主程序进程对目标插件的加载,即目标插件是加载到插件加载进程中,而不是直接加载到主程序进程中,由于不同的进程采用的内存地址空间不同,因而目标插件的内存地址空间与主程序进程的内存地址空间不同,从而目标插件与主程序进程可以独立运行,进而两者之间不会相互影响,故而可以提高在主程序进程加载插件的稳定性,相对于现有技术直接将目标插件加载到主程序进程中而言,可以降低目标插件对主程序进程的影响,避免由于目标插件不稳定而导致的主程序进程崩溃,解决了现有技术中加载插件的方法存在稳定性较差的技术问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种用于在直播软件中加载插件的方法的流程图;
图2为本发明实施例中另一种用于在直播软件中加载插件的方法的流程图;
图3为本发明实施例中一种用于在直播软件中加载插件的装置的结构示意图;
图4为本发明实施例中另一种用于在直播软件中加载插件的装置的结构示意图;
图5为本发明实施例中一种计算机可读存储介质的结构示意图
图6为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
本申请实施例通过提供用于在直播软件中加载插件的方法及装置,用以解决现有技术中加载插件的方法存在稳定性较差的技术问题。
本申请实施例中的技术方案,总体思路如下:
一种用于在直播软件中加载插件的方法,包括:基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;创建插件加载进程;在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;将所述目标插件加载至所述插件加载进程中;基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
由于本发明的上述方法,获取的待加载至主程序进程中的目标插件不是直接加载到主程序进程中,而是加载到创建的插件加载进程中,并通过插件加载进程与主程序进程之间远程过程调用协议连接,来实现主程序进程对目标插件的加载,即目标插件是加载到插件加载进程中,而不是直接加载到主程序进程中,由于不同的进程采用的内存地址空间不同,因而目标插件的内存地址空间与主程序进程的内存地址空间不同,从而目标插件与主程序进程可以独立运行,进而两者之间不会相互影响,故而可以提高在主程序进程加载插件的稳定性,相对于现有技术直接将目标插件加载到主程序进程中而言,可以降低目标插件对主程序进程的影响,避免由于目标插件不稳定而导致的主程序进程崩溃,解决了现有技术中加载插件的方法存在稳定性较差的技术问题。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供一种用于在直播软件中加载插件的方法,如图1所示,该方法包括:
步骤S101:基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
步骤S102:创建插件加载进程;
步骤S103:在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
步骤S104:将所述目标插件加载至所述插件加载进程中;
步骤S105:基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
需要说明的是,上述直播软件是用于提供直播业务的应用程序,本发明提供的在直播软件中加载插件的方法应用于Windows系统中。
下面,结合图1详细介绍本申请实施例提供的用于在直播软件中加载插件的方法的实施步骤。
首先,执行步骤S101,基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件。
具体来说,首先需要获取待加载目标插件,具体来说上述目标插件为直播软件插件。一般来说,所有的插件都会保存到一定的目录中,则可以将插件的保存目录作为预设目录,然后从预设目录中查找目标插件。作为优选,本实施还包括从所有的插件中筛选出目标插件,可以首先从所有插件中筛选出合法的插件,然后再判断合法的插件是否直播软件类型的插件。
然后执行步骤S102,创建插件加载进程。
在具体的实施过程中,可以通过上述直播软件主程调用插件抓取函数,然后通过插件抓取函数调用系统接口来创建插件加载进程,上述插件抓取函数可以为OpenPluginCapture,然后OpenPluginCapture函数内部调用系统的创建进程接口CreateProcess,从而可以创建一个插件加载进程,即PluginLoader进程。
接下来执行步骤S103,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接。
具体来说,RPC(Remote Procedure Call),即远程过程调用协议连接,是一种用于进程间通信的机制,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP(Transmission Control Protocol传输控制协议)或UDP(User Datagram Protocol用户数据报协议),为通信程序之间携带信息数据。在具体的实施过程中,可以将直播软件主程序进程作为RPC服务器,插件加载进程作为RPC客户端,然后通过RPC机制,建立起两个进程间的通信通道。
接下来执行步骤S104,将所述目标插件加载至所述插件加载进程中。
具体来说,由于前述已经创建了插件加载进程,则可以通过插件加载进程来加载目标插件。
最后执行步骤S105,基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
具体来说,由于本发明提供的方法最终是为了将目标插件加载至直播软件中,更为具体地是直播软件对应的主程序进程中,因此,需要通过远程过程调用协议连接,使主程序进程实现对目标插件的加载。本发明申请人通过长期的实践发现,直接将插件加载到主程序进程的方法中,插件与主程序进程运行在同一个进程地址空间中,插件的运行情况直接影响到主程序进程的运行,然而插件对运行环境的要求较高,如果运行环境不稳定,则容易出现崩溃,从而导致主程序进程的崩溃,故而上述加载方法存在稳定性较差的技术问题。本发明实施例为了解决上述稳定较差的技术问题,则采用了首先将目标插件加载至插件加载进程中,然后基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载的方法,由于不同的进程采用的内存地址空间不同,因而目标插件的内存地址空间与主程序进程的内存地址空间不同,从而目标插件与主程序进程可以独立运行,进而两者之间不会相互影响,故而可以提高用于在直播软件中加载插件的稳定性。
可选地,在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,所述方法还包括:调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
具体来说,本发明实施例中在直播软件中加载插件,是为了实现插件的功能,因此需要调用插件。在具体的实施过程中,由于目标插件不是直接加载到主程序进程中,因而主程序进程无法调用目标插件,因此需要通过远程过程调用协议连接来调用,具体地,可以通过将目标插件的功能函数注册到所述远程过程调用协议连接的路径中,然后通过上述路径时主程序进程调用所述目标插件。例如,可以通过调用RPC API的插件注册函数RpcRegisterProcedure将目标插件的功能函数进行注册,上述功能函数包括但不限于下述函数:插件打开函数Open、获取参数函数GetParameters、读取图像函数ReadVideo、读取音频函数ReadAudio、销毁函数Destroy等。
具体地,所述基于所述路径,使所述主程序进程调用所述目标插件包括:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主程序进程,使所述主程序进程实现对所述目标插件的调用。
在具体的实施过程中,如果目标插件的功能是获取音频,则需要通过RPC首先调用,然后调用获取参数函数GetParameters,然后调用读取音频函数ReadAudio,获取音频内容,然后通过RPC将音频的内容发送至主程序进程。
为了提高直播软件加载插件的性能,在所述将所述目标插件的内容发送至所述主程序进程,使所述主程序进程实现对所述目标插件的调用之前,所述方法还包括:
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主程序进程。
具体来说,由于通过RPC调用目标插件的插件功能函数后,需将RPC获取的插件内容发送至主程序进程中,但是如果插件内容包括图像信息,而图像信息的容量一般较大,则需要传送的字节量也非常大,从而影响直播软件加载插件的性能。因此,本发明实施例通过创建共享内存的方式来提高加载的性能,这样插件加载进程和主程序进程之间的数据传送可以通过共享内存来实现,减少了系统的代价,提高了插件加载的性能。
进一步地,若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,所述方法还包括:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
在具体的实施过程中,如果插件内容包括图像信息,则在插件加载进程中,将插件的内容保存至共享内存中,具体而言,是将图像绘制到共享内存,插件加载进程可以在共享内存区域进行写操作,而主程序进程在该共享内存区域进行读操作。这样省去了数据通过RPC的传输过程,使得运行效率比较高效。具体来说,可以通过插件加载进程中通过调用系统的创建内存映射函数CreateFileMapping创建一个共享内存,并通过文件映射对象视图函数MapViewOfFile来获取共享内存中的数据。
具体来说,上述已经创建插件加载进程与主程序进程进行图像共享的共享内存区域,接下来详细介绍两个进程之间通过RPC的数据通信过程。当主程序进程需要调用获取图像函数ReadVideo时,首先主程序进程会调用RpcCallProcedure函数,并通过RpcCallProcedure函数调用插件加载进程PluginLoader的ReadVideo函数,此时主程序进程被阻塞,直到收到来自PluginLoader进程的完成消息时,才被唤醒。而PluginLoader将图像内容绘制完成后,将图像内容拷贝到共享内存区域中。然后插件加载进程调用RpcCompleteProcedureCall函数通知主程序进程ReadVideo函数操作完成,此时主程序进程被唤醒。主程序进程调用MapViewOfFile将共享内存中的图像内容进行显示。从而实现在独立于插件加载进程的直播软件主程序进程中实现插件的功能。
可选地,当要关闭某个插件时,可以通过RpcCallProcedure函数调用PluginLoader进程中的Destroy函数,从而使PluginLoader进程结束运行。
基于同一发明构思,本申请还提供了另一种用于在直播软件中加载插件的方法,详见实施例二。
实施例二
本实施例提供了一种用于在直播软件中加载插件的方法,请参见图2,该方法包括:
步骤S201:基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
步骤S202:通过所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
步骤S203:将所述插件加载进程作为协议连接的客户端,所述主进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
步骤S204:将所述目标插件加载至所述插件加载进程中;
步骤S205:基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
由于上述用于在直播软件中加载插件的方法的相关步骤在实施例一种已作出相关的解释与说明,故在此不再赘述。
基于同一发明构思,本申请还提供了与实施例一用于在直播软件中加载插件的方法对应的装置,详见实施例三。
实施例三
本实施例提供了一种用于在直播软件中加载插件的装置,请参见图3,该装置包括:
获取模块301,用于基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建模块302,用于创建插件加载进程;
连接模块303,用于在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块304,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块305,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
本实施例提供的用于在直播软件中加载插件的装置中,还包括调用模块,用于在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,所述方法还包括:调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
本实施例提供的用于在直播软件中加载插件的装置中,所述调用模块还用于:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用。
本实施例提供的用于在直播软件中加载插件的装置中,还包括判断模块,用于在所述将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用之前,
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主进程。
本实施例提供的用于在直播软件中加载插件的装置中,还包括处理模块,用于若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
基于同一发明构思,本申请还提供了与实施例二用于在直播软件中加载插件的方法对应的装置,详见实施例四。
实施例四
本实施例提供了一种用于在直播软件中加载插件的装置,请参见图4,该装置包括:
获取模块401,用于基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
创建模块402,用于通过与所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
连接模块403,用于将所述插件加载进程作为协议连接的客户端,所述主进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块404,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块405,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
基于同一发明构思,本申请还提供了与实施例一用于在直播软件中加载插件的方法对应的计算机可读介质,详见实施例五。
实施例五
请参见图5,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该程序511被处理器执行时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
可选的,上述计算机可读存储介质500在执行所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,还执行下述步骤:
调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
可选的,上述计算机可读存储介质500还执行下述步骤:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用。
可选的,上述计算机可读存储介质500在执行所述将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用步骤之前,还执行下述步骤:
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主进程。
可选的,上述计算机可读存储介质500在执行若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,还执行下述步骤:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
基于同一发明构思,本申请还提供了与实施例一用于在直播软件中加载插件的方法对应的计算机设备,详见实施例六。
实施例六
请参见图6,本实施例提供了一种计算机设备,包括存储器601、处理器602及存储在存储器上并可在处理器上运行的计算机程序603,所述处理器602执行所述程序603时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
可选的,上述计算机设备在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,还执行下述步骤:调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
进一步的,上述计算机设备中,在所述处理器602执行基于所述路径,使所述主程序进程调用所述目标插件包括时,可以通过下述步骤实现:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用。
可选的,上述计算机设备在执行将所述目标插件的内容发送至所述主进程,使所述主进程实现对所述目标插件的调用之前,还执行下述步骤:
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主进程。
可选的,上述计算机设备,在执行若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,还执行下述步骤:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。存储器601可用于存储计算机程序603,上述计算机程序包括软件程序、模块和数据,处理器602通过运行执行存储在存储器601的计算机程序603,从而执行计算机设备的各种功能应用以及数据处理。
在具体的实施过程中,存储器601可用于存储软件程序以及模块,处理器602通过运行存储在存储器601的软件程序以及模块,从而执行计算机设备的各种功能应用以及数据处理。存储器601可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器602是计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器601内的软件程序和/或模块,以及调用存储在存储器601内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器602可包括一个或多个处理单元;优选的,处理器602可集成应用处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:
本发明实施例的方法,通过基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件,创建插件加载进程,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接,将所述目标插件加载至所述插件加载进程中,并基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。由于本发明的方法,获取的待加载至主程序进程中的目标插件不是直接加载到主程序进程中,而是加载到创建的插件加载进程中,并通过插件加载进程与主程序进程之间远程过程调用协议连接,来实现主程序进程对目标插件的加载,即目标插件是加载到插件加载进程中,而不是直接加载到主程序进程中,由于不同的进程采用的内存地址空间不同,因而目标插件的内存地址空间与主程序进程的内存地址空间不同,从而目标插件与主程序进程可以独立运行,进而两者之间不会相互影响,故而可以提高在主程序进程加载插件的稳定性,相对于现有技术直接将目标插件加载到主程序进程中而言,可以降低目标插件对主程序进程的影响,避免由于目标插件不稳定而导致的主程序进程崩溃,解决了现有技术中加载插件的方法存在稳定性较差的技术问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种用于在直播软件中加载插件的方法,其特征在于,包括:
基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
通过所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
将所述插件加载进程作为协议连接的客户端,所述主程序进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
2.一种用于在直播软件中加载插件的方法,其特征在于,包括:
基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
3.如权利要求2所述的方法,其特征在于,在所述基于所述远程过程调用协议连接,实现所述主程序进程对加载至所述插件加载进程中的所述目标插件的加载之后,所述方法还包括:调用所述目标插件,使所述主程序进程实现所述目标插件的功能;
所述调用所述目标插件,使所述主程序进程实现所述目标插件的功能,包括:
将所述目标插件的功能函数注册到所述远程过程调用协议连接的路径中;
基于所述路径,使所述主程序进程调用所述目标插件。
4.如权利要求3所述的方法,其特征在于,所述基于所述路径,使所述主程序进程调用所述目标插件包括:
基于所述路径,调用所述目标插件的功能函数,获得所述目标插件的内容;
将所述目标插件的内容发送至所述主程序进程,使所述主程序进程实现对所述目标插件的调用。
5.如权利要求4所述的方法,其特征在于,在所述将所述目标插件的内容发送至所述主程序进程,使所述主程序进程实现对所述目标插件的调用之前,所述方法还包括:
判断所述目标插件的内容是否包含图像信息;
若所述目标插件的内容包含图像信息,则在所述插件加载进程和所述主程序进程之间创建共享内存;
若所述目标插件的内容不包含图像信息,则将所述目标插件的内容发送至所述主程序进程。
6.如权利要求5所述的方法,其特征在于,若所述目标插件的内容包括图像信息,在所述在所述插件加载进程和所述主程序进程之间创建共享内存之后,所述方法还包括:
将所述目标插件的内容存储至所述共享内存中;
基于所述远程过程调用协议连接,使所述主程序读取所述共享内存中的目标插件的内容。
7.一种用于在直播软件中加载插件的装置,其特征在于,包括:
获取模块,用于基于预设目录获取待加载至与所述直播软件对应的主程序进程中的目标插件;
创建模块,用于通过与所述主程序进程调用插件抓取函数,并通过所述插件抓取函数调用系统接口创建插件加载进程;
连接模块,用于将所述插件加载进程作为协议连接的客户端,所述主程序进程作为协议连接的服务端,在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
8.一种用于在直播软件中加载插件的装置,其特征在于,包括:
获取模块,用于基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建模块,用于创建插件加载进程;
连接模块,用于在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
第一加载模块,用于将所述目标插件加载至所述插件加载进程中;
第二加载模块,用于基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
基于预设目录获取待加载至所述直播软件对应的主程序进程中的目标插件;
创建插件加载进程;
在所述插件加载进程和与所述主程序进程之间建立远程过程调用协议连接;
将所述目标插件加载至所述插件加载进程中;
基于所述远程过程调用协议连接,使所述主程序进程实现对加载至所述插件加载进程中的所述目标插件的加载。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524053.7A CN107402782A (zh) | 2017-06-30 | 2017-06-30 | 一种用于在直播软件中加载插件的方法及装置 |
PCT/CN2018/082304 WO2019001078A1 (zh) | 2017-06-30 | 2018-04-09 | 一种用于在直播软件中加载插件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710524053.7A CN107402782A (zh) | 2017-06-30 | 2017-06-30 | 一种用于在直播软件中加载插件的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107402782A true CN107402782A (zh) | 2017-11-28 |
Family
ID=60405163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710524053.7A Pending CN107402782A (zh) | 2017-06-30 | 2017-06-30 | 一种用于在直播软件中加载插件的方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107402782A (zh) |
WO (1) | WO2019001078A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019001078A1 (zh) * | 2017-06-30 | 2019-01-03 | 武汉斗鱼网络科技有限公司 | 一种用于在直播软件中加载插件的方法及装置 |
CN110708366A (zh) * | 2019-09-24 | 2020-01-17 | 深圳市迅雷网络技术有限公司 | 一种插件进程的管理方法及相关方法和相关装置 |
CN110851193A (zh) * | 2018-08-01 | 2020-02-28 | 深圳市理邦精密仪器股份有限公司 | 监护设备软件平台插件加载方法、插件运行系统及监护仪 |
CN111209056A (zh) * | 2020-01-02 | 2020-05-29 | 北京东土科技股份有限公司 | 功能函数的加载方法、装置、可读存储介质及电子设备 |
CN113448582A (zh) * | 2021-08-27 | 2021-09-28 | 统信软件技术有限公司 | 一种窗口显示方法、计算设备及存储介质 |
CN113778558A (zh) * | 2021-09-15 | 2021-12-10 | 北京快来文化传播集团有限公司 | 基于插件的直播软件扩展方法、设备和存储介质 |
CN117076159A (zh) * | 2023-10-10 | 2023-11-17 | 统信软件技术有限公司 | 插件调用方法及装置、电子设备、计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081709A (zh) * | 2009-12-01 | 2011-06-01 | 联想(北京)有限公司 | 一种浏览器插件的禁用方法、装置和终端 |
CN102104628A (zh) * | 2010-12-29 | 2011-06-22 | 北京新媒传信科技有限公司 | 一种服务器集群系统及其管理方法 |
CN102222213A (zh) * | 2010-07-29 | 2011-10-19 | 郑文明 | 一种基于开放式Web Service架构的分布式视觉计算方法 |
CN102436507A (zh) * | 2011-12-28 | 2012-05-02 | 奇智软件(北京)有限公司 | 一种浏览网页的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005008440A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for common storage object model |
CN102426537B (zh) * | 2011-11-02 | 2014-07-02 | 北京数码大方科技股份有限公司 | Cad中外部集成进程调用主程序进程的方法及装置 |
CN107402782A (zh) * | 2017-06-30 | 2017-11-28 | 武汉斗鱼网络科技有限公司 | 一种用于在直播软件中加载插件的方法及装置 |
-
2017
- 2017-06-30 CN CN201710524053.7A patent/CN107402782A/zh active Pending
-
2018
- 2018-04-09 WO PCT/CN2018/082304 patent/WO2019001078A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102081709A (zh) * | 2009-12-01 | 2011-06-01 | 联想(北京)有限公司 | 一种浏览器插件的禁用方法、装置和终端 |
CN102222213A (zh) * | 2010-07-29 | 2011-10-19 | 郑文明 | 一种基于开放式Web Service架构的分布式视觉计算方法 |
CN102104628A (zh) * | 2010-12-29 | 2011-06-22 | 北京新媒传信科技有限公司 | 一种服务器集群系统及其管理方法 |
CN102436507A (zh) * | 2011-12-28 | 2012-05-02 | 奇智软件(北京)有限公司 | 一种浏览网页的方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019001078A1 (zh) * | 2017-06-30 | 2019-01-03 | 武汉斗鱼网络科技有限公司 | 一种用于在直播软件中加载插件的方法及装置 |
CN110851193A (zh) * | 2018-08-01 | 2020-02-28 | 深圳市理邦精密仪器股份有限公司 | 监护设备软件平台插件加载方法、插件运行系统及监护仪 |
CN110708366A (zh) * | 2019-09-24 | 2020-01-17 | 深圳市迅雷网络技术有限公司 | 一种插件进程的管理方法及相关方法和相关装置 |
CN111209056A (zh) * | 2020-01-02 | 2020-05-29 | 北京东土科技股份有限公司 | 功能函数的加载方法、装置、可读存储介质及电子设备 |
CN113448582A (zh) * | 2021-08-27 | 2021-09-28 | 统信软件技术有限公司 | 一种窗口显示方法、计算设备及存储介质 |
CN113448582B (zh) * | 2021-08-27 | 2021-12-07 | 统信软件技术有限公司 | 一种窗口显示方法、计算设备及存储介质 |
CN113778558A (zh) * | 2021-09-15 | 2021-12-10 | 北京快来文化传播集团有限公司 | 基于插件的直播软件扩展方法、设备和存储介质 |
CN117076159A (zh) * | 2023-10-10 | 2023-11-17 | 统信软件技术有限公司 | 插件调用方法及装置、电子设备、计算机可读存储介质 |
CN117076159B (zh) * | 2023-10-10 | 2024-01-05 | 统信软件技术有限公司 | 插件调用方法及装置、电子设备、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019001078A1 (zh) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402782A (zh) | 一种用于在直播软件中加载插件的方法及装置 | |
CN110227259B (zh) | 一种数据处理的方法、装置、服务器和系统 | |
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
US20070258388A1 (en) | Virtual server cloning | |
US7506334B2 (en) | Common, multi-version interface that allows a distributed sybsystem to communicate with multiple versions of the distributed subsystem | |
TW200843438A (en) | Out-of-band keep-alive mechanism for clients associated with network address translation systems | |
US20170163478A1 (en) | Method,electronic device and system for updating client configuration in key-value pair database | |
CN101227343B (zh) | 一种TCPv6和/或UDPv6测试设备及方法 | |
US8849947B1 (en) | IT discovery of virtualized environments by scanning VM files and images | |
CN112261094A (zh) | 一种报文处理方法及代理服务器 | |
US20160253194A1 (en) | Hypervisor adjustment for cluster transfers | |
CN113067739B (zh) | 一种高密度容器网络部署方法及系统 | |
CN105991679B (zh) | 一种网络分享的实现方法和装置 | |
CN115567594A (zh) | 微服务请求处理方法、装置、计算机设备及存储介质 | |
US9705978B1 (en) | Dependency graph management | |
CN107092507A (zh) | 应用程序的换肤方法、装置及系统 | |
CA2854067C (en) | Method, device and system for recording multimedia data | |
CN105786434B (zh) | 一种远程显示的控制方法及设备 | |
CN113765867A (zh) | 一种数据传输方法、装置、设备及存储介质 | |
CN115442285A (zh) | 基于虚拟化配置的网络测试方法、装置、设备及介质 | |
CN107592340A (zh) | 远程操作管理服务器的方法和设备 | |
CN103095562B (zh) | 云计算智能网关 | |
CN112737915B (zh) | 基于智能网卡的内网隧道跨域网关转发方法、系统、设备和介质 | |
CN105263134A (zh) | 一种图像传输方法及移动设备 | |
CN105933464B (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: 20171128 |
|
RJ01 | Rejection of invention patent application after publication |