CN116382719A - 插件处理方法、装置、计算机设备及存储介质 - Google Patents
插件处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN116382719A CN116382719A CN202310377198.4A CN202310377198A CN116382719A CN 116382719 A CN116382719 A CN 116382719A CN 202310377198 A CN202310377198 A CN 202310377198A CN 116382719 A CN116382719 A CN 116382719A
- Authority
- CN
- China
- Prior art keywords
- plug
- capability
- package
- core service
- service interface
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 30
- 238000000034 method Methods 0.000 claims description 60
- 230000006870 function Effects 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 24
- 238000012423 maintenance Methods 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例属于插件技术领域,涉及一种插件处理方法,包括:响应于能力包选取指令,在能力包仓库中选取能力包,能力包仓库存储有从宿主机解耦的各种能力所对应的能力包;基于能力包生成插件的插件包,并在宿主机中根据插件包加载插件;接收针对插件的初始数据,并通过插件处理初始数据得到已处理数据;通过插件调用宿主机的核心服务接口,以通过核心服务接口将已处理数据发送至客户端,核心服务接口保留在宿主机中,且核心服务接口的更新频率低于从宿主机解耦的各种能力的更新频率。本申请还提供一种插件处理装置、计算机设备及存储介质。本申请提高了插件开发效率,并减小了运行插件的宿主机维护压力过大的问题。
Description
技术领域
本申请涉及插件技术领域,尤其涉及一种插件处理方法、装置、计算机设备及存储介质。
背景技术
软件运营服务(Software as a Service,SaaS)是指用户获取软件服务的一种形式,它不需要用户将软件产品安装在自己的电脑或服务器上。在SaaS中,可以通过开放平台满足客户的定制需求,插件开发人员基于开放平台提供的开放能力编写插件,根据客户需求进行定制化的插件开发,满足客户需求。
插件可以理解为代码片段,最终运行在宿主机(host)中。当用户触发插件逻辑时,插件会被开放平台服务调用,对数据进行处理然后发送给客户端。为了便于插件开发人员进行业务开发,开放平台提供了很多能力,比如操作数据库能力、第三方通知能力、对接第三方账号能力等。这些能力编写在host的代码中,由host提供给插件调用。当host提供一个新能力,或者已有能力进行不兼容性升级时,host必须进行大版本升级,造成host发版频次较高,影响插件开发效率;且一个能力存在多个不兼容版本时,为了保持各版本插件的运行,需要同时维护多个host版本,长此以往版本分叉越来越多,造成很大的维护压力。
发明内容
本申请实施例的目的在于提出一种插件处理方法、装置、计算机设备及存储介质,以解决插件开发过程中效率较低以及宿主机维护压力过大的问题。
为了解决上述技术问题,本申请实施例提供一种插件处理方法,采用了如下所述的技术方案:
响应于能力包选取指令,在能力包仓库中选取能力包,所述能力包仓库存储有从宿主机解耦的各种能力所对应的能力包;
基于所述能力包生成插件的插件包,并在所述宿主机中根据所述插件包加载所述插件;
接收针对所述插件的初始数据,并通过所述插件处理所述初始数据得到已处理数据;
通过所述插件调用所述宿主机的核心服务接口,以通过所述核心服务接口将所述已处理数据发送至客户端,所述核心服务接口保留在所述宿主机中,且所述核心服务接口的更新频率低于从所述宿主机解耦的各种能力的更新频率。
为了解决上述技术问题,本申请实施例还提供一种插件处理装置,采用了如下所述的技术方案:
能力包选取模块,用于响应于能力包选取指令,在能力包仓库中选取能力包,所述能力包仓库存储有从宿主机解耦的各种能力所对应的能力包;
插件加载模块,用于基于所述能力包生成插件的插件包,并在所述宿主机中根据所述插件包加载所述插件;
插件处理模块,用于接收针对所述插件的初始数据,并通过所述插件处理所述初始数据得到已处理数据;
数据发送模块,用于通过所述插件调用所述宿主机的核心服务接口,以通过所述核心服务接口将所述已处理数据发送至客户端,所述核心服务接口保留在所述宿主机中,且所述核心服务接口的更新频率低于从所述宿主机解耦的各种能力的更新频率。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的插件处理方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的插件处理方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:响应于能力包选取指令,在能力包仓库中选取能力包,本申请将宿主机的各种能力进行解耦,将能力以能力包的形式存储于能力包仓库,实现宿主机的轻量化;可以根据插件开发需求选取能力包,基于能力包生成插件包,并在宿主机中根据插件包加载插件;接收初始数据,插件可以使用从宿主机解耦出来的能力对初始数据进行处理得到已处理数据;宿主机保留了核心服务接口,它实现插件与外界的通信,通过核心服务接口将已处理数据发送至客户端,确保了能力的完整实现;本申请将宿主机解耦为核心服务接口和多个能力包,核心服务接口较为固定、不会频繁变更,将核心服务接口保留在宿主机,宿主机不再频繁发布版本,对能力的改动仅需要调整能力包而不涉及宿主机本身,可以根据需求选择不同的能力包构建插件,提高了插件的开发效率以及灵活性,同时降低了宿主机的维护压力。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的插件处理方法的一个实施例的流程图;
图3是根据本申请的插件处理装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。终端设备101、102、103上安装有SaaS上某服务的客户端。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。服务器105可以支持SaaS和开放平台的运行,插件开发人员可以基于开放平台提供的开放能力编写插件,插件运行在宿主机host中。
需要说明的是,本申请实施例所提供的插件处理方法一般由服务器执行,相应地,插件处理装置一般设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的插件处理方法的一个实施例的流程图。所述的插件处理方法,包括以下步骤:
步骤S201,响应于能力包选取指令,在能力包仓库中选取能力包,能力包仓库存储有从宿主机解耦的各种能力所对应的能力包。
在本实施例中,插件处理方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式与终端设备进行通信。需要指出的是,上述无线连接方式可以包括但不限于3G/4G/5G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
具体地,插件开发人员可以在终端浏览能力包仓库中的各能力包;能力包仓库用于存储能力包,能力包是实现某种能力的代码包;插件开发人员基于开放平台提供的开放能力编写插件,以往,实现开放能力的代码耦合在一起,即编写在宿主机host中。本申请中,将实现各种开放能力的代码从宿主机解耦,每种开放能力编写为一个能力包,并通过能力包仓库存储全部的能力包。
插件开发人员在开发插件时,可以根据插件的功能实现需求,在能力包仓库中选择能力包,并触发能力包选取指令。终端将能力包选取发送至服务器,服务器根据能力包选取指令,获取能力包仓库中的能力包。
步骤S202,基于能力包生成插件的插件包,并在宿主机中根据插件包加载插件。
具体地,能力包可以实现插件的一部分功能,可以理解,插件开发人员还需要编写一部分插件代码。服务器对插件代码和能力包进行打包得到插件包,然后在宿主机中根据插件包加载插件。
步骤S203,接收针对插件的初始数据,并通过插件处理初始数据得到已处理数据。
具体地,当插件所属的软件服务运行时,会产生针对插件的初始数据,初始数据被推送给插件,由插件对初始数据进行处理得到已处理数据。可以理解,插件可以使用从宿主机解耦出来的能力对初始数据进行处理。
进一步的,上述通过插件处理初始数据得到已处理数据的步骤可以包括:在插件侧通过插件中的初始数据处理方法处理初始数据,得到已处理数据,其中,初始数据处理方法来自于能力包。
具体地,服务器通过插件具有的初始数据处理方法处理初始数据,得到已处理数据,初始数据处理方法来自于能力包,即,将宿主机的能力转由插件实现。需要指出的是,这里对初始数据的处理是在插件侧进行的,初始数据的完整流程可以包含多个环节,插件侧可以完成绝大部分的处理环节;在插件侧处理完后,再由宿主机进行处理。
本实施例中,通过插件中的初始数据处理方法处理初始数据,得到已处理数据,初始数据处理方法来自于能力包,由插件实现宿主机中解耦的能力。
步骤S204,通过插件调用宿主机的核心服务接口,以通过核心服务接口将已处理数据发送至客户端,核心服务接口保留在宿主机中,且核心服务接口的更新频率低于从宿主机解耦的各种能力的更新频率。
具体地,本申请将宿主机host解耦为一个轻量的壳和多个能力包,能力包存储在能力包仓库中,轻量的壳即剥离了各种开放能力后的宿主机host,它保存了核心服务接口。核心服务接口实现插件与开放平台之间的通信,相较于开放能力,它基本是固定的,不会频繁变更;将核心服务接口保留在宿主机中,核心服务接口实现的能力也可以进行更新,但是核心服务接口的更新频率低于从宿主机解耦的各种能力的更新频率,将更新频率高的各种能力从宿主机解耦,将更新频率低的核心服务接口保留在宿主机,使得宿主机不必频繁发布版本。
插件通过核心服务接口将已处理数据发送给开放平台,再由开放平台将已处理数据发送至客户端,确保了开放能力的完整实现,以及确保了插件功能的完整实现。
本实施例中,响应于能力包选取指令,在能力包仓库中选取能力包,本申请将宿主机的各种能力进行解耦,将能力以能力包的形式存储于能力包仓库,实现宿主机的轻量化;可以根据插件开发需求选取能力包,基于能力包生成插件包,并在宿主机中根据插件包加载插件;接收初始数据,插件可以使用从宿主机解耦出来的能力对初始数据进行处理得到已处理数据;宿主机保留了核心服务接口,它实现插件与外界的通信,通过核心服务接口将已处理数据发送至客户端,确保了能力的完整实现;本申请将宿主机解耦为核心服务接口和多个能力包,核心服务接口较为固定、不会频繁变更,将核心服务接口保留在宿主机,宿主机不再频繁发布版本,对能力的改动仅需要调整能力包而不涉及宿主机本身,可以根据需求选择不同的能力包构建插件,提高了插件的开发效率以及灵活性,同时降低了宿主机的维护压力。
进一步的,在上述响应于能力包选取指令,在能力包仓库中选取能力包的步骤之前,还可以包括:获取多组功能代码,其中,各组功能代码用于实现从宿主机解耦的各种能力,不同组功能代码所实现能力的类型和版本不同;分别生成各组功能代码所对应的能力包;将各能力包存储于能力包仓库,能力包仓库中的能力包支持任意调用。
具体地,服务器预先获取多组功能代码,其中,各组功能代码用于实现从宿主机解耦的各种能力;宿主机的各种能力类型可以不同(例如操作数据库是一种类型的能力,向第三方发送邮件是另一种能力),对于同一种能力,能力的版本也可以不同(例如,在向第三方发邮件这一种能力中,V1.0版本发送的数据仅包含邮件内容,V2.0版本发送的数据包含邮件标题和邮件内容)。
对各组功能代码进行打包处理得到能力包,再将得到的各能力包存储于能力包仓库。能力包仓库中的能力包可以开放给代码开发人员任意调用,从而通过宿主机实现不同类型和不同版本的能力。
一组功能代码与特定的能力类型以及能力版本对应,因此,一个能力包,只能实现一种类型下的一个版本的能力。承接上述的例子,操作数据库和发送邮件使用不同的能力包;V1.0版本的发送邮件能力使用的能力包,与V2.0版本的发送邮件能力使用的能力包不同。
本实施例中,获取多组功能代码,各组功能代码对应于从宿主机解耦的各种能力,且不同组功能代码所实现能力的类型和版本不同;分别生成各组功能代码所对应的能力包,并将各能力包存储于能力包仓库,当需要进行能力的变更时,仅需要调整能力包,插件开发中也可以自行挑选安装不同类型与版本的能力包,提高了插件开发效率。
进一步的,在上述获取多组功能代码的步骤之前,还可以包括:从代码编辑页面中获取初始代码,并获取初始代码相关联的基础能力包,其中,基础能力包实现基础能力,基础能力包支持被各能力包共用;根据初始代码及其关联的基础能力包生成功能代码。
具体地,插件开发人员可以在代码编辑页面中编写初始代码,在编写中还可以配置初始代码所需的基础能力包;其中,基础能力包是实现一些基础能力、底层能力的包,例如node.js中提供基础日志的包(logger)、类型包(type),基础能力包可以被上层的开放能力共用,即,基础能力包仅提供代码片段,可以被重复调用,可以被各种能力包共用,从而解决代码编写中代码复用的问题。
服务器从代码编辑页面中获取初始代码,并获取初始代码相关联的基础能力包;根据初始代码及其关联的基础能力包生成功能代码。
本实施例中,从代码编辑页面获取初始代码,并获取初始代码对应的基础能力包,基础能力包可以被共用,减少了功能代码中代码复用的问题,减少了开发工作量,提高了开发效率。
进一步的,上述代码编辑页面中获取初始代码,并获取初始代码相关联的基础能力包的步骤可以包括:从代码编辑页面中获取初始代码;基于预设字符串识别初始代码中的基础包信息,并从基础包库中获取基础包信息所对应的基础能力包,其中,基础包信息记录初始代码引用的基础能力包,初始代码和基础能力包基于node.js或Java实现。
具体地,服务器从代码编辑页面中获取初始代码,初始代码中写入了基础包信息,基础包信息包含了所要引用的基础能力包以及引用基础能力包的位置。根据预设的特定字符串识别初始代码中的基础包信息,从基础包库中获取基础包信息所对应的基础能力包。
本申请中,初始代码和基础能力包基于node.js,node.js是运行在服务端的JavaScript,当基于node.js语言实现本申请时,宿主机为node-host。本申请建立了开放能力包node.js项目,在node.js中,官方提供了NPM(node package manager)包管理工具,插件开发人员可以预先将不同类型、不同版本的开放能力作为独立的包编写,编写完成后将其发布到NPM远程仓库,即前文中的能力包仓库中。
服务器可以执行npm init指令来初始化包的信息,在配置好NPM远程仓库后,运行npm publish指令,将能力包推送到NPM远程仓库中。在能力包的编写过程中,插件开发人员可以通过TypeScript进行编写,TypeScript是强类型语言,是JavaScript的超集,能够配合编码工具提供代码提示与警告,能够完善上下文的类型提示,方便开发。
初始代码和基础能力包也可以Java实现,将开放能力以jar包的形式进行存储。本申请中的编程语言也可以不限于node.js或Java,只要编程语言中具有类似于NPM的包管理工具,均可以采用本申请中的方案。
本实施例中,从代码编辑页面中获取初始代码,识别初始代码中的基础包信息,并从基础包库中获取基础包信息所对应的基础能力包,初始代码和基础能力包基于node.js或Java实现,它们具有包管理工具,可以实现开放能力的解耦与管理。
进一步的,上述步骤S204可以包括:通过freeze函数,将宿主机的核心服务接口以环境变量的方式提供给插件;通过插件调用核心服务接口,以将已处理数据发送至客户端。
具体地,宿主机host需要将自身被用到的核心服务接口作为环境变量,传入插件上下文。在一个实施例中,宿主机为node-host,它以VM2沙箱的方式运行插件,其中,VM2是一个运行外部JavaScript代码的沙箱环境,拥有隔离的上下文与作用域。Freeze函数是对沙箱全局环境进行注入的方法,执行freeze(env,'onesEnv')函数,插件的全局上下文便可以拿到环境变量,即核心服务接口,使得插件的逻辑完成闭环并可以完整运行。插件调用核心服务接口,将已处理数据发送至客户端。
本实施例中,通过freeze函数,将宿主机的核心服务接口以环境变量的方式提供给插件,使得插件的逻辑完成闭环,由插件调用核心服务接口,将已处理数据发送至客户端,使插件完成完整的功能。
进一步的,上述通过插件调用核心服务接口,以将已处理数据发送至客户端的步骤可以包括:通过插件调用核心服务接口,以通过核心服务接口提供的核心服务方法将已处理数据发送至客户端,其中,核心服务方法为fetchMessage方法。
具体地,插件调用核心服务接口,核心服务接口提供核心服务方法,当宿主机为node-host时,核心服务方法为fetchMessage方法,fetchMessage方法用于实现插件与开放平台之间的通信;插件通过核心服务方法将已处理数据发送至开放平台,再由开放平台发送给客户端,使插件完成完整的功能。
本申请中,宿主机由提供能力给插件,变为了提供核心服务方法给插件,基于能力包实现的插件对核心服务方法进行组装,形成完整的开放能力。核心服务方法只要能保持不做破坏性变更,宿主机便可兼容所有使用了能力包的插件,而不用随着能力包的更新进行大版本的更新。
本实施例中,通过插件调用核心服务接口,以通过核心服务接口提供的核心服务方法将已处理数据发送至客户端,核心服务方法为fetchMessage方法,将核心服务方法与能力进行解耦,使得宿主机可以兼容更多插件,降低了宿主机的更新频率和维护压力。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图3,作为对上述图2所示方法的实现,本申请提供了一种插件处理装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图3所示,本实施例所述的插件处理装置300包括:能力包选取模块301、插件加载模块302、插件处理模块303以及数据发送模块304,其中:
能力包选取模块301,用于响应于能力包选取指令,在能力包仓库中选取能力包,能力包仓库存储有从宿主机解耦的各种能力所对应的能力包。
插件加载模块302,用于基于能力包生成插件的插件包,并在宿主机中根据插件包加载插件。
插件处理模块303,用于接收针对插件的初始数据,并通过插件处理初始数据得到已处理数据。
数据发送模块304,用于通过插件调用宿主机的核心服务接口,以通过核心服务接口将已处理数据发送至客户端,核心服务接口保留在宿主机中,且核心服务接口的更新频率低于从宿主机解耦的各种能力的更新频率。
本实施例中,响应于能力包选取指令,在能力包仓库中选取能力包,本申请将宿主机的各种能力进行解耦,将能力以能力包的形式存储于能力包仓库,实现宿主机的轻量化;可以根据插件开发需求选取能力包,基于能力包生成插件包,并在宿主机中根据插件包加载插件;接收初始数据,插件可以使用从宿主机解耦出来的能力对初始数据进行处理得到已处理数据;宿主机保留了核心服务接口,它实现插件与外界的通信,通过核心服务接口将已处理数据发送至客户端,确保了能力的完整实现;本申请将宿主机解耦为核心服务接口和多个能力包,核心服务接口较为固定、不会频繁变更,将核心服务接口保留在宿主机,宿主机不再频繁发布版本,对能力的改动仅需要调整能力包而不涉及宿主机本身,可以根据需求选择不同的能力包构建插件,提高了插件的开发效率以及灵活性,同时降低了宿主机的维护压力。
在本实施例的一些可选的实现方式中,插件处理装置300还可以包括:代码获取模块、能力包生成模块以及能力包存储模块,其中:
代码获取模块,用于获取多组功能代码,其中,各组功能代码用于实现从宿主机解耦的各种能力,不同组功能代码所实现能力的类型和版本不同。
能力包生成模块,用于分别生成各组功能代码所对应的能力包。
能力包存储模块,用于将各能力包存储于能力包仓库,能力包仓库中的能力包支持任意调用。
本实施例中,获取多组功能代码,各组功能代码对应于从宿主机解耦的各种能力,且不同组功能代码所实现能力的类型和版本不同;分别生成各组功能代码所对应的能力包,并将各能力包存储于能力包仓库,当需要进行能力的变更时,仅需要调整能力包,插件开发中也可以自行挑选安装不同类型与版本的能力包,提高了插件开发效率。
在本实施例的一些可选的实现方式中,插件处理装置300还可以包括:获取模块以及代码生成模块,其中:
获取模块,用于从代码编辑页面中获取初始代码,并获取初始代码相关联的基础能力包,其中,基础能力包实现基础能力,基础能力包支持被各能力包共用。
代码生成模块,用于根据初始代码及其关联的基础能力包生成功能代码。
本实施例中,从代码编辑页面获取初始代码,并获取初始代码对应的基础能力包,基础能力包可以被共用,减少了功能代码中代码复用的问题,减少了开发工作量,提高了开发效率。
在本实施例的一些可选的实现方式中,获取模块可以包括:初始获取子模块以及基础包获取子模块,其中:
初始获取子模块,用于从代码编辑页面中获取初始代码。
基础包获取子模块,用于基于预设字符串识别初始代码中的基础包信息,并从基础包库中获取基础包信息所对应的基础能力包,其中,基础包信息记录初始代码引用的基础能力包,初始代码和基础能力包基于node.js或Java实现。
本实施例中,从代码编辑页面中获取初始代码,识别初始代码中的基础包信息,并从基础包库中获取基础包信息所对应的基础能力包,初始代码和基础能力包基于node.js或Java实现,它们具有包管理工具,可以实现开放能力的解耦与管理。
在本实施例的一些可选的实现方式中,插件处理模块303还可以用于在插件侧通过插件中的初始数据处理方法处理初始数据,得到已处理数据,其中,初始数据处理方法来自于能力包。
本实施例中,通过插件中的初始数据处理方法处理初始数据,得到已处理数据,初始数据处理方法来自于能力包,由插件实现宿主机中解耦的能力。
在本实施例的一些可选的实现方式中,数据发送模块304可以包括:接口提供子模块以及接口调用子模块,其中:
接口提供子模块,用于通过freeze函数,将宿主机的核心服务接口以环境变量的方式提供给插件。
接口调用子模块,用于通过插件调用核心服务接口,以将已处理数据发送至客户端。
本实施例中,通过freeze函数,将宿主机的核心服务接口以环境变量的方式提供给插件,使得插件的逻辑完成闭环,由插件调用核心服务接口,将已处理数据发送至客户端,使插件完成完整的功能。
在本实施例的一些可选的实现方式中,接口调用子模块还可以用于通过插件调用核心服务接口,以通过核心服务接口提供的核心服务方法将已处理数据发送至客户端,其中,核心服务方法为fetchMessage方法。
本实施例中,通过插件调用核心服务接口,以通过核心服务接口提供的核心服务方法将已处理数据发送至客户端,核心服务方法为fetchMessage方法,将核心服务方法与能力进行解耦,使得宿主机可以兼容更多插件,降低了宿主机的更新频率和维护压力。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过***总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件41-43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作***和各类应用软件,例如插件处理方法的计算机可读指令等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的计算机可读指令或者处理数据,例如运行所述插件处理方法的计算机可读指令。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本实施例中提供的计算机设备可以执行上述插件处理方法。此处插件处理方法可以是上述各个实施例的插件处理方法。
本实施例中,响应于能力包选取指令,在能力包仓库中选取能力包,本申请将宿主机的各种能力进行解耦,将能力以能力包的形式存储于能力包仓库,实现宿主机的轻量化;可以根据插件开发需求选取能力包,基于能力包生成插件包,并在宿主机中根据插件包加载插件;接收初始数据,插件可以使用从宿主机解耦出来的能力对初始数据进行处理得到已处理数据;宿主机保留了核心服务接口,它实现插件与外界的通信,通过核心服务接口将已处理数据发送至客户端,确保了能力的完整实现;本申请将宿主机解耦为核心服务接口和多个能力包,核心服务接口较为固定、不会频繁变更,将核心服务接口保留在宿主机,宿主机不再频繁发布版本,对能力的改动仅需要调整能力包而不涉及宿主机本身,可以根据需求选择不同的能力包构建插件,提高了插件的开发效率以及灵活性,同时降低了宿主机的维护压力。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的插件处理方法的步骤。所述计算机可读存储介质既可以是非易失性存储介质,也可以是易失性存储介质。
本实施例中,响应于能力包选取指令,在能力包仓库中选取能力包,本申请将宿主机的各种能力进行解耦,将能力以能力包的形式存储于能力包仓库,实现宿主机的轻量化;可以根据插件开发需求选取能力包,基于能力包生成插件包,并在宿主机中根据插件包加载插件;接收初始数据,插件可以使用从宿主机解耦出来的能力对初始数据进行处理得到已处理数据;宿主机保留了核心服务接口,它实现插件与外界的通信,通过核心服务接口将已处理数据发送至客户端,确保了能力的完整实现;本申请将宿主机解耦为核心服务接口和多个能力包,核心服务接口较为固定、不会频繁变更,将核心服务接口保留在宿主机,宿主机不再频繁发布版本,对能力的改动仅需要调整能力包而不涉及宿主机本身,可以根据需求选择不同的能力包构建插件,提高了插件的开发效率以及灵活性,同时降低了宿主机的维护压力。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种插件处理方法,其特征在于,包括下述步骤:
响应于能力包选取指令,在能力包仓库中选取能力包,所述能力包仓库存储有从宿主机解耦的各种能力所对应的能力包;
基于所述能力包生成插件的插件包,并在所述宿主机中根据所述插件包加载所述插件;
接收针对所述插件的初始数据,并通过所述插件处理所述初始数据得到已处理数据;
通过所述插件调用所述宿主机的核心服务接口,以通过所述核心服务接口将所述已处理数据发送至客户端,所述核心服务接口保留在所述宿主机中,且所述核心服务接口的更新频率低于从所述宿主机解耦的各种能力的更新频率。
2.根据权利要求1所述的插件处理方法,其特征在于,在所述响应于能力包选取指令,在能力包仓库中选取能力包的步骤之前,还包括:
获取多组功能代码,其中,各组功能代码用于实现从宿主机解耦的各种能力,不同组功能代码所实现能力的类型和版本不同;
分别生成所述各组功能代码所对应的能力包;
将各能力包存储于能力包仓库,所述能力包仓库中的能力包支持任意调用。
3.根据权利要求2所述的插件处理方法,其特征在于,在所述获取多组功能代码的步骤之前,还包括:
从代码编辑页面中获取初始代码,并获取所述初始代码相关联的基础能力包,其中,所述基础能力包实现基础能力,所述基础能力包支持被各能力包共用;
根据所述初始代码及其关联的基础能力包生成功能代码。
4.根据权利要求3所述的插件处理方法,其特征在于,所述从代码编辑页面中获取初始代码,并获取所述初始代码相关联的基础能力包的步骤包括:
从代码编辑页面中获取初始代码;
基于预设字符串识别所述初始代码中的基础包信息,并从基础包库中获取所述基础包信息所对应的基础能力包,其中,所述基础包信息记录所述初始代码引用的基础能力包,所述初始代码和所述基础能力包基于node.js或Java实现。
5.根据权利要求1所述的插件处理方法,其特征在于,所述通过所述插件处理所述初始数据得到已处理数据的步骤包括:
在插件侧通过所述插件中的初始数据处理方法处理所述初始数据,得到已处理数据,其中,所述初始数据处理方法来自于所述能力包。
6.根据权利要求1所述的插件处理方法,其特征在于,所述通过所述插件调用所述宿主机的核心服务接口,以通过所述核心服务接口将所述已处理数据发送至客户端的步骤包括:
通过freeze函数,将所述宿主机的核心服务接口以环境变量的方式提供给所述插件;
通过所述插件调用所述核心服务接口,以将所述已处理数据发送至客户端。
7.根据权利要求6所述的插件处理方法,其特征在于,所述通过所述插件调用所述核心服务接口,以将所述已处理数据发送至客户端的步骤包括:
通过所述插件调用所述核心服务接口,以通过所述核心服务接口提供的核心服务方法将所述已处理数据发送至客户端,其中,所述核心服务方法为fetchMessage方法。
8.一种插件处理装置,其特征在于,包括:
能力包选取模块,用于响应于能力包选取指令,在能力包仓库中选取能力包,所述能力包仓库存储有从宿主机解耦的各种能力所对应的能力包;
插件加载模块,用于基于所述能力包生成插件的插件包,并在所述宿主机中根据所述插件包加载所述插件;
插件处理模块,用于接收针对所述插件的初始数据,并通过所述插件处理所述初始数据得到已处理数据;
数据发送模块,用于通过所述插件调用所述宿主机的核心服务接口,以通过所述核心服务接口将所述已处理数据发送至客户端,所述核心服务接口保留在所述宿主机中,且所述核心服务接口的更新频率低于从所述宿主机解耦的各种能力的更新频率。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的插件处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的插件处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310377198.4A CN116382719A (zh) | 2023-03-31 | 2023-03-31 | 插件处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310377198.4A CN116382719A (zh) | 2023-03-31 | 2023-03-31 | 插件处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116382719A true CN116382719A (zh) | 2023-07-04 |
Family
ID=86970781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310377198.4A Pending CN116382719A (zh) | 2023-03-31 | 2023-03-31 | 插件处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382719A (zh) |
-
2023
- 2023-03-31 CN CN202310377198.4A patent/CN116382719A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10554604B1 (en) | Low-load message queue scaling using ephemeral logical message topics | |
CN110688096B (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
CN111782304B (zh) | 分页加载数据逻辑控制方法、装置、计算机设备及介质 | |
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN112882709A (zh) | 基于容器引擎***的渲染方法、装置、设备以及存储介质 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN111552463A (zh) | 一种页面跳转方法、装置、计算机设备及存储介质 | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN109032693B (zh) | 一种加载展示信息方法、装置、电子设备及可读存储介质 | |
CN112214250A (zh) | 一种应用程序组件的加载方法和装置 | |
CN112835582A (zh) | 基于容器引擎的渲染方法、装置、设备以及存储介质 | |
CN113434217B (zh) | 漏洞扫描方法、装置、计算机设备及介质 | |
CN116382719A (zh) | 插件处理方法、装置、计算机设备及存储介质 | |
CN111142972B (zh) | 用于扩展应用程序的功能的方法、装置、***及介质 | |
WO2020135129A1 (zh) | 加载应用的插件的方法、装置和终端 | |
CN112083945A (zh) | Npm安装包的更新提示方法、装置、电子设备及存储介质 | |
CN111400058A (zh) | 调用消息的方法、装置、计算机设备及存储介质 | |
KR101553539B1 (ko) | 동적 링크 제공 방법 및 이를 수행하는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN113127051B (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
CN116108814B (zh) | 甘特图处理方法、装置、计算机设备及存储介质 | |
CN117118962B (zh) | 用于跨多个云平台部署用户方法的方法和*** | |
CN114048177B (zh) | 分享方法及装置、电子设备、存储介质及程序产品 | |
CN117591190A (zh) | 一种应用数据加载优化方法、装置、设备及其存储介质 | |
CN117435267A (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 |