[发明专利]一种基于插件机制的动态加载组件方法和系统有效
申请号: | 201310409594.7 | 申请日: | 2013-09-10 |
公开(公告)号: | CN104424002B | 公开(公告)日: | 2017-12-12 |
发明(设计)人: | 胡琳琳;娄丙允;张武;郭志川 | 申请(专利权)人: | 中国科学院声学研究所;北京中科海力技术有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京法思腾知识产权代理有限公司11318 | 代理人: | 杨小蓉,杨青 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 插件 机制 动态 加载 组件 方法 系统 | ||
1.一种基于插件机制的动态加载组件方法,所述方法包含:
步骤101)封装组件库;
步骤102)当某个应用程序或组件收到需要调用另一个组件中具有某种功能的指令时,依据标识该另一组件身份的“MIME Type”,遍历系统中的各组件库的“MIMEType”进而查找所需组件;
步骤103)当查找到所需组件后,在内存中加载所需组件,并获取创建所需组件实例的接口以及调用所需组件的相应功能接口;
其中,所有组件均具有唯一一个标识其身份的“MIME Type”;
采用插件标准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():在卸载一个插件动态链接库之前及删除任何插件实例之后调用;
NPP_New():在创建一个插件实例时调用,用于初始化插件的实例数据结构;
NPP_Destroy():在删除一个插件实例时调用,用于释放为插件实例所分配的空间;
NPP_Get MIME Description():仅用于Unix环境,用于获取由该插件所支持的MIME类型;
其中,Def文件用来设置插件供外部调用的接口,接口一般有三个,分别是NP_GetEntryPoints、NP_Initialize和NP_Shutdown;
当组件库完成封装之后,如果某个应用程序或组件需要调用采用插件标准NPAPI接口函数封装的组件库的时候,通过调用NP_GetEntryPoints、NP_Initialize和NP_Shutdown这三个接口实现对组件库方法的调用。
2.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,所述步骤103)之后还包含:
调用卸载组件接口,卸载加载的组件。
3.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,
浏览器在组件加载后调用NP_GetEntryPoints接口,获取所有可能需要调用的API函数的指针,获取的函数指针中就包含有NP_Initialize接口函数指针;
然后调用NP_Initialize接口对组件进行全局初始化,初始化后获得一系列NPN类和NPP类函数接口的指针,获得的NPP类函数接口的指针中就包含有NPP_GetMIME Description接口函数指针;
通过调用NPP_Get MIME Description接口函数,就能获得该组件支持的“MIMEType”。
4.根据权利要求1所述的基于插件机制的动态加载组件方法,其特征在于,遍历系统中各组件库的特征接口进而查找所需组件;
组件封装之后,把封装好的组件文件放在指定目录下,当解析页面遇到需要调用组件的方法时,加载所需组件;加载所需组件前,应用程序或组件首先遍历系统中的各组件库的“MIME Type”来查找所述组件,找到与指定所需组件的“MIME Type”值相同的组件,进而加载所需组件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院声学研究所;北京中科海力技术有限公司,未经中国科学院声学研究所;北京中科海力技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310409594.7/1.html,转载请声明来源钻瓜专利网。