CN105242910B - 基于中间件插件框架的插件状态控制方法及客户端 - Google Patents
基于中间件插件框架的插件状态控制方法及客户端 Download PDFInfo
- Publication number
- CN105242910B CN105242910B CN201410286399.4A CN201410286399A CN105242910B CN 105242910 B CN105242910 B CN 105242910B CN 201410286399 A CN201410286399 A CN 201410286399A CN 105242910 B CN105242910 B CN 105242910B
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- middleware
- verification
- card cage
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种基于中间件插件框架的插件状态控制方法及客户端,该方法包括:设置客户端中的中间件插件框架;中间件单元中的插件管理器获取客户端中已经安装的插件,生成第一插件列表;插件管理器将该第一插件列表与状态获取请求一同发送至服务端,并接收服务端返回的与该第一插件列表对应的第二插件列表,所述第二插件列表中存储有通过校验的插件的插件标识符和每个通过校验的插件的状态信息;插件管理器从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态。利用本发明可通过创建的中间件插件框架,快速开发出自定义的功能插件,并控制插件状态。
Description
技术领域
本发明涉及一种中间件设计系统及方法,尤其涉及一种基于中间件插件框架的插件状态控制方法及客户端。
背景技术
传统的插件开发需要大量技术人员来完成,且开发的插件与中间件(如iPanel中间件)的耦合性太高,安全性偏低,无法通过插件对相应底层设备进行控制。同时,现有的中间件无法对插件状态和资源使用情况进行控制。
从现在发展趋势看,中间件的功能扩展已经非常复杂,维护起来需要大量的资源,而中间件本身特有内容的维护时间却相对较少,严重影响产品各方面质量。同时,现有的中间件缺少必要的灵活性,功能扩展性较差,给开发及维护人员带来很大负担。
发明内容
鉴于以上内容,有必要提供一种基于中间件插件框架的插件状态控制方法及客户端,其可通过创建的中间件插件框架,快速开发出自定义的功能插件,并运行于中间件上,利用中间件控制插件状态。
一种基于中间件插件框架的插件状态控制方法,运行于客户端,该方法包括:设置客户端中的中间件插件框架,该中间件插件框架包括中间件单元和插件单元,所述中间件单元包括插件管理器、Web引擎及应用程序接口API模块,所述插件单元包括一个插件库和一个插件框架模块,所述插件框架模块包括插件接口和框架接口;中间件单元中的插件管理器获取客户端中已经安装的插件,生成第一插件列表,所述第一插件列表中存储有所获取插件的插件标识符和版本号;插件管理器将该第一插件列表与状态获取请求一同发送至服务端,并接收服务端返回的与该第一插件列表对应的第二插件列表,所述第二插件列表中存储有通过校验的插件的插件标识符和每个通过校验的插件的状态信息;插件管理器从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态。
一种基于中间件插件框架的客户端,该客户端包括:中间件插件框架,该中间件插件框架包括中间件单元和插件单元,所述中间件单元包括插件管理器、Web引擎及应用程序接口API模块,所述插件单元包括一个插件库和一个插件框架模块,所述插件框架模块包括插件接口和框架接口;所述插件管理器用于,获取客户端中已经安装的插件,生成第一插件列表,所述第一插件列表中存储有所获取插件的插件标识符和版本号;所述插件管理器还用于,将该第一插件列表与状态获取请求一同发送至服务端,并接收服务端返回的与该第一插件列表对应的第二插件列表,所述第二插件列表中存储有通过校验的插件的插件标识符和每个通过校验的插件的状态信息;所述插件管理器还用于,从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态。
相较于现有技术,上述基于中间件插件框架的插件状态控制方法及客户端,通过创建的中间件插件框架,快速开发出自定义的功能插件,并运行于中间件上,利用中间件控制插件状态。
本发明满足快速增长的用户个性化业务需求,第三方开发者可以根据中间件插件框架提供的插件接口快速开发出个性化的插件应用程序,然后由中间件进行控制运行,从而降低了第三方插件功能开发的难度,提高了中间件的可扩展性,减少了中间件技术人员与第三方插件开发者在沟通交流确认等繁琐事务上的时间。
附图说明
图1是本发明中间件插件框架设计系统的主体示意图;
图2是本发明中间件插件框架设计系统的应用环境示意图;
图3是本发明中间件插件框架设计方法的主体流程图。
图4是插件单元中的插件框架模块与中间件单元中的API模块的关联图。
图5是本发明基于中间件插件框架的插件状态控制方法的主体流程图。
图6是插件包制作流程示意图。
图7是对第一插件列表和第二插件列表中的字段说明。
图8是本发明基于中间件插件框架的插件内存资源控制方法的主体流程图。
图9是本发明基于中间件插件框架的插件文档资源控制方法的主体流程图。
图10是本发明基于中间件插件框架的插件Socket资源控制方法的主体流程图。
图11是本发明基于中间件插件框架的插件安全控制方法中插件安全发布流程图。
图12是本发明基于中间件插件框架的插件安全控制方法中插件下载校验流程图。
图13是本发明基于中间件插件框架的插件安全控制方法中插件运行校验流程图。
具体实施方式
如图1所示,是本发明中间件插件框架设计系统的主体示意图。在本发明中,所述中间件插件框架设计系统20包括中间件单元21和插件单元22。其中,所述中间件单元21包括插件管理器(Plugin Manager)210、Web引擎(即网页引擎)211及API(ApplicationProgram Interface,应用程序接口)模块213。例如,所述中间件单元21可以为iPanel中间件。
在本实施例中,所述Web引擎211为WebCore引擎,所述API模块213包括多个中间件基础功能函数,如Timer(时钟)相关函数、Socket(套接字)处理函数、线程处理函数、图形图像处理函数、文件操作函数、事件处理函数、私有Java脚本对象注册函数、字体操作函数、及绘图(Graphics)相关函数等。
所述插件单元22包括一个插件库220和一个插件框架(FrameWork)模块221。所述插件库220包括一个或多个插件应用程序(插件App,以下简称为“插件”),所述插件框架模块221进一步包括插件接口2210和框架接口2212。
所述框架接口2212由中间件(如中间件单元21)实现供插件库220中的插件调用,达到插件单元22向中间件单元21的单向通信目的,插件单元22通过此框架接口2212获取诸如:时钟、线程、socket、graphics、文件管理等中间件单元21的系统资源,如内存资源,文档资源(如文本、图片、声音、视频等),及Socket资源等。所述插件接口2210由插件实现供中间件单元21调用,达到中间件单元21向插件单元22的单向通信目的,中间件单元21通过插件接口2210调用插件所实现的功能,如读取插件处理数据等。
在本实施例中,所述插件管理器210与插件单元22的插件接口2210连接,用于控制插件的校验、安装(包括下载、加载等)和卸载等操作。所述Web引擎211与插件单元22的框架接口2212连接,用于当插件通过插件管理器210的校验后,启动该插件。所述插件接口2210包括一个或多个API程序接口,所述框架接口2212提供一个插件基础框架,该插件基础框架可以是NP(Netscape,网景)插件框架,包括插件从加载到销毁整个生命周期的框架。
一个插件基础框架的例子如下:
在上述插件基础框架的例子中,其所定义的函数指针已基本包含一个插件所有可执行程序的应有接口。基于上述插件基础框架,可以构造一个或多个插件接口2210(如API程序接口)。
根据上述插件基础框架构造的一个绘图应用程序接口的例子如下:
//插件创建时调用,对应在上面的newp中
PluginHandle plugin_create(void*npp,McSurface compat,int,int);
//插件销毁时调用,对应在上面的destroy中
void plugin_destroy(PluginHandle);
//插件开始运行时调用,对应上面的setwindow
int plugin_run(PluginHandle);
//插件发生事件响应时调用,对应上面的event
int plugin_handle_event(PluginHandle,unsigned int,unsigned int,
unsigned int);
//插件开始画图时调用,可以在setwindow当中开始
McSurface plugin_paint(PluginHandle me,int x,int y,int w,int h);
//设置页面插件object标签的某一属性值
//如:<object classid=“plugin:image”width=“400px”height=“10px”>
//则在下面函数调用时,如果key=“width”,value将返回400px
void plugin_set_param(PluginHandle me,char*key,char*value);
//以下是获取插件的相关描述字段,对应上面的getvalue
char*ipanel_plugin_porting_get_description();
char*ipanel_plugin_porting_get_name();
char*ipanel_plugin_porting_get_description_string()
当所述插件接口2210中的API程序接口被插件调用时,插件管理器210将调用的API程序接口映射到中间件单元21中的API模块213中相应的API基础功能函数,调用该相应的API基础功能函数,如绘图相关函数等,以完成相应的插件功能。插件框架模块221与中间件单元21中的API模块213的关联关系参阅图4所示。当一个插件需要中间件单元21中的API模块213提供的API基础功能函数时,插件管理器210将插件接口2210中相应的API程序接口填充到所述框架接口2212。当所述插件接口2210中的API程序接口被该插件调用时,将调用的API程序接口映射到中间件单元21中的API模块213中相应的API基础功能函数,调用该相应的API基础功能函数,以完成该插件的功能。
例如,当一个插件需要显示图片时,需要中间件单元21中的API模块213提供的图片处理函数(如图片解码函数)提供支持,则插件管理器210将插件接口2210中的图片程序接口填充到框架接口2212,并将图片程序接口映射到API模块213中的图片处理函数,调用该图片处理函数来显示图片。
参阅图2所示,所述中间件插件框架设计系统20应用于客户端2,所述客户端2可以是数字机顶盒等电子装置。第三方开发者可以根据插件接口2210提供的一个或多个API程序接口,开发出相应的插件,并通过打包加密工具10将开发出的插件上传至服务端1,该打包加密工具10可以由客户端2提供。插件管理器210与服务端1通讯连接,可以通过HTTP(Hypertext Transfer Protocol,超文本传输协议)或其它网络传输协议从服务端1下载插件的加密数据包,并将下载的插件存储于插件单元22的插件库220。
需要说明的是,上述服务端1和客户端2还包括其他必要的硬件资源和软件系统,如显示屏幕、输入设备、存储器、处理器和操作系统等。所述服务端1和客户端2可以提供一个或多个模块,所述一个或多个模块被存储在所述服务端1和客户端2的存储器中并被配置成由服务端1和客户端2的处理器执行,以完成本发明。本发明所称的模块是完成一特定功能的计算机程序段,比程序更适合于描述软件在服务端1和客户端2中的执行过程。
当客户端2启动时,所述插件管理器210会检测插件库220中插件的合法性,例如,检测插件库220中的插件版本与服务端1中的插件版本是否一致,检测插件库220中的插件内容与服务端1中的插件内容是否一致等。
所述插件管理器210还用于控制插件的安装、更新、及卸载等操作,具体描述参阅图5至图7的说明。
以下结合图3进一步描述中间件插件框架设计系统20(以下简称为“中间件插件框架20”)的运作流程。
如图3所示,是本发明中间件插件框架设计方法的主体流程图。
步骤S101,设置客户端2中的中间件插件框架20,包括中间件单元21和插件单元22。
步骤S102,当客户端2接收到一个插件请求时,中间件单元21的插件管理器210根据该插件请求中的插件标识符(记为“classid”)查找对应的插件。在本实施例中,所述插件标识符为一个字符串,一个插件对应唯一的插件标识符。参阅图2所示,一个插件可以通过HTML(Hypertext Markup Language,超文本链接标示语言)页面向客户端2触发一个插件请求(页面触发),该插件请求包括该插件的唯一标识符classid。插件管理器210根据该插件标识符classid对该插件进行统一管理。
步骤S103,当查找到对应的插件后,插件管理器210将插件单元22的插件框架模块221中的框架接口2212注册到中间件单元21的Web引擎211,以启动该插件。在其他实施例中,该插件也可以在客户端2开机后自动从后台启动,并由插件管理器210触发管理。
步骤S104,插件管理器210给该插件随机分配一个插件实例标识符(记为“pluginid”),并建立上述插件标识符classid与该插件实例标识符pluginid的关联。插件的运行需要创建一个插件实例,通过该插件实例完成相应的插件操作,例如,如果插件为Flash播放器,则插件实例可以是正在播放的Flash播放器,多实例就是同时开启多个Flash播放器同时进行播放,每一个在播放的Flash播放器都是一个插件实例。在本实施例中,所述插件实例标识符可以是一个随机整数,一个插件实例对应唯一的插件实例标识符。
步骤S105,在该插件运行的过程中,插件单元22中的插件框架模块221根据上述插件实例标识符控制该插件的资源使用情况。在本实施例中,资源使用情况的控制包括,但不限于,内存资源使用控制机制、文档资源使用控制机制、Socket资源使用控制机制,具体描述参阅图8至图10的描述。
进一步地,所述中间件插件框架设计系统20设置有插件安全机制,用于加密和校验第三方开发的插件,整个加密体系包括三个方面的流程,安全发布流程、下载校验流程和运行校验流程,具体描述参阅图11至图13的说明。
在本实施例中,所述中间件插件框架设计系统20具有以下特性::
(1)可靠性和安全性
中间件插件框架设计系统20充分考虑插件的安全机制:在插件包制作过程中进行签名和加密处理,在发布、下载、运行三个阶段进行多层校验,确保插件的整个生命周期中软件程序的安全可控。
(2)与中间件的低耦合性
插件的下载、加载由插件管理器210管理,运行由插件框架模块221控制,而这两者都是从中间件中剥离出来可以独立构成的模块,具有独立的流程数据行为,两者与中间件的唯一交互通道就是框架接口2212在Web引擎211中的提供给外部模块使用的接口。插件作为单独的功能模块,相互之间独立运行,通过统一接口与中间件单元21进行通信,无直接关联。
(3)开发实现的高效性
根据插件的一般功能性需求,中间件插件框架设计系统20整合了中间件软件结构,搭建出插件开发基本框架,第三方开发者只需根据插件接口2210提供的一个或多个API程序接口,开发出相应的插件,即可实现一个可被中间件单元21识别的合法插件。
各个功能模块(如中间单元21、插件单元22)可以并行开发,有效缩短开发周期。由于具体的功能细化到插件,功能剥离后整个中间件单元21结构更清晰,降低了系统设计复杂度,同时降低了功能变化带来的风险,实现中间件功能组件的“即插即用”。
(4)插件运行可控性
鉴于中间件单元21在客户端2的主导作用,在本实施例中,通过插件的校验和插件资源使用情况的控制,插件的行为被适当约束,包括禁止加载非法未授权的插件、监控合法插件的操作行为、合理控制插件申请和使用中间件单元21的系统资源等,防止中间件单元21负荷过载而无法正常运行。
以下结合图5至图7的描述具体介绍所述插件管理器210控制插件的安装、更新、及卸载等操作。
参阅图5所示,是本发明基于中间件插件框架的插件状态控制方法的主体流程图。该方法基于上述的中间件插件框架。
步骤S201,客户端2开机时,中间件单元21中的插件管理器210获取客户端2中已经安装的插件,生成第一插件列表。在本实施例中,所述第一插件列表为XML(ExtensibleMarkup Language,可扩展标记语言)格式文件。所述第一插件列表中存储有所获取插件的插件标识符和版本号等信息。
参阅图6所示,在本实施例中,一个插件在开发完成后,需要使用客户端2提供的打包加密工具10,对插件应用程序(*.so文件)和插件描述信息(*.json文件)进行加密打包生成加密插件包(*.zip)上传至服务端1。其中*.json格式的插件描述信息中包含了插件的标识符(classid)、版本(Version)、加密参数(key、MD5)等基本信息。终端中间件在安装该插件前,需要使用上述插件描述信息对其合法性进行校验。
步骤S202,插件管理器210将该第一插件列表与状态获取请求一同发送至服务端1,并接收服务端1返回的与该第一插件列表对应的第二插件列表。在本实施例中,所述第二插件列表为XML格式文件,所述第二插件列表中存储有通过服务端1校验的插件的插件标识符和每个通过校验的插件的状态信息。所述状态信息包括,但不限于,安装状态、更新状态、及卸载状态。例如,如果第一插件列表中的插件版本号与服务端1中最新的版本号不一致,则判定插件需要更新(更新状态)。
在本实施例中,所述插件管理器210通过HTTP POST方式向服务端1发送状态获取请求。当服务端1接收到该状态获取请求时,先对第一插件列表中存储的插件标识符进行校验。例如,所述校验包括:验证第一插件列表中存储的插件标识符是否与服务端1存储的插件标识符一致。
如果第一插件列表中存储的插件标识符与服务端1存储的插件标识符一致,则判定校验通过。如果第一插件列表中存储的插件标识符与服务端1存储的插件标识符不一致(如第一插件列表中存储的插件标识符中服务端1中不存在),则判定校验不通过。
当第一插件列表中存储的插件标识符通过验证时,服务端1获取通过校验的插件的状态信息,并将通过校验的插件的插件标识符和每个通过校验的插件的状态信息写入第二插件列表,返回响应第一插件列表的第二插件列表至客户端1,即该第二插件列表根据第一插件列表生成。
举例而言,假设客户端2的第一插件列表包括以下XML格式的内容:
则服务端1返回的包含插件状态信息的第二插件列表包括以下XML格式的内容:
<?xml version="1.0"encoding="gb2312"?>
<PLUGINS_RESPOND>
<ITEM>
<ID>e050f85d58cd047b</ID>
<STATUS>install</STATUS>
</ITEM>
<ITEM>
<ID>d165a44405d7f99c</ID>
<STATUS>uninstall</STATUS>
</ITEM>
<ITEM>
<ID>11bb9bc710cc8bc6</ID>
<STATUS>update</STATUS>
</ITEM>
</PLUGINS_RESPOND>
关于上述举例中第一插件列表和第二插件列表中各字段的说明参阅图7的描述。例如,“install”代表安装,“uninstall”代表卸载,“update”代表更新。其中,<ID>字段代表第一插件列表和第二插件列表中的插件标识符。在本实施例中,所述<ID>字段为插件标识符classid,在其他实施例中,所述<ID>字段也可以为插件实例标识符pluginid。
步骤S203,当客户端1接收到第二插件列表后,客户端1中的插件管理器210从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态,具体流程包括步骤S204至步骤S206。
步骤S204,如果该通过校验的插件的状态信息为第一预设字符(如“install”),则插件管理器210根据插件标识符控制该通过校验的插件进行安装。
步骤S205,如果该通过校验的插件的状态信息为第二预设字符(如“update”),则插件管理器210根据插件标识符控制通过校验的插件进行更新。具体而言,插件管理器210先删除客户端1本地旧版本的插件,然后从服务端1下载新版本的插件,新版本的插件校验通过后,安装于客户端1本地。
步骤S206,如果该通过校验的插件的状态信息为第三预设字符(如“uninstall”),则插件管理器210根据插件标识符控制通过校验的插件进行卸载。
在其他实施例中,插件管理器210也可以每隔预设间隔时间(如24小时),向服务端1发送状态获取请求,获取插件最新的状态信息,以达到实时更新插件状态的目的。
以下结合图8至图10的描述具体介绍所述插件单元22中的插件框架模块221根据插件实例标识符控制插件操作的资源使用情况,包括内存操作、文档操作、及Socket(套接字)操作等。
参阅图8所示,是本发明基于中间件插件框架的插件内存资源控制方法的主体流程图。该方法基于上述的中间件插件框架。
步骤S301,当客户端2的一个插件启动时,插件管理器210对该插件进行验证。例如,验证该插件的插件标识符classid是否在插件库220中存在,如果存在,则验证通过,执行步骤S302。
步骤S302,当该插件通过验证时,插件管理器210给该插件随机分配一个插件实例标识符pluginid,并建立该插件的插件标识符classid与该插件实例标识符pluginid的关联。
在本实施例中,所述插件实例标识符pluginid代表一个具体的插件实例,该插件实例由Web引擎211从插件单元22开始启动。插件运行期间的各API应用程序的调用均需携带pluginid通过插件管理器210映射到中间件单元21的API模块213中。
步骤S303,在该插件运行的过程中,插件单元22中的插件框架模块221将该插件实例标识符pluginid注册到插件框架模块221的插件接口2210中。
在该插件进行内存操作时(如内存读写),其资源的申请将受到基于pluginid注册所在插件实例的预先设置的内存操作条件控制,符合预先设置的内存操作条件的插件接口可以成功的申请到中间件单元21的系统资源,否则资源申请将失败。需要说明的是,插件实例标识符pluginid在插件销毁的同时将被销毁。
步骤S304,当该插件进行内存操作时,插件框架模块221根据预先设置的内存操作条件和该插件的插件实例标识符,监测该插件的内存操作。
举例而言,假设步骤S302随机分配的插件实例标识符pluginid为9527,则插件框架模块221监测pluginid为9527的插件实例的内存操作是否符合预先设置的内存操作条件。
步骤S305,插件框架模块221判断该插件的内存操作是否符合预先设置的内存操作条件。如果符合预先设置的内存操作条件,则执行步骤S306;如果不符合预先设置的内存操作条件,则执行步骤S307。
举例而言,在本实施例中,所述预先设置的内存操作条件包括:内存申请大小上限值为第一预设值。假设所述第一预设值为3M,如果该插件的内存申请大小小于或等于3M,则插件框架模块221判定该插件的内存操作符合预先设置的内存操作条件,即该插件的内存操作合法。如果该插件的内存申请大小大于3M,则插件框架模块221判定该插件的内存操作不符合预先设置的内存操作条件,即该插件的内存操作不合法。在其他实施例中,所述内存操作条件还可以包括默认的附加条件(如:系统操作路径),以便将第三方插件的操作限制在一个可控范围内,从而保证中间件单元21的顺利运行。
需要说明的是,所述预先设置的内存操作条件可以在步骤S303跟随pluginid注册到插件框架模块221的插件接口2210中,也可以内置于插件的描述信息中(无需注册),甚至可以一部分条件内置于插件的描述信息中(如不允许用户自行更改的固定不变的条件),另一部分条件注册到插件框架模块221的插件接口2210中(如允许用户自行更改的条件)。
步骤S306,插件框架模块221向插件管理器210返回内存操作成功的信息,然后继续执行内存操作。
步骤S307,插件框架模块221阻止该内存操作,然后向插件管理器210返回内存操作失败的信息。
参阅图9所示,是本发明基于中间件插件框架的插件文档资源控制方法的主体流程图。该方法基于上述的中间件插件框架。
步骤S311,当客户端2的一个插件启动时,插件管理器210对该插件进行验证。例如,验证该插件的插件标识符classid是否在插件库220中存在,如果存在,则验证通过,执行步骤S312。
步骤S312,当该插件通过验证时,插件管理器210给该插件随机分配一个插件实例标识符pluginid,并建立该插件的插件标识符classid与该插件实例标识符pluginid的关联。
在本实施例中,所述插件实例标识符pluginid代表一个具体的插件实例,该插件实例由Web引擎211从插件单元22开始启动。插件运行期间的各API应用程序的调用均需携带pluginid通过插件管理器210映射到中间件单元21的API模块213中。
步骤S313,在该插件运行的过程中,插件单元22中的插件框架模块221将该插件实例标识符pluginid注册到插件框架模块221的插件接口2210中。
在该插件进行文档操作时(如打开文档),其资源的申请将受到基于pluginid注册所在插件实例的预先设置的文档操作条件控制,符合预先设置的文档操作条件的插件接口可以成功的申请到中间件单元21的系统资源,否则资源申请将失败。需要说明的是,插件实例标识符pluginid在插件销毁的同时将被销毁。
步骤S314,当该插件进行文档操作时,插件框架模块221根据预先设置的文档操作条件和该插件的插件实例标识符,监测该插件的文档操作。
举例而言,假设步骤S312随机分配的插件实例标识符pluginid为12138,则插件框架模块221监测pluginid为12138的插件实例的文档操作是否符合预先设置的文档操作条件。
步骤S315,插件框架模块221判断该插件的文档操作是否符合预先设置的文档操作条件。如果符合预先设置的文档操作条件,则执行步骤S316;如果不符合预先设置的文档操作条件,则执行步骤S317。
举例而言,在本实施例中,所述预先设置的文档操作条件包括:(2.1)每个插件的操作路径为预设路径(如/root/ipanel/FS_ROOT);(2.2)每个插件不能操作中间件单元21的系统文件;(2.3)同时开启的文档数量上限值为第二预设值等。
假设所述第二预设值为5,如果该插件的文档操作同时开启的文档数量小于或等于5,且满足第(2.1)条件和第(2.2)条件,则插件框架模块221判定该插件的文档操作符合预先设置的文档操作条件,即该插件的文档操作合法。如果上述三个条件有一条不满足(如同时开启的文档数量大于5),则插件框架模块221判定该插件的文档操作不符合预先设置的文档操作条件,即该插件的文档操作不合法。
在本实施例中,可以通过打开的文件句柄的数量判定同时开启的文档数量。例如,如果同时打开的文件句柄数量为5,则判定同时开启的文件数量为5。
需要说明的是,所述预先设置的文档操作条件可以在步骤S313跟随pluginid注册到插件框架模块221的插件接口2210中,也可以内置于插件的描述信息中(无需注册),甚至可以一部分条件内置于插件的描述信息中,如不允许用户自行更改的固定不变的条件(如上述条件2.1和2.2),另一部分条件注册到插件框架模块221的插件接口2210中,如允许用户自行更改的条件(如上述条件2.3)。
步骤S316,插件框架模块221向插件管理器210返回文档操作成功的信息,然后继续执行文档操作。
步骤S317,插件框架模块221阻止该文档操作,然后向插件管理器210返回文档操作失败的信息。
参阅图10所示,是本发明基于中间件插件框架的插件Socket资源控制方法的主体流程图。该方法基于上述的中间件插件框架。
步骤S321,当客户端2的一个插件启动时,插件管理器210对该插件进行验证。例如,验证该插件的插件标识符classid是否在插件库220中存在,如果存在,则验证通过,执行步骤S322。
步骤S322,当该插件通过验证时,插件管理器210给该插件随机分配一个插件实例标识符pluginid,并建立该插件的插件标识符classid与该插件实例标识符pluginid的关联。
在本实施例中,所述插件实例标识符pluginid代表一个具体的插件实例,该插件实例由Web引擎211从插件单元22开始启动。插件运行期间的各API应用程序的调用均需携带pluginid通过插件管理器210映射到中间件单元21的API模块213中。
步骤S323,在该插件运行的过程中,插件单元22中的插件框架模块221将该插件实例标识符pluginid注册到插件框架模块221的插件接口2210中。
在该插件进行Socket操作时(如连接操作),其资源的申请将受到基于pluginid注册所在插件实例的预先设置的Socket操作条件控制,符合预先设置的Socket操作条件的插件接口可以成功的申请到中间件单元21的系统资源,否则资源申请将失败。需要说明的是,插件实例标识符pluginid在插件销毁的同时将被销毁。
步骤S324,当该插件进行Socket操作时,插件框架模块221根据预先设置的Socket操作条件和该插件的插件实例标识符,监测该插件的Socket操作。
举例而言,假设步骤S322随机分配的插件实例标识符pluginid为1314,则插件框架模块221监测pluginid为1314的插件实例的Socket操作是否符合预先设置的Socket操作条件。
步骤S325,插件框架模块221判断该插件的Socket操作是否符合预先设置的Socket操作条件。如果符合预先设置的Socket操作条件,则执行步骤S326;如果不符合预先设置的Socket操作条件,则执行步骤S327。
举例而言,在本实施例中,所述预先设置的Socket操作条件包括:(3.1)Socket连接第一次发送的数据包含自定义头部信息(3.2)Socket连接的目的地址为指定的复数个IP地址(如运营商服务器的IP地址);(3.3)同时开启的Socket连接上限值为第三预设值等。
假设所述第三预设值为3,如果该插件的Socket操作同时开启的Socket连接小于或等于3,且满足第(3.1)条件和第(3.2)条件,则插件框架模块221判定该插件的Socket操作符合预先设置的Socket操作条件,即该插件的Socket操作合法。如果上述三个条件有一条不满足(如同时开启的Socket连接大于3),则插件框架模块221判定该插件的Socket操作不符合预先设置的Socket操作条件,即该插件的Socket操作不合法。
需要说明的是,所述预先设置的Socket操作条件可以在步骤S323跟随pluginid注册到插件框架模块221的插件接口2210中,也可以内置于插件的描述信息中(无需注册),甚至可以一部分条件内置于插件的描述信息中,如不允许用户自行更改的固定不变的条件(如上述条件3.1),另一部分条件注册到插件框架模块221的插件接口2210中,如允许用户自行更改的条件(如上述条件3.2和3.3)。
步骤S326,插件框架模块221向插件管理器210返回Socket操作成功的信息,然后继续执行Socket操作。
步骤S327,插件框架模块221阻止该Socket操作,然后向插件管理器210返回Socket操作失败的信息。
以上图8至图10的描述具体介绍了插件单元22中的插件框架模块221根据插件实例标识符控制插件内存操作、文档操作、及Socket操作的资源控制方法,可以理解的是,其他插件操作也可以参考上述资源控制方法,方法是:预先设置相应的插件操作条件,并根据预先设置的插件操作条件,监测插件的相应操作。
以下结合图11至图13的描述具体介绍所述中间件插件框架设计系统20的插件安全机制,包括:安全发布流程、下载校验流程和运行校验流程。
参阅图11所示,是本发明基于中间件插件框架的插件安全控制方法中插件安全发布流程图。该方法基于上述的中间件插件框架。
步骤S401,服务端1生成一个随机密钥,并利用该随机密钥对插件文件进行加密,得到加密后的插件文件(如*.so文件)。
例如,利用3DES(Triple Data Encryption Algorithm,三重数据加密算法)对插件文件进行加密。在本实施例中,一个插件文件代表一个插件。
步骤S402,服务端1对该插件文件的初始摘要内容进行加密得到该插件文件的数字签名,并利用服务端的私钥对该数字签名进行加密,得到加密后的数字签名。
具体而言,服务端1首先利用预设的摘要生成算法对该插件文件进行计算,如利用哈希算法对该插件文件进行哈希运算,得到该插件文件的初始摘要内容(即服务端1的本地初始摘要内容)。然后,服务端1利用预设的加密算法,如MD5(Message Digest Algorithm5,消息摘要算法第5版)加密算法,对该初始摘要内容进行加密得到该插件文件的数字签名。
步骤S403,利用服务端1的私钥对该插件文件的配置参数进行加密,得到加密后的配置参数。在本实施例中,所述配置参数包括,但不限于,插件标识符classid和版本号等界面输入参数或命令行参数。
步骤S404,利用服务端1的私钥对上述随机密钥进行加密,得到加密后的随机密钥。
步骤S405,将加密后的随机密钥、加密后的配置参数和上述加密后的数字签名作为插件描述信息(如*.json文件),附在加密后的插件文件上(如*.so文件),生成一个插件压缩包(如*.zip文件)。
参阅图12所示,是本发明基于中间件插件框架的插件安全控制方法中插件下载校验流程图。该方法基于上述的中间件插件框架。
步骤S411,当客户端2从服务端1下载一个插件压缩包时,客户端2中的插件管理器210启动对该插件压缩包的校验流程。
如上所述,该插件压缩包包括:加密后的插件文件及插件描述信息,所述插件描述信息包括:加密后的随机密钥、加密后的配置参数、加密后的数字签名,所述加密后的配置参数包括:加密后的插件标识符classid、加密后的版本号等信息。
步骤S412,客户端2中的插件管理器210利用客户端2的公钥对加密后的随机密钥进行解密,得到解密后的随机密钥,即服务端1生成的随机密钥。
步骤S413,插件管理器210利用该随机密钥对该加密后的插件文件进行解密,得到解密后的插件文件。
步骤S414,插件管理器210利用与服务端1相同的摘要生成算法(即上述预设的摘要生成算法)对该解密后的插件文件再进行一次计算,如利用相同的哈希算法对该解密后的插件文件再进行一次哈希运算,得到一个新的摘要内容(即客户端的摘要内容)。
步骤S415,插件管理器210利用客户端2的公钥对该加密后的数字签名进行解密,得到解密后的插件文件的摘要内容。
步骤S416,插件管理器210判断新的摘要内容是否与解密出来的摘要内容一致。
步骤S417,如果新的摘要内容与解密出来的摘要内容一致,则插件管理器210判定校验通过,控制该插件文件进行安装。
步骤S418,如果新的摘要内容与解密出来的摘要内容不一致,插件管理器210判定校验失败,阻止该插件文件的安装。
在本实施例中,所述插件下载校验执行于客户端2,即执行第一次下载校验。在其他实施例中,所述插件下载校验还可以执行于服务端1,即执行两次插件下载校验,进一步提高插件校验的安全性。如果插件下载校验执行于服务端1,以下称为第二次下载校验。
第二次下载校验包括:插件管理器210将客户端2解密出来的摘要内容发送至服务端1,服务端1利用该解密出来的摘要内容与本地初始摘要内容进行校验并返回校验结果至客户端2。如果该解密出来的摘要内容与本地初始摘要内容一致,则服务端1判定校验通过;如果该解密出来的摘要内容与本地初始摘要内容不一致,则服务端1判定校验失败。如果第一次下载校验(客户端校验流程)和第二次下载校验(服务端校验流程)的校验结果都通过,则执行步骤S417。如果第一次下载校验或第二次下载校验的校验结果失败,则执行步骤S418。
参阅图13所示,是本发明基于中间件插件框架的插件安全控制方法中插件运行校验流程图。该方法基于上述的中间件插件框架。
步骤S421,当客户端2的一个插件启动时,插件管理器210启动对该插件的校验流程。在本实施例中,一个插件文件代表一个插件。
步骤S422,插件管理器210从插件单元22的插件接口2210中获取该插件的本地插件标识符。
如前所述,每一个插件唯一分配一个插件标识符,记为classid,分别被:打包进插件压缩包的插件描述信息中以及插件开发者实现的API接口(插件接口2210)中。插件开发者需要在插件相关API接口中正确引用该classid,因为插件运行过程中将基于该classid进行对比,以校验插件的合法性。
步骤S423,插件管理器210利用客户端2的公钥对插件压缩包中加密后的插件标识符的进行解密,得到该插件解密后的插件标识符。
步骤S424,插件管理器210判定解密后的插件标识符是否与本地插件标识符一致。
步骤S425,如果解密后的插件标识符与本地插件标识符一致,则插件管理器210判定校验通过,控制该插件正常运行。
步骤S426,如果解密后的插件标识符与本地插件标识符不一致,则插件管理器210判定校验失败,阻止该插件的运行。
在其他实施例中,所述插件运行校验流程还可以在插件运行过程中,每隔预设的间隔时间(如10分钟)执行一次。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于中间件插件框架的插件状态控制方法,运行于客户端,其特征在于,该方法包括:
设置客户端中的中间件插件框架,该中间件插件框架包括中间件单元和插件单元,所述中间件单元包括插件管理器、网页引擎及应用程序接口API模块,所述插件单元包括一个插件库和一个插件框架模块,所述插件框架模块包括插件接口和框架接口;
中间件单元中的插件管理器获取客户端中已经安装的插件,生成第一插件列表,所述第一插件列表中存储有所获取插件的插件标识符和版本号;
插件管理器将该第一插件列表与状态获取请求一同发送至服务端,并接收服务端返回的与该第一插件列表对应的第二插件列表,所述第二插件列表中存储有通过校验的插件的插件标识符和每个通过校验的插件的状态信息;及
插件管理器从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态。
2.如权利要求1所述的基于中间件插件框架的插件状态控制方法,其特征在于,所述插件管理器与插件单元的插件接口连接,用于控制插件的校验、安装和卸载,所述网页引擎与插件单元的框架接口连接,用于启动该插件。
3.如权利要求1所述的基于中间件插件框架的插件状态控制方法,其特征在于,如果该通过校验的插件的状态信息为第一预设字符,则插件管理器根据插件标识符控制该通过校验的插件进行安装。
4.如权利要求1所述的基于中间件插件框架的插件状态控制方法,其特征在于,如果该通过校验的插件的状态信息为第二预设字符,则插件管理器根据插件标识符控制通过校验的插件进行更新。
5.如权利要求1所述的基于中间件插件框架的插件状态控制方法,其特征在于,如果该通过校验的插件的状态信息为第三预设字符,则插件管理器根据插件标识符控制通过校验的插件进行卸载。
6.一种基于中间件插件框架的客户端,其特征在于,该客户端包括:
中间件插件框架,该中间件插件框架包括中间件单元和插件单元,所述中间件单元包括插件管理器、网页引擎及应用程序接口API模块,所述插件单元包括一个插件库和一个插件框架模块,所述插件框架模块包括插件接口和框架接口;
所述插件管理器用于,获取客户端中已经安装的插件,生成第一插件列表,所述第一插件列表中存储有所获取插件的插件标识符和版本号;
所述插件管理器还用于,将该第一插件列表与状态获取请求一同发送至服务端,并接收服务端返回的与该第一插件列表对应的第二插件列表,所述第二插件列表中存储有通过校验的插件的插件标识符和每个通过校验的插件的状态信息;及
所述插件管理器还用于,从第二插件列表中依次读取每个通过校验的插件的状态信息,并根据插件标识符控制该通过校验的插件的状态。
7.如权利要求6所述的基于中间件插件框架的客户端,其特征在于,所述插件管理器与插件单元的插件接口连接,用于控制插件的校验、安装和卸载,所述网页引擎与插件单元的框架接口连接,用于启动该插件。
8.如权利要求6所述的基于中间件插件框架的客户端,其特征在于,如果该通过校验的插件的状态信息为第一预设字符,则插件管理器根据插件标识符控制该通过校验的插件进行安装。
9.如权利要求6所述的基于中间件插件框架的客户端,其特征在于,如果该通过校验的插件的状态信息为第二预设字符,则插件管理器根据插件标识符控制通过校验的插件进行更新。
10.如权利要求6所述的基于中间件插件框架的客户端,其特征在于,如果该通过校验的插件的状态信息为第三预设字符,则插件管理器根据插件标识符控制通过校验的插件进行卸载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410286399.4A CN105242910B (zh) | 2014-06-24 | 2014-06-24 | 基于中间件插件框架的插件状态控制方法及客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410286399.4A CN105242910B (zh) | 2014-06-24 | 2014-06-24 | 基于中间件插件框架的插件状态控制方法及客户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105242910A CN105242910A (zh) | 2016-01-13 |
CN105242910B true CN105242910B (zh) | 2018-09-18 |
Family
ID=55040569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410286399.4A Active CN105242910B (zh) | 2014-06-24 | 2014-06-24 | 基于中间件插件框架的插件状态控制方法及客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105242910B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371864A (zh) * | 2016-08-23 | 2017-02-01 | 上海创景计算机系统有限公司 | 快速部署插件架构方法 |
CN106445530B (zh) * | 2016-09-27 | 2020-04-07 | 北京奇虎科技有限公司 | 一种将客户端应用软件转换为网页软件的方法、装置 |
CN110879713B (zh) * | 2018-09-06 | 2023-06-20 | 山东华软金盾软件股份有限公司 | 一种android端强加密插件热更新管理方法 |
CN110297671A (zh) * | 2019-05-22 | 2019-10-01 | 深圳壹账通智能科技有限公司 | 客户端插件化实现方法、装置、计算机设备及存储介质 |
CN113157333B (zh) * | 2021-03-25 | 2022-09-02 | 中国电子科技集团公司第二十九研究所 | 一种态势标绘插件前端集成系统 |
CN114466070A (zh) * | 2022-01-20 | 2022-05-10 | 精伦电子股份有限公司 | 中间件系统、服务请求处理方法、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110700A (zh) * | 2007-06-14 | 2008-01-23 | 上海众恒信息产业有限公司 | 资源管理平台中的资源管理器 |
CN101276269A (zh) * | 2007-03-30 | 2008-10-01 | 上海众恒信息产业有限公司 | 可扩展资源管理平台 |
CN101277212A (zh) * | 2007-03-30 | 2008-10-01 | 上海众恒信息产业有限公司 | 资源管理平台及资源管理方法 |
CN103092645A (zh) * | 2012-12-31 | 2013-05-08 | 武汉中地数码科技有限公司 | 一种基于微内核技术的地理空间信息应用系统及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8276167B2 (en) * | 2007-03-21 | 2012-09-25 | International Business Machines Corporation | Distributed pluggable middleware services |
-
2014
- 2014-06-24 CN CN201410286399.4A patent/CN105242910B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276269A (zh) * | 2007-03-30 | 2008-10-01 | 上海众恒信息产业有限公司 | 可扩展资源管理平台 |
CN101277212A (zh) * | 2007-03-30 | 2008-10-01 | 上海众恒信息产业有限公司 | 资源管理平台及资源管理方法 |
CN101110700A (zh) * | 2007-06-14 | 2008-01-23 | 上海众恒信息产业有限公司 | 资源管理平台中的资源管理器 |
CN103092645A (zh) * | 2012-12-31 | 2013-05-08 | 武汉中地数码科技有限公司 | 一种基于微内核技术的地理空间信息应用系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105242910A (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105320503B (zh) | 中间件插件框架设计系统及方法 | |
CN105224874B (zh) | 基于中间件插件框架的插件安全控制方法及客户端 | |
CN105242910B (zh) | 基于中间件插件框架的插件状态控制方法及客户端 | |
CN106415571B (zh) | 将资产安全地提供给目标设备的模块 | |
US8539469B2 (en) | Efficient patching | |
US7559058B2 (en) | Efficient patching | |
CN104717301B (zh) | 插件下载方法及装置 | |
US9455876B1 (en) | Method and standard for integrating applications into a cloud | |
US8418169B2 (en) | Management method for managing software module and information processor | |
EP1598740A1 (en) | Efficient software patching | |
CN106170763B (zh) | 一种软件校验方法和装置 | |
CN106940651A (zh) | Pos终端软件升级方法和装置 | |
CN109634619A (zh) | 可信执行环境实现方法及装置、终端设备、可读存储介质 | |
US20070100762A1 (en) | Secure license key method and system | |
CN104023154A (zh) | 调试系统 | |
CN108446102A (zh) | 一种开发部署应用程序的一体化系统及方法 | |
CN107743115A (zh) | 一种终端应用的身份认证方法、装置和系统 | |
CN110098952A (zh) | 一种服务器的管理方法和装置 | |
CN105204829B (zh) | 基于中间件插件框架的插件套接字资源控制方法及客户端 | |
CN105224297B (zh) | 基于中间件插件框架的插件内存资源控制方法及客户端 | |
CN105144085B (zh) | 针对存储设备的软件框架 | |
CN112131002A (zh) | 数据管理方法及装置 | |
CN113467784A (zh) | 应用程序处理方法及其装置、计算机可读存储介质 | |
CN107632932B (zh) | 一种多级校验的软件仓库可靠性检测方法 | |
CN105204830B (zh) | 基于中间件插件框架的插件文档资源控制方法及客户端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |