构件集成框架管理方法和装置与流程

文档序号:17089430发布日期:2019-03-13 23:16阅读:157来源:国知局
构件集成框架管理方法和装置与流程

本发明涉及集成框架技术领域,特别涉及一种构件集成框架管理方法和装置。



背景技术:

构件是一个具有独立能力的、可替换的软件部件,它在一个良好定义的体系结构语境下完成一定功能。

集成框架是一种软件架构,集成框架提供对于相似问题的一种统一的解决方案,集成框架的最终目标是能够动态地组装构件,实现构件的“即插即用”。

现有的构件集成框架(基于构件的集成框架)往往是“配置文件+冷启动”的方式,通过配置文件定义本次需要启动的构件,当需要启动的构件改变时则需要通过更改配置再重启框架的方式来完成,不能满足对于集成框架的实时性要求。



技术实现要素:

本发明实施例提供了一种构件集成框架管理方法和装置,能够提高集成框架的实时性。所述技术方案如下:

第一方面,本发明实施例提供了一种构件集成框架管理方法,所述方法包括:

周期性地检测本地配置文件,获取所述本地配置文件中的构件名称与版本号信息;

获取集成框架运行的构件的构件名称与版本号信息;

比较所述本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否相同;

当第一构件的名称存在于所述本地配置文件中,但不存在于所述集成框架运行的构件的构件名称中时,加载所述第一构件;

当第二构件的名称存在于所述集成框架运行的构件的构件名称中,但不存在于所述本地配置文件时,销毁所述第二构件;

当第三构件的名称同时存在于所述本地配置文件和所述集成框架运行的构件的构件名称中,但所述本地配置文件中的第三构件和所述集成框架运行的构件中的第三构件的版本号信息不同时,销毁所述集成框架运行的构件中的第三构件,并加载所述本地配置文件中记载的版本号信息对应的第三构件。

在本发明实施例的一种实现方式中,所述周期性地检测本地配置文件,包括:

通过定时线程读取所述本地配置文件中的构件名称与版本号信息。

在本发明实施例的一种实现方式中,所述加载所述第一构件,包括:

以动态库加载的方式运行所述第一构件中的createmodel函数,获取所述第一构件中create函数的运行指针;

通过运行create函数实现所述第一构件的创建。

在本发明实施例的一种实现方式中,所述销毁所述第二构件,包括:

以动态库加载的方式运行所述第二构件中的createmodel函数,获取所述第二构件中destroy函数的运行指针;

通过运行destroy函数实现所述第二构件的销毁。

在本发明实施例的一种实现方式中,所述方法还包括:

周期性地检测本地构件文件,获取所述本地构件文件的构件名称信息;

获取所述集成框架运行的构件的心跳信息;

当获取的所述构件名称信息中的第四构件的名称不存在对应的心跳信息,或所述心跳信息指示所述第四构件故障时,先销毁所述第四构件,再重新加载所述第四构件。

第二方面,本发明实施例提供了一种构件集成框架管理装置,所述装置包括:

检测模块,用于周期性地检测本地配置文件,获取所述本地配置文件中的构件名称与版本号信息;

获取模块,用于获取集成框架运行的构件的构件名称与版本号信息;

比较模块,用于比较所述本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否相同;

处理模块,用于当第一构件的名称存在于所述本地配置文件中,但不存在于所述集成框架运行的构件的构件名称中时,加载所述第一构件;

当第二构件的名称存在于所述集成框架运行的构件的构件名称中,但不存在于所述本地配置文件时,销毁所述第二构件;

当第三构件的名称同时存在于所述本地配置文件和所述集成框架运行的构件的构件名称中,但所述本地配置文件中的第三构件和所述集成框架运行的构件中的第三构件的版本号信息不同时,销毁所述集成框架运行的构件中的第三构件,并加载所述本地配置文件中记载的版本号信息对应的第三构件。

在本发明实施例的一种实现方式中,所述检测模块,用于通过定时线程读取所述本地配置文件中的构件名称与版本号信息。

在本发明实施例的一种实现方式中,所述处理模块,用于以动态库加载的方式运行所述第一构件中的createmodel函数,获取所述第一构件中create函数的运行指针;

通过运行create函数实现所述第一构件的创建。

在本发明实施例的一种实现方式中,所述处理模块,用于以动态库加载的方式运行所述第二构件中的createmodel函数,获取所述第二构件中destroy函数的运行指针;

通过运行destroy函数实现所述第二构件的销毁。

在本发明实施例的一种实现方式中,所述检测模块,还用于周期性地检测本地构件文件,获取所述本地构件文件的构件名称信息;

所述获取模块,还用于获取所述集成框架运行的构件的心跳信息;

所述处理模块,还用于当获取的所述构件名称信息中的第四构件的名称不存在对应的心跳信息,或所述心跳信息指示所述第四构件故障时,先销毁所述第四构件,再重新加载所述第四构件。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例通过获取本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息,来确定本地配置文件定义的需要启动的构件是否改变,当需要启动的构件改变时,自动进行构件的启动、销毁或者更新,无需重启构件集成框架,节省了改变构件配置的时间,能够满足对于集成框架的实时性要求。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种构件集成框架管理方法的流程图;

图2是本发明实施例提供的一种构件集成框架管理方法的流程图;

图3是本发明实施例提供的一种构件集成框架管理装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1是本发明实施例提供的一种构件集成框架管理方法的流程图。参见图1,该方法包括:

步骤101:周期性地检测本地配置文件,获取所述本地配置文件中的构件名称与版本号信息。

其中,本地配置文件包括集成框架本次启动所要运行的构件名称与版本号信息,在终端设备中,本地配置文件为一个指定的文件,例如applicationcontext.xml,其存放在固定位置,从而便于终端设备进行读取。集成框架是终端设备中的一种软件架构,集成框架以及构件均运行在终端设备中,故本申请提供的构件集成框架管理方法由终端设备执行,该终端设备可以是个人计算机、服务器、移动终端等。

在集成框架中,构件包括功能构件和业务构件,一些不涉及具体业务的功能所组成的构件称为功能构件,例如具有定时功能、构件版本通知、构件心跳、构件流量、用户数据报协议(userdatagramprotocol,udp)、文件传输协议(filetransferprotocol,ftp)、串口报文收发等功能的构件,具体的消息中间件也可以称为功能构件。而业务构件则涉及具体的业务功能,如设备监测构件、设备控制构件等。

步骤102:获取集成框架运行的构件的构件名称与版本号信息。

其中,集成框架运行的构件的构件名称与版本号信息可以通过集成框架获取到。

步骤103:比较所述本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否相同。

比较本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否完全一致,如果存在不同之处,则按照步骤104的方式进行自动化的启动、销毁或者更新。如果二者完全相同,则不执行步骤104,周期性地执行步骤101和102。

步骤104:当第一构件的名称存在于所述本地配置文件中,但不存在于所述集成框架运行的构件的构件名称中时,加载所述第一构件;当第二构件的名称存在于所述集成框架运行的构件的构件名称中,但不存在于所述本地配置文件时,销毁所述第二构件;当第三构件的名称同时存在于所述本地配置文件和所述集成框架运行的构件的构件名称中,但所述本地配置文件中的第三构件和所述集成框架运行的构件中的第三构件的版本号信息不同时,销毁所述集成框架运行的构件中的第三构件,并加载所述本地配置文件中记载的版本号信息对应的第三构件。

本发明实施例通过获取本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息,来确定本地配置文件定义的需要启动的构件是否改变,当需要启动的构件改变时,自动进行构件的启动、销毁或者更新,无需重启构件集成框架,节省了改变构件配置的时间,能够满足对于集成框架的实时性要求。

图2是本发明实施例提供的一种构件集成框架管理方法的流程图。参见图2,该方法包括:

步骤201:周期性地检测本地配置文件,获取所述本地配置文件中的构件名称与版本号信息。

其中,本地配置文件包括集成框架本次启动所要运行的构件名称与版本号信息,在终端设备中,本地配置文件为一个指定的文件,例如applicationcontext.xml,其存放在固定位置,从而便于终端设备进行读取。集成框架是终端设备中的一种软件架构,集成框架以及构件均运行在终端设备中,故本申请提供的构件集成框架管理方法由终端设备执行,该终端设备可以是个人计算机、服务器、移动终端等。

在集成框架中,构件包括功能构件和业务构件,一些不涉及具体业务的功能所组成的构件称为功能构件,例如具有定时功能、构件版本通知、构件心跳、构件流量、udp、ftp、串口报文收发等功能的构件,具体的消息中间件也可以称为功能构件。而业务构件则涉及具体的业务功能,如设备监测构件、设备控制构件等。

在本发明实施例中,所述周期性地检测本地配置文件,包括:

通过定时线程读取所述本地配置文件中的构件名称与版本号信息。

在本发明实施例中,检测周期性可以为10~30s,具体可以根据构件的多少来确定。例如,集成框架运行的构件为20多个,则可以设置为10s一次循环;集成框架运行的构件为100多个,循环时间为30s。

步骤202:获取集成框架运行的构件的构件名称与版本号信息。

其中,集成框架运行的构件的构件名称与版本号信息可以通过集成框架获取到。

在本发明实施例中,所述获取集成框架运行的构件的构件名称与版本号信息,包括:

通过定时线程读取集成框架运行的构件的构件名称与版本号信息。

在本发明实施例中,步骤201和步骤202可以采用同一个定时线程完成。

在构件运行时会定时向集成框架告知当前运行版本及运行状态,因此,步骤202中,只需要定时向集成框架读取构件名称与版本号信息即可。

步骤203:比较所述本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否相同。当第一构件的名称存在于所述本地配置文件中,但不存在于所述集成框架运行的构件的构件名称中时,执行步骤204;当第二构件的名称存在于所述集成框架运行的构件的构件名称中,但不存在于所述本地配置文件时,执行步骤205;当第三构件的名称同时存在于所述本地配置文件和所述集成框架运行的构件的构件名称中,但所述本地配置文件中的第三构件和所述集成框架运行的构件中的第三构件的版本号信息不同时,执行步骤206。

比较本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否完全一致,如果存在不同之处,则按照步骤204~206的方式进行自动化的启动、销毁或者更新。如果二者完全相同,则不执行步骤204~206,周期性地执行步骤201和202。

步骤204:加载所述第一构件。

在本发明实施例的一种实现方式中,所述加载所述第一构件,包括:

以动态库加载的方式运行所述第一构件中的createmodel函数,获取所述第一构件中create函数的运行指针;通过运行create函数实现所述第一构件的创建。

在本发明实施例中,各个构件作以动态库加载的方式运行,某个动态库出问题时,不会影响整个构件集成框架的运行,避免一般框架(如java中的spring框架)下,单个进程故障,影响整个构件集成框架的运行的问题。

本发明实施例提供了一种自动化的构件集成框架,采用面向对象中虚函数机制实现对构件启动与销毁的控制,从而实现构件的启动、销毁、更新的自动化。

其中,集成框架中的构件实现类基于一个基类,该基类包括init(初始化)、create(创建)、destroy(销毁)、rcvclass(消息接受)和createmodel(该函数的主要作用为返回运行指针)等函数,这些函数除了createmodel函数外,其他的函数在构件的实现中都是以虚函数的形式存在的,集成框架在调用构件时可以通过由createmodel所返回的指针直接调用init、create、destroy、rcvclass等函数以实现具体的业务功能,此外rcvclass还具有消息触发实现构件间通信以实现多个构件来完成一个功能的需求。

其中,createmodel为暴露在外的函数,其输入参数为构件名称与基础构件类指针,返回值为功能构件类指针,其中createmodel函数的输入参数和返回值是程序中写定的。终端设备通过以动态库的方式运行所述第一构件中的createmodel函数,即可得到第一构件中的函数的运行指针。因为每个构件存在的表现形式为动态库,集成框架在运行时也是根据本地配置文件去识别并加载这些动态库的,加载了该动态库后,即可通过暴露在外的createmodel函数得到上述虚函数的运行指针,从而通过该运行指针来调用构件内部的init、create、destroy等函数。

步骤205:销毁所述第二构件。

在本发明实施例的一种实现方式中,所述销毁所述第二构件,包括:

以动态库加载的方式运行所述第二构件中的createmodel函数,获取所述第二构件中destroy函数的运行指针;通过运行destroy函数实现所述第二构件的销毁。

步骤206:销毁所述集成框架运行的构件中的第三构件,并加载所述本地配置文件中记载的版本号信息对应的第三构件。

其中,销毁第三构件的具体实现方式与步骤205相同,加载第三构件的具体实现方式与步骤204相同。

步骤207:周期性地检测本地构件文件,获取所述本地构件文件的构件名称信息。

在本发明实施例中,所述周期性地检测本地构件文件,包括:

通过定时线程读取本地构件文件,获取所述本地构件文件的构件名称信息。本地构件文件存放在固定位置,从而便于终端设备进行检测。

在本发明实施例中,检测周期性可以为10~30s,具体可以根据构件的多少来确定。例如,集成框架运行的构件为20多个,则可以设置为10s一次循环;集成框架运行的构件为100多个,循环时间为30s。

步骤208:获取所述集成框架运行的构件的心跳信息。当获取的所述构件名称信息中的第四构件的名称不存在对应的心跳信息,或所述心跳信息指示所述第四构件故障时,执行步骤209。当心跳信息指示第四构件运行正常时,不执行步骤209,周期性地执行步骤207和208。

其中,心跳信息用于传递构件的运行状态,当不存在某个构件的心跳信息时,说明该构件发生故障。

在本发明实施例中,所述获取所述集成框架运行的构件的心跳信息,包括:

通过定时线程获取集成框架运行的构件的心跳信息。这里读取心跳信息可以持续一段时间,避免遗漏。

具体地,由于构件在传输消息时需要通过消息中间件来完成,因此,该步骤可以包括:通过定时线程从消息中间件获取各个构件发出的心跳消息。

在本发明实施例中,步骤207和步骤208可以采用同一个定时线程完成。

步骤209:先销毁所述第四构件,再重新加载所述第四构件。

其中,步骤209的具体实现方式与步骤204相同。

在本发明实施例中,如果构件运行故障,此时优先通过步骤209的方式重启该构件。

如果多次重启该构件无效,则产生故障信息,从而便于工作人员进行维护。

其中,上述第一构件、第二构件、第三构件和第四构件均可以为任一构件。

在本发明实施例中,步骤207~步骤209与步骤201~步骤206之间没有先后顺序。

图3是本发明实施例提供的一种构件集成框架管理装置的结构示意图。参见图3,该装置包括:检测模块301、获取模块302、比较模块303和处理模块304。

其中,检测模块301用于周期性地检测本地配置文件,获取所述本地配置文件中的构件名称与版本号信息。获取模块302用于获取集成框架运行的构件的构件名称与版本号信息。比较模块303用于比较所述本地配置文件中的构件名称与版本号信息与所述集成框架运行的构件的构件名称与版本号信息是否相同。处理模块304用于当第一构件的名称存在于所述本地配置文件中,但不存在于所述集成框架运行的构件的构件名称中时,加载所述第一构件;当第二构件的名称存在于所述集成框架运行的构件的构件名称中,但不存在于所述本地配置文件时,销毁所述第二构件;当第三构件的名称同时存在于所述本地配置文件和所述集成框架运行的构件的构件名称中,但所述本地配置文件中的第三构件和所述集成框架运行的构件中的第三构件的版本号信息不同时,销毁所述集成框架运行的构件中的第三构件,并加载所述本地配置文件中记载的版本号信息对应的第三构件。

在本发明实施例的一种实现方式中,所述检测模块301,用于通过定时线程读取所述本地配置文件中的构件名称与版本号信息。

在本发明实施例的一种实现方式中,所述处理模块304,用于以动态库加载的方式运行所述第一构件中的createmodel函数,获取所述第一构件中create函数的运行指针。通过运行create函数实现所述第一构件的创建。

在本发明实施例的一种实现方式中,所述处理模块304,用于以动态库加载的方式运行所述第二构件中的createmodel函数,获取所述第二构件中destroy函数的运行指针。通过运行destroy函数实现所述第二构件的销毁。

在本发明实施例的一种实现方式中,所述检测模块301,还用于周期性地检测本地构件文件,获取所述本地构件文件的构件名称信息。所述获取模块302,还用于获取所述集成框架运行的构件的心跳信息。所述处理模块304,还用于当获取的所述构件名称信息中的第四构件的名称不存在对应的心跳信息,或所述心跳信息指示所述第四构件故障时,先销毁所述第四构件,再重新加载所述第四构件。

需要说明的是:上述实施例提供的构件集成框架管理装置在管理集成框架的构件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的构件集成框架管理装置与构件集成框架管理的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1