CN112114896A - 一种插件框架及业务功能扩展的方法 - Google Patents
一种插件框架及业务功能扩展的方法 Download PDFInfo
- Publication number
- CN112114896A CN112114896A CN202010920580.1A CN202010920580A CN112114896A CN 112114896 A CN112114896 A CN 112114896A CN 202010920580 A CN202010920580 A CN 202010920580A CN 112114896 A CN112114896 A CN 112114896A
- Authority
- CN
- China
- Prior art keywords
- plug
- framework
- environment
- service
- function
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000006870 function Effects 0.000 claims abstract description 192
- 238000011161 development Methods 0.000 claims abstract description 31
- 238000004519 manufacturing process Methods 0.000 claims description 24
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000012795 verification Methods 0.000 claims description 2
- 235000010627 Phaseolus vulgaris Nutrition 0.000 claims 1
- 244000046052 Phaseolus vulgaris Species 0.000 claims 1
- 230000008878 coupling Effects 0.000 abstract description 6
- 238000010168 coupling process Methods 0.000 abstract description 6
- 238000005859 coupling reaction Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 15
- 238000004590 computer program Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/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
-
- 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/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
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
技术领域
本申请涉及计算机技术领域,提供一种插件框架及业务功能扩展的方法。
背景技术
随着业务的不断增加,应用的开发迭代和性能瓶颈等问题都会增加开发难度。因此提出微服务框架,将复杂系统切分为多个微服务,这些微服务带来了语言和框架选择上的灵活性,缩短应用开发上线时间,根据不同的工作负载和资源要求对服务进行独立缩扩容等优势。被拆分成多个微服务进程后,进程内的方法调用变成的进程间的远程调用,因此需要设计服务之间的通信机制,以处理分布式系统的复杂性。且针对新增加的业务需求,需要频繁的修改微服务的代码,增加了系统出现问题的风险,导致系统稳定性下降。
发明内容
本申请实施例提供一种插件框架及业务功能扩展的方法,用以实现微服务业务系统的快速开发与功能扩展,有效降低了主程序与扩展程序之间的耦合度,保证系统稳定性。
第一方面,本申请实施例提供一种业务功能扩展的方法,该方法包括:
在需要进行业务功能扩展时,加载预先设计的插件框架;
通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件;
其中,插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,通过预先设计的插件框架,获取插件中实现业务功能的功能组件之前,还包括:
通过插件框架提供的插件配置器,设置插件运行环境和插件路径;以及
通过插件框架,创建插件框架的核心对象,以使插件框架的核心对象根据插件运行环境和插件路径,加载并解析插件,以获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,插件运行环境包括开发环境和生产环境;
根据插件运行环境和插件路径,加载并解析插件,包括:
当插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定CLASS文件存储的至少一个插件;或
当插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定JAR包中存储的至少一个插件。
在一种可能的实现方式中,该方法还包括:
定义用于实现需要扩展的业务功能的插件接口。
在一种可能的实现方式中,通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件,包括:
调用插件接口,从插件框架中存储的插件中用于实现各类业务功能的功能组件中,调用用于实现需要扩展的业务功能的功能组件。
第二方面,本申请实施例提供一种业务功能扩展的设备,该设备包括:处理器和存储器,存储器中存储有程序代码,处理器用于读取存储器中的程序代码,并执行下列过程:
在需要进行业务功能扩展时,加载预先设计的插件框架;
通过预先设计的插件框架,获取插件中用于实现扩展的业务功能的功能组件;
其中,插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
第三方面,本申请实施例提供一种业务功能扩展的装置,该装置包括:
加载模块,用于在需要进行业务功能扩展时,加载预先设计的插件框架;
获取模块,用于通过预先设计的插件框架,获取插件中用于实现扩展的业务功能的功能组件;
其中,插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
第四方面,本申请实施例提供一种插件框架,应用于微服务业务系统的业务功能的动态扩展中,该插件框架,包括:插件配置器和插件框架核心;其中:
插件配置器,用于配置插件运行环境,以及插件路径;
插件框架核心,用于根据插件运行环境和插件路径,确定并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,插件框架核心包括:插件工厂、插件功能组件管理器、应用上下文,其中:
插件工厂,用于根据插件运行环境和插件路径,获取插件;
插件功能组件管理器,用于将插件工厂获取的插件中用于实现各类业务功能的功能组件,存放至应用上下文中;
应用上下文,用于存储用于实现各类业务功能的功能组件,且与微服务业务系统建立关联关系,以使微服务业务系统从应用上下文中获取用于实现需要扩展的业务功能的功能组件。
在一种可能的实现方式中,插件框架核心中还包括:插件控制器,插件控制器中还包括有:插件合法校验器、插件注册管理器以及插件生命周期管理器,其中;
插件合法校验器,用于插件功能组件管理器将插件中用于实现各类业务功能的功能组件,存放至应用上下文之前,对插件工厂获取的插件进行合法性校验;
插件注册管理器,用于加载并注册插件合法校验器校验通过的插件;
插件生命周期管理器,用于对插件工厂加载的插件进行生命周期管理。
在一种可能的实现方式中,插件运行环境包括开发环境和生产环境,插件工厂根据插件运行模式和插件路径,加载并解析插件,具体包括:
当插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定CLASS文件存储的至少一个插件;或
当插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定JAR包中存储的至少一个插件。
在一种可能的实现方式中,插件框架核心中还包括:插件监听器;
插件监听器,用于监听通过插件合法校验器校验合法的插件的生命周期,并根据插件生命周期修改插件的状态。
本申请的有益效果如下:
本申请提供一种插件框架及业务功能扩展的方法,在需要进行业务功能扩展时,加载预先设计的插件框架;通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件,其中插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。当需要扩展业务功能时,加载预先设计的插件框架,插件框架中存储有用于实现需要扩展的业务功能的功能组件,通过插件框架,获取用于实现需要扩展的业务功能的功能组件,无需重新编译和部署原代码,提高了扩展性和部署效率,有效降低了主程序与扩展程序之间的耦合度,保证系统稳定性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种业务功能扩展的方法流程图;
图2为本申请实施例提供的一种应用于业务功能扩展的插件框架结构图;
图3为本申请实施例提供的一种微服务业务系统通过插件框架进行功能扩展的框架示意图;
图4为本申请实施例提供的一种业务功能扩展的整体方法流程图;
图5为本申请实施例提供的一种业务功能扩展的设备结构图;
图6为本申请实施例提供的一种业务功能扩展的装置结构图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明实施例中“微服务框架”是一种架构风格,用于将一个大型复杂软件应用由一个或多个微服务组成,各个微服务被独立部署,且运行在自己的进程中。每个微服务仅关注于完成一件任务并很好的完成该任务。
本发明实施例中“OSGi”,OSGi(Open Service Gateway Initiative,开放服务网关协议)指OSGi Alliance组织制定的一个基于Java语言的服务规范---OSGi服务平台,是面向Java的动态模型系统。该规范和核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册,基于OSGI的应用程序可动态更改运行状态和行为,在OSGi框架中,每一个功能组件都是可热插拔的,因此对某一特定功能组件的修改并不会影响到其他功能组件,部署一个新的功能组件时,也不需要重启服务。基于这个框架定义了大量的OSGi服务,包括日志、配置管理、设备访问、软件包管理、许可管理、星级、用户管理等。
本发明实施例中“功能组件”在软件开发中用到了软件的复用,被复用的部分都可以称为功能组件。
本发明实施例中“插件”是允许动态插入的,而不是在编程的时候静态的写入的。插件是功能组件的一种,凡是在应用程序中已经预留接口的功能组件就是插件。
下面对本申请的设计构思及应用场景进行简要介绍。
随着应用程序的普及,各个应用程序都可以实现多种功能。以浏览器为例,在浏览器中可以浏览文章、听歌、看视频等,可见一个浏览器的应用程序包含有多个功能。
因此,在应用程序的开发环境和生产环境中,可以为该应用程序设置多种功能需求。每当有新功能需求时,必然需要修改源代码。当有大量的新功能需求时,需针对新功能需求频繁修改源代码,增加了系统重新部署的风险,导致系统稳定性下降。
基于上述问题,本申请提供一种基于OSGi规范的插件框架,应用于微服务业务系统在开发环境和/或生产环境中动态扩展业务功能场景中。
在本申请中,首先设计一个插件框架,该插件框架中包含有插件配置器以及插件框架核心;其中插件配置器主要配置插件运行环境和插件路径;插件框架核心主要与微服务业务系统建立关联关系,并用于确定和存储插件中用于实现业务功能的功能组件。
在本申请中,微服务业务系统通过预先设计的插件框架,实现业务功能动态扩展的实施方式如下:
微服务业务系统中定义插件接口,插件接口定义插件需要实现的业务功能,即微服务业务系统需要扩展的业务功能;
微服务业务系统在需要进行业务功能扩展时,加载预先设计的插件框架;
微服务业务系统在预先设计的插件框架中,构建插件集成配置器,并通过该插件集成配置器,设置插件运行模式和插件路径;
微服务业务系统在预先设计的插件框架中,创建插件框架的核心对象,以通过插件框架的核心对象中的插件工厂,按照设置的插件运行模型和插件路径,加载并解析插件,获取插件中用于实现各类业务功能的功能组件,并存放至插件框架的核心对象中的应用上下文中;
微服务业务系统调用定义的插件接口,从应用上下文中调用用于实现需要扩展的业务功能对应的功能组件。
可见,通过本申请设计的插件框架,微服务业务系统可以动态扩展业务功能。当微服务业务系统需要扩展业务功能时,将实现业务功能的插件存放至指定路径下,插件框架根据微服务业务系统的需求从指定路径下获取插件中用于实现各类业务功能的功能组件,并存放至与微服务业务系统建立关联关系的应用上下文中,微服务业务系统调用插件接口时,从应用上下文中调用用于实现需要扩展的业务功能的功能组件,实现业务功能扩展。
因此,通过该插件框架动态扩展业务功能时,该插件框架可以与多个微服务业务系统建立关联关系,提高插件框架的通用性,提高代码的复用率;且微服务业务系统直接调用插件框架中用于实现需要扩展的业务功能的功能组件,无需重新编译和部署原代码,提高了微服务业务系统的扩展性和部署效率,降低了原微服务业务系统的对应的主程序与功能扩展对应的扩展程序之间的耦合度,保证系统稳定性。
下面参考附图来描述本申请示例性实施方式提供的画面显示的方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
如图1所示,为本申请实施例提供的一种业务功能扩展的方法,该方法包括如下步骤:
步骤100,在需要进行业务功能扩展时,加载预先设计的插件框架。
在本申请中,微服务业务系统确定需要进行业务功能扩展时,微服务业务系统定义用于实现需要扩展的业务功能的插件接口,以通过调用插件接口,从插件框架中调用用于实现需要扩展的业务功能的功能组件,实现微服务业务系统的功能扩展,因此微服务系统在需要进行业务功能扩展时,需要加载预先设计的插件框架。
在本申请中,插件框架用于获取并存储插件中各类业务功能的功能组件。
如图2所示,为本申请实施例提供的一种应用于业务功能扩展的插件框架200,该插件框架是基于OSGi规范的通用插件框架,应用于微服务业务系统动态扩展业务功能中,该框架中包括:插件配置器201,以及插件框架核心202,
其中:
插件配置器201,用于配置插件运行环境和插件路径。
插件框架核心202,用于根据插件运行环境和插件路径,确定并存储插件中用于实现各类业务功能的功能组件,且与微服务业务系统建立关联关系,以使微服务业务系统在存储的功能组件中调用用于实现需要扩展的业务功能的功能组件。
在本申请中,插件框架核心202主要包括有:应用上下文2021、插件工厂2022、插件功能组件管理器2023、插件控制器2024以及插件监听器2025,具体如图2所示。
其中,应用上下文2021,用于存储插件中用于实现各类业务功能的功能组件,以及微服务业务系统自身业务的功能组件,且应用上下文2021主要用于插件与微服务业务系统建立关联关系。因此微服务业务系统在确定需要进行功能扩展时,调用插件接口,从插件框架核心202的应用上下文2021中调用用于实现需要扩展的业务功能的功能组件。
插件工厂2022,用于根据插件配置器201配置的插件运行环境和插件路径,加载和解析插件;
其中,插件运行环境分为开发环境和生产环境,不同的插件运行环境,插件的加载策略不同:
在开发环境下,加载并解析插件路径下的class文件,确定class文件存储的至少一个插件;
在生产环境下,加载并解析插件路径下的JAR包,确定JAR包中存储的至少一个插件。
具体的,以插件程序为JAVA程序进行举例:
在开发任一项功能时,都会通过软件开发工具编写代码,编写后的代码文件称为源文件,后缀为.java。之后,对写完的代码进行编译,生成对应的class文件,后缀为.class。且在开发的时候使用默认的路径来存储源文件编译后的class文件。
一般在使用软件开发工具开发软件的时候,即开发插件功能的时候,会建一个目录,目录为根目录或父级目录,用来存放插件功能相关的所有文件。
因此,源码编译后生成的class文件将存储在对应的父级目录下。
一般的,一个简单的功能开发,需要创建多个java源文件,因此编译生成多个class文件,并将生成的多个class文件存储在对应的父级目录下。
在功能代码编写完毕后,需要进行测试,以确定通过该代码是否可以实现对应的功能。
在本申请中,由于是对微服务业务系统进行功能扩展,因此微服务业务系统的运行环境可以为生产环境和开发环境,微服务业务系统的运行环境不同,设置插件的运行环境不同,具体,如下两种情况:
情况一:对微服务业务系统进行功能扩展,也就是微服务业务系统处于开发环境,此时插件有两种状态:
状态A:插件代码已经完成,且测试没问题,此时插件处于生产环境,将插件功能代码对应的多个class文件打包成JAR包,并存放到微服务业务系统所处环境下的一个可以访问到的路径下。
状态B:插件代码正在开发,或者开发完正在测试,即插件处于开发环境,此时插件功能代码以多个class文件的形式存储,即没被打包成JAR包。
针对状态A,若可以获取到插件功能对应的源代码,则在配置插件路径和插件运行环境的时候,可以配置插件功能对应的源代码的路径,源代码的路径即为对应的父级目录,运行环境可以配置为开发环境。
若确定插件功能对应的源代码测试没有问题,则可以设置插件环境为生产环境和插件路径为插件JAR路径。
针对状态B,插件的运行环境为开发环境,插件路径为插件功能对应的源代码的路径。
情况二:微服务业务系统的功能扩展已开发完成且测试完成、插件功能也开发并测试完成。那么就可以将这两类各自打成JAR包,放到任何一个可以运行JAVA程序的服务器上。
此时,配置插件的运行环境为生产环境,插件路径为插件JAR包的路径。
因此,当插件功能处于开发环境时,微服务业务系统直接将插件路径配置为插件功能的父级目录;插件功能处于生产环境时,微服务业务系统将插件路径配置为插件JAR路径,即用户自建的任意目录。
需要说明的是,父级目录和任意目录下都存储有用于实现插件功能的文件。
在本申请中,插件工厂2022还用于生成插件功能组件管理器2023以及插件功能控制器2024。
插件功能组件管理器2023,用于将插件工厂2022获取的插件中用于实现各类业务功能的功能组件存放到应用上下文2021中。
插件功能控制器2024,用于对插件工厂2022获取的插件进行合法性检查、注册、生命周期管理等操作。
因此,插件功能控制器2024中包括:插件合法校验器20241、插件注册管理器20242以及插件生命周期管理器20243。
其中,插件合法校验器20241,用于在插件功能组件管理器2023将插件工厂2022获取的插件中用于实现各类业务功能的功能组件存放到应用上下文2021中之前,对插件工厂2022获取的插件进行合法性校验;
当确定该插件合法时,通知插件功能组件管理器2023将该插件中用于实现各类业务功能的功能组件存放到应用上下文2021中;或
当确定该插件不合法时,通知插件功能组件管理器2023不要将该插件中用于实现各类业务功能的功能组件存放到应用上下文2021中。
以插件A进行举例:
插件功能控制器2024中的插件合法校验器20241对插件工厂2022获取的插件A进行合法性校验,当确定插件A合法时,由插件功能组件管理器2023将插件A中的各类业务功能的功能组件存放至应用上下文2021中。
插件注册管理器20242,用于加载并注册插件合法校验器20241校验通过的插件,并在注册插件信息后,将与该插件相关的功能组件加入到应用上下文中。
比如,注册插件的id、版本、功能组件的路径以及插件是否可用等。然后将与插件相关的功能组件加入到应用上下文。
插件生命周期管理器20243,用于对插件工厂2022加载的插件进行启停等生命周期管理。
在本申请中,插件监听器2025,用于监听通过插件工厂2022加载且经过插件合法校验器20241检验合法的插件的生命周期,并根据插件生命周期改变而修改插件的状态;
比如,插件监听器2025监听到插件的生命周期发生变化,此时停用插件,将修改相应插件的状态为false,这样微服务业务系统在调用插件功能时,插件框架会根据这个插件状态,决定是否从应用上下文中寻找插件的功能组件,插件状态为false,微服务业务系统就无法调用插件的功能组件。
步骤101,通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件。
因此,在本申请中,当微服务业务系统加载了预先设计的插件框架后,通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件。
本申请中,微服务业务系统通过预先设计的插件框架,获取插件中用于实现需要扩展业务功能的功能组件时,需要插件框架中存储有用于实现各类业务功能的功能组件。
此时,需要插件框架获取用于实现各类业务功能的功能组件,插件框架是根据插件运行环境和插件路径,来获取各类业务功能的功能组件的;因此微服务业务系统通过加载的预先设计的插件框架,构建插件配置器,并使用插件框架提供的插件配置器设置插件运行环境和插件路径。
插件集成配置器,即插件框架为微服务业务系统提供的插件配置接口。在实现上表现为接口类,用于定义插件运行环境和插件路径,插件路径为插件存放路径。
在本申请中,插件运行环境主要包括开发环境和生产环境,其中开发环境下,直接加载插件路径下的CLASS文件;生产环境下,加载插件路径下的JAR包。
微服务业务系统通过预先设计的插件框架,创建插件框架的核心对象,插件框架的核心对象用于获取并存储插件中用于实现各类业务功能的功能组件的。
创建的插件框架的核心对象中包括有应用上下文、插件工厂、插件功能组件管理器、插件控制器以及插件监听器;
插件工厂根据插件运行环境和插件路径,加载并解析插件;通过插件控制器对插件工厂加载的插件进行合法性校验通过后,通过插件功能组件管理器将合法的插件中的功能组件存放至应用上下文中。
由于应用上下文与微服务业务系统建立关联关系,因此,微服务业务系统通过插件框架,获取插件中用于实现需要扩展的业务功能的功能组件时:调用定义的插件接口,从插件框架的应用上下文中存储的插件中用于实现各类业务功能的功能组件中,调用用于实现需要扩展的业务功能的功能组件。
在本申请中,用于编译插件的插件工程也需要加载预先设计的插件框架,同时引入主程序提供的插件接口,然后实现接口方法,即可完成插件的构建。
如图3所示,为本申请实施例提供的一种微服务业务系统通过预先设计的插件框架获取插件,进行功能扩展的框架示意图。
如图4所示,为本申请实施例提供的一种业务功能扩展的整体方法流程图,包括如下步骤:
步骤400,微服务业务系统需要进行业务功能扩展时,定义用于实现需要扩展的业务功能的插件接口;
步骤401,微服务业务系统加载预先设计的插件框架;
步骤402,微服务业务系统通过预先设计的插件框架,构建插件配置器;
步骤403,微服务业务系统通过构建的插件配置器,设置插件运行环境和插件路径,以使插件框架根据插件运行环境和插件路径,加载并解析插件;
步骤404,微服务业务系统通过预先设计的插件框架,创建插件框架的核心对象,以是插件框架的核心对象对加载并解析的插件中用于实现各类业务功能的功能组件进行存储;
步骤405,微服务业务系统通过调用插件接口,从插件框架的核心对象中存储的用于实现各类业务功能的功能组件中,调用插件中用于实现扩展的业务功能的功能组件。
因此在本申请中,通过该插件框架动态扩展业务功能时,该插件框架可以与多个微服务业务系统建立关联关系,提高插件框架的通用性,提高代码的复用率;且微服务业务系统直接调用插件框架中用于实现需要扩展的业务功能的功能组件,无需重新编译和部署原代码,提高了微服务业务系统的扩展性和部署效率,降低了原微服务业务系统的对应的主程序与功能扩展对应的扩展程序之间的耦合度,保证系统稳定性。
基于同一发明构思,本发明实施例中还提供了一种业务功能扩展的设备,由于该设备对应的是本发明实施例业务功能扩展的方法,并且该设备解决问题的原理与该方法原理相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,为本申请实施例提供的一种业务功能扩展的设备结构图,该设备包括:至少一个处理器500以及至少一个存储器501,其中,存储器501存储有程序代码,当程序代码被处理器500执行时,处理器500具体用于:
在需要进行业务功能扩展时,加载预先设计的插件框架;
通过预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件;
其中,插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,处理器500还用于:
通过预先设计的插件框架,获取插件中实现业务功能的功能组件之前,通过插件框架提供的插件配置器,设置插件运行环境和插件路径;以及
通过插件框架,创建插件框架的核心对象,以使插件框架的核心对象根据插件运行环境和插件路径,加载并解析插件,以获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,插件运行环境包括开发环境和生产环境;
根据插件运行环境和插件路径,加载并解析插件,包括:
当插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定CLASS文件存储的至少一个插件;或
当插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定JAR包中存储的至少一个插件。
在一种可能的实现方式中,处理器500还用于:
定义用于实现需要扩展的业务功能的插件接口。
在一种可能的实现方式中,处理器500具体用于:
调用插件接口,从插件框架中存储的插件中用于实现各类业务功能的功能组件中,调用用于实现需要扩展的业务功能的功能组件。
如图6所示,为本申请实施例提供的一种业务功能扩展的设备结构图,该设备包括:加载模块600和获取模块601,其中:
加载模块600,用于在需要进行业务功能扩展时,加载预先设计的插件框架;
获取模块601,用于通过预先设计的插件框架,获取插件中用于实现扩展的业务功能的功能组件;
其中,插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,获取模块601还用于:
通过预先设计的插件框架,获取插件中实现业务功能的功能组件之前,通过插件框架提供的插件配置器,设置插件运行环境和插件路径;以及
通过插件框架,创建插件框架的核心对象,以使插件框架的核心对象根据插件运行环境和插件路径,加载并解析插件,以获取并存储插件中用于实现各类业务功能的功能组件。
在一种可能的实现方式中,插件运行环境包括开发环境和生产环境;
根据插件运行环境和插件路径,加载并解析插件,包括:
当插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定CLASS文件存储的至少一个插件;或
当插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定JAR包中存储的至少一个插件。
在一种可能的实现方式中,该设备还包括定义模块602,定义模块602用于:
定义用于实现需要扩展的业务功能的插件接口。
在一种可能的实现方式中,获取模块601具体用于:
调用插件接口,从插件框架中存储的插件中用于实现各类业务功能的功能组件中,调用用于实现需要扩展的业务功能的功能组件。
在一种可能的实现方式中,本申请实施例还提供一种计算机可存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请实施例的业务功能扩展的方法步骤。
在一种可能的实施方式中,本申请提供的业务功能扩展的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的业务功能扩展的方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种插件框架,其特征在于,该框架包括:插件配置器和插件框架核心;其中:
所述插件配置器,用于配置插件运行环境,以及插件路径;
所述插件框架核心,用于根据所述插件运行环境和所述插件路径,确定并存储插件中用于实现各类业务功能的功能组件。
2.如权利要求1所述的插件框架,其特征在于,所述插件框架核心包括:插件工厂、插件功能组件Bean管理器、应用上下文,其中:
所述插件工厂,用于根据所述插件运行环境和所述插件路径,获取插件;
所述插件功能组件管理器,用于将所述插件工厂获取的插件中用于实现各类业务功能的功能组件,存放至所述应用上下文中;
所述应用上下文,用于存储用于实现各类业务功能的功能组件,且与微服务业务系统建立关联关系,以使所述微服务业务系统从所述应用上下文中获取用于实现需要扩展的业务功能的功能组件。
3.如权利要求2所述的插件框架,其特征在于,所述插件框架核心中还包括:插件控制器,所述插件控制器中还包括有:插件合法校验器、插件注册管理器以及插件生命周期管理器,其中;
所述插件合法校验器,用于所述插件功能组件管理器将插件中用于实现各类业务功能的功能组件,存放至所述应用上下文之前,对插件工厂获取的插件进行合法性校验;
所述插件注册管理器,用于加载并注册所述插件合法校验器校验通过的插件;
所述插件生命周期管理器,用于对所述插件工厂加载的插件进行生命周期管理。
4.如权利要求2所述的插件框架,其特征在于,所述插件运行环境包括开发环境和生产环境,所述插件工厂根据所述插件运行模式和插件路径,加载并解析插件,具体包括:
当所述插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定所述CLASS文件存储的至少一个插件;或
当所述插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定所述JAR包中存储的至少一个插件。
5.如权利要求2所述的插件框架,其特征在于,所述插件框架核心中还包括:插件监听器;
所述插件监听器,用于监听通过插件合法校验器校验合法的插件的生命周期,并根据插件生命周期修改插件的状态。
6.一种业务功能扩展的方法,其特征在于,该方法包括:
在需要进行业务功能扩展时,加载预先设计的插件框架;
通过所述预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件;
其中,所述插件框架用于获取并存储插件中用于实现各类业务功能的功能组件。
7.如权利要求6所述的方法,其特征在于,通过所述预先设计的插件框架,获取插件中实现所述业务功能的功能组件之前,还包括:
通过所述插件框架提供的插件配置器,设置插件运行环境和插件路径;以及
通过所述插件框架,创建插件框架的核心对象,以使所述插件框架的核心对象根据所述插件运行环境和所述插件路径,加载并解析插件,以获取并存储插件中用于实现各类业务功能的功能组件。
8.如权利要求7所述的方法,其特征在于,所述插件运行环境包括开发环境和生产环境;
所述根据所述插件运行环境和所述插件路径,加载并解析插件,包括:
当所述插件运行环境为开发环境时,加载并解析插件路径下的CLASS文件,确定所述CLASS文件存储的至少一个插件;或
当所述插件运行环境为生产环境时,加载并解析插件路径下的JAR包,确定所述JAR包中存储的至少一个插件。
9.如权利要求6~8任一所述的方法,其特征在于,该方法还包括:
定义用于实现需要扩展的业务功能的插件接口。
10.如权利要求9所述的方法,其特征在于,所述通过所述预先设计的插件框架,获取插件中用于实现需要扩展的业务功能的功能组件,包括:
调用所述插件接口,从所述插件框架中存储的插件中用于实现各类业务功能的功能组件中,调用用于实现需要扩展的业务功能的功能组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010920580.1A CN112114896A (zh) | 2020-09-04 | 2020-09-04 | 一种插件框架及业务功能扩展的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010920580.1A CN112114896A (zh) | 2020-09-04 | 2020-09-04 | 一种插件框架及业务功能扩展的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112114896A true CN112114896A (zh) | 2020-12-22 |
Family
ID=73802248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010920580.1A Withdrawn CN112114896A (zh) | 2020-09-04 | 2020-09-04 | 一种插件框架及业务功能扩展的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112114896A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467975A (zh) * | 2021-07-23 | 2021-10-01 | 福建天晴数码有限公司 | 一种解耦的程序开发方法及系统 |
CN115328375A (zh) * | 2022-06-30 | 2022-11-11 | 深圳市国电科技通信有限公司 | 用于智能量测终端的功能扩展方法、装置及智能终端 |
CN115562759A (zh) * | 2022-11-11 | 2023-01-03 | 广州嘉为科技有限公司 | 一种系统功能拓展方法、装置及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277537A1 (en) * | 2005-06-01 | 2006-12-07 | International Business Machines Corporation | Deployment of containers and container extensions in a modular code runtime platform through a runtime platform extension point |
US20120159145A1 (en) * | 2010-12-17 | 2012-06-21 | Oracle International Corporation | Plug-in system for software applications |
CN103645919A (zh) * | 2013-12-18 | 2014-03-19 | 用友软件股份有限公司 | 一种通过插件扩展管理信息系统功能的方法 |
CN103914287A (zh) * | 2012-12-31 | 2014-07-09 | 北京讯鸟软件有限公司 | 基于插件机制的软件系统及其实现方法 |
CN104123151A (zh) * | 2013-04-28 | 2014-10-29 | 百度在线网络技术(北京)有限公司 | 移动终端中应用程序的插件管理方法、装置和移动终端 |
CN104536776A (zh) * | 2014-11-28 | 2015-04-22 | 百度在线网络技术(北京)有限公司 | 一种在宿主端插件运行环境中运行插件应用的方法与装置 |
CN106648559A (zh) * | 2015-10-28 | 2017-05-10 | 广东电网有限责任公司佛山供电局 | Android应用插件化开发系统和方法 |
CN106681718A (zh) * | 2016-12-16 | 2017-05-17 | 武汉中地数码科技有限公司 | 一种基于工具集的桌面端插件框架及实现方法 |
CN111475227A (zh) * | 2020-04-02 | 2020-07-31 | 深圳创维-Rgb电子有限公司 | 业务插件加载实现方法、装置和终端设备 |
-
2020
- 2020-09-04 CN CN202010920580.1A patent/CN112114896A/zh not_active Withdrawn
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060277537A1 (en) * | 2005-06-01 | 2006-12-07 | International Business Machines Corporation | Deployment of containers and container extensions in a modular code runtime platform through a runtime platform extension point |
US20120159145A1 (en) * | 2010-12-17 | 2012-06-21 | Oracle International Corporation | Plug-in system for software applications |
CN103914287A (zh) * | 2012-12-31 | 2014-07-09 | 北京讯鸟软件有限公司 | 基于插件机制的软件系统及其实现方法 |
CN104123151A (zh) * | 2013-04-28 | 2014-10-29 | 百度在线网络技术(北京)有限公司 | 移动终端中应用程序的插件管理方法、装置和移动终端 |
CN103645919A (zh) * | 2013-12-18 | 2014-03-19 | 用友软件股份有限公司 | 一种通过插件扩展管理信息系统功能的方法 |
CN104536776A (zh) * | 2014-11-28 | 2015-04-22 | 百度在线网络技术(北京)有限公司 | 一种在宿主端插件运行环境中运行插件应用的方法与装置 |
CN106648559A (zh) * | 2015-10-28 | 2017-05-10 | 广东电网有限责任公司佛山供电局 | Android应用插件化开发系统和方法 |
CN106681718A (zh) * | 2016-12-16 | 2017-05-17 | 武汉中地数码科技有限公司 | 一种基于工具集的桌面端插件框架及实现方法 |
CN111475227A (zh) * | 2020-04-02 | 2020-07-31 | 深圳创维-Rgb电子有限公司 | 业务插件加载实现方法、装置和终端设备 |
Non-Patent Citations (3)
Title |
---|
HUMBERTO CERVANTES: "Automating Service Dependency Management in a Service-Oriented Component Model", 《LABORATOIRE LSR IMAG》, 31 December 2003 (2003-12-31) * |
相东飞;: "基于OSGi插件化的应用框架", 科技信息(学术研究), 25 April 2007 (2007-04-25) * |
翟世杰: "基于OSGI的动态插件开发框架的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 30 June 2012 (2012-06-30), pages 138 - 321 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467975A (zh) * | 2021-07-23 | 2021-10-01 | 福建天晴数码有限公司 | 一种解耦的程序开发方法及系统 |
CN113467975B (zh) * | 2021-07-23 | 2023-09-26 | 福建天晴数码有限公司 | 一种解耦的程序开发方法及系统 |
CN115328375A (zh) * | 2022-06-30 | 2022-11-11 | 深圳市国电科技通信有限公司 | 用于智能量测终端的功能扩展方法、装置及智能终端 |
CN115562759A (zh) * | 2022-11-11 | 2023-01-03 | 广州嘉为科技有限公司 | 一种系统功能拓展方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106156186B (zh) | 一种数据模型管理装置、服务器及数据处理方法 | |
CN112114896A (zh) | 一种插件框架及业务功能扩展的方法 | |
CN105657191B (zh) | 一种基于Android系统的应用增量升级方法及系统 | |
CN111399840B (zh) | 一种模块开发方法及装置 | |
EP3516847A1 (en) | Deployment of applications conforming to application data sharing and decision service platform schema | |
CN101924656A (zh) | 一种基于动态配置的网络设备cli实现方法和装置 | |
CN106844213A (zh) | 一种前端自动化测试方法及装置 | |
CN106648755B (zh) | 一种在安卓art环境中动态加载dex的方法及装置 | |
CN105022630A (zh) | 一种组件管理系统及组件管理方法 | |
CN110308999B (zh) | 一种应用间动态共享依赖包的方法、存储介质及移动终端 | |
CN106020877A (zh) | 系统环境配置自动更新方法及装置 | |
CN113805882A (zh) | 应用程序开发的方法、装置、电子设备及存储介质 | |
US20190050209A1 (en) | Method and system to develop, deploy, test, and manage platform-independent software | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
CN114610318A (zh) | 安卓应用程序的打包方法、装置、设备及存储介质 | |
CN112230918A (zh) | 一种使用iframe内嵌网页的web端开发方法 | |
CN107977243A (zh) | 一种第三方接口调用方法及装置 | |
CN112835587B (zh) | 一种编译集成方法及装置 | |
CN113360156B (zh) | 一种ios编译方法及相关设备 | |
CN116382694A (zh) | 一种提升容器环境下Maven工程编译速度的方法 | |
CN115760391A (zh) | 区块链中智能合约更改方法、装置、电子设备及存储介质 | |
CN106778270B (zh) | 一种恶意应用程序的检测方法及系统 | |
CN113778451B (zh) | 文件加载方法、装置、计算机系统和计算机可读存储介质 | |
CN112418796B (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201222 |