[发明专利]一种基于插件机制的动态加载组件方法和系统有效
申请号: | 201310409594.7 | 申请日: | 2013-09-10 |
公开(公告)号: | CN104424002B | 公开(公告)日: | 2017-12-12 |
发明(设计)人: | 胡琳琳;娄丙允;张武;郭志川 | 申请(专利权)人: | 中国科学院声学研究所;北京中科海力技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京法思腾知识产权代理有限公司11318 | 代理人: | 杨小蓉,杨青 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 插件 机制 动态 加载 组件 方法 系统 | ||
技术领域
本发明涉及计算机应用程序发现和组件加载技术领域,尤其涉及一种基于插件机制的动态加载组件方法和系统。
背景技术
目前,组件技术被广泛应用于嵌入式系统中。在嵌入式系统中,系统的业务形态较多,不同形态下中间件或应用程序的功能不同,需加载的组件也不同,现有技术通常是在编译时必须链接组件,这样对于相同的中间件或应用程序,需要为每个业务形态的系统链接不同的组件,生成不同版本,使用这种方法使得中间件或应用程序后续的软件维护工作量大。此外,嵌入式系统包括内存在内的硬件资源非常有限,编译链接组件库后,在应用程序启动时就加载所有组件,不必要地耗费了内存。
现有动态加载组件流程都是私有的,都是通过定义一些私有函数接口实现对组件库的查找和对组件库方法的调用,这种方法限制了其通用型,封装的接口只对某个具体的组件库有效,对别的组件库就没有作用了。
发明内容
本发明的目的在于,为克服上述问题,本发明提出一种基于插件机制的动态加载组件方法和系统。
为实现上述目的,本发明提供了一种嵌入式系统的动态加载组件的方法,所述方法包含:
步骤101)封装组件库;
步骤102)当某个应用程序或组件收到需要调用另一个组件中的相应功能指令时,依据标识该另一组件身份的“MIME Type”,遍历系统中的各组件库的“MIME Type”来查找所述其它组件;
步骤103)当查找到所需组件后,在内存中加载所需组件,并获取创建所需组件实例的接口以及调用所需组件的相应功能接口;
其中,所有组件均具有唯一一个标识其身份的“MIME Type”。
上述步骤103)之后还包含:
调用卸载组件接口,卸载加载的组件。
采用插件标准NPAPI接口函数封装组件库。
采用插件标准NPAPI接口函数封装组件库的方法具体包含如下步骤:
在编译组件库的时候加入npruntime.h、np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及设置插件调用接口的def文件;所述npruntime.h为头文件,np_entry.cpp、npn_gate.cpp、npp_gate.cpp为接口函数,且接口函数np_entry.cpp、npn_gate.cpp和npp_gate.cpp定义在npruntime.h头文件中;
其中,
np_entry.cpp中定义了三个接口,分别是:
NP_GetEntryPoints–在插件加载之后立即调用该接口,用于浏览器获取所有可能需要调用的API函数的指针;
NP_Initialize–为插件提供全局初始化;
NP_Shutdown–为插件提供全局反初始化;
npn_gate.cpp文件用于实现20个函数接口,且这些接口是由浏览器实现的;在插件实例初始化的时候,将浏览器实现的这些函数的入口地址保存到一个NPNetscapeFuncs结构中,这些函数的实现就直接根据NPNetscapeFuncs结构中的入口地址调用浏览器实现的相关功能;且在开发插件时只需要调用NPN_开头的全局函数即可;
npp_gate.cpp文件用于实现包含如下几个函数接口:
NPP_Shutdown():在卸载一个插件DLL之前及删除任何插件实例之后调用;
NPP_New():在创建一个插件实例时调用,用来初始化插件的实例数据结构;
NPP_Destroy():在删除一个插件实例时调用,用于释放为插件实例所分配的空间;
NPP_Get MIME Description():仅用于Unix环境,用于获取由该插件所支持的MIME类型;
其中,Def文件用来设置插件供外部调用的接口,接口一般有三个,分别是NP_GetEntryPoints、NP_Initialize和NP_Shutdown;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所;北京中科海力技术有限公司,未经中国科学院声学研究所;北京中科海力技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310409594.7/2.html,转载请声明来源钻瓜专利网。