现在的位置: 首页 > 综合 > 正文

C++实现插件构架 之 入门篇

2013年03月18日 ⁄ 综合 ⁄ 共 805字 ⁄ 字号 评论关闭
Plug-in is Everywhere
                                                        ——Plug-in是一种理念

在一个典型的应用开发过程中,我们必须在设计开发阶段满足所有既定的需求。然而软件开发并非一劳永逸之事,客户对功能的需求永无休止,他们会提出各种各样稀奇古怪的需求,这就迫使软件设计者在体系架构上下功夫。目前,Plug-in(插件)体系架构被认为是避免重复劳动、缩短发布周期、提高可扩展性、吸引用户的良方。使用Plug-in技术允许第三方开发者扩充其功能的例子比比皆是,就连鼎鼎大名的Microsoft也在Office、Visual Studio等产品中加入了add-in功能。成功的开源项目无一例外地采用了Plug-in架构,如Eclipse、Firefox。

什么是Plug-in架构呢?简单地讲,它是一个框架(Framework),允许一个程序在启动时搜索扩展的功能,然后允许Plug-in与自己协作。

怎样才能让Plug-in为我所用?一个非常简单的方法就是利用DLLs。当程序启动时,搜索指定路径下的任何DLLs,然后查询这些DLLs是否满足给定的接口,如果满足就说明DLL是这个程序的插件。

关键:明确定义接口!

请记住:PCI-Express决不可能直接插AGP显卡!

下面是一个简单的Plug-in应用的初始化流程:

1、程序启动;

2、Init函数在指定的目录下搜索所有的DLLs;

3、程序试着在每一个找到的DLL中获取Load函数,如果失败,说明这个DLL不是符合规范的插件;

4、如果Load函数调用成功,程序会缓存每个有效DLL对应的模块句柄,为后面使用插件功能做准备;

5、在程序运行期间,用户选择一个菜单项,于是对应的功能被调用;

6、在程序结束时,Unload函数被调用以便释放Load函数载入的资源。
 
下图为整个Framework的时序图:

[下载示例代码]

抱歉!评论已关闭.