构建插件式的应用程序框架(一)----开篇

简介:
     说起插件( plug in )式的应用程序大家应该不陌生吧 , 记得很早以前有一款很流行的 MP3 播放软件 winmap, 它是我记忆里最早认识的一款使用插件模式的应用程序 , 你可以使用他的插件管理器插入很多的音乐效果器 , 皮肤 , 甚至是歌词显示的面板。接下来看到了 Photoshop 使用插件模式管理虑镜。最后发现只要是大一点的应用程序基本都使用了插件式的程序框架,就拿我们最常用的工具来说吧, Visual Studio Office Delphi Eclipse 等等。 Eclipse 将插件模式发挥到了及至,因为他是开源的的,所以众多的爱好者,开发出了让人应接不暇的插件。
        为什么使用插件式的应用程序框架呢?我的答案就是他为应用程序的功能扩展提供的无限的想象空间。一个应用程序,无论你前期做了多少的市场调查,需求分析做的多么完美,你也只是迎合一部分人的期望,更甚,你只迎合了一部分人的一部分期望,或者一部分人在某一时间的一部分期望。所以当程序发布以后,你依然有机会提供新的功能而不必重新发布程序,人们也可以根据自己的需要来开发新的功能来满足自己的需求,据我所知有很多的软件公司就是专门开发插件来赚钱,真是一举多得,何乐而不为呢?
        我们来看一些常见的提供插件模式的应用程序是如何实现插件功能的。据我的使用经验来看, Visual Studio Office 其实都是自动化程序,通过 COM 的方式提供了一组接口。开发人员可以利用这些接口来开发基于 COM 的插件,当插件开发完成后,注册 COM 组件。在 Visual Studio 中你可以使用 Add in 管理器来选择是否启用插件,而 Office 似乎省去了这一步,一旦你注册了 Office 插件, Office 应用程序在启动的时候会自动加载插件。 COM 方式似乎最受微软的宠爱,因为 COM 是一种二进制重用标准,用户可以使用大部分流行的语言来开发插件。当然你也可以使用别的方式,比如普通 DLL ,只是这样对于开发人员来说适用面就窄了,因为各个厂商 DLL 的内部结构是不尽相同的,比 VC 开发出的 DLL Borland C ++ builder 开发出的 DLL 结构就不同,需要专门的工具进行转换。现在,还有另外一种方式,使用 dotNet Assembly ,使用 dotNet 的好处是开发简单,使用也同样简单(不需要注册),而且你也可用通过 COM 互操作让开发人员可以使用各种语言进行插件开发,当然用 dotNet 开发还是最简单的,省去不少中间过程。
         其实上面介绍的三种方式开发的插件最终还是寄宿在 DLL 中,从中我们就可以看出一些端倪。为什么使用 DLL 呢? DLL 虽然也是 PE 格式,但是他是不能独立运行的,一般情况下,都是在运行时加载到应用程序的内存空间。插件模式正好是利用了这一点,插件不是应用程序的一部分,他以二进制的方式独立存在,由用户决定是否使用他。
      那么插件是如何与应用程序进行交互的呢?首先必须有一个契约,应用程序要声明我有哪些功能是可以被插件使用的,并且具备什么条件才能成为我的插件。其次,应用程序不依赖于插件,也就是说,没有你插件,我也可以很好的运行。再次,应用程序必须有一种策略来获取插件存在的位置,比如 Visual studio 是通过注册表的方式。最后,应用程序可以通过某种方式动态的加载插件。
      最近工作比较忙,没有时间写 Blog ,控件开发总结的那个系列停在那里好久了,汗一个,有空就尽快补上吧。这个系列也先开个头吧,不然又会被自己找各种借口扼杀了。





本文转自纶巾客博客园博客,原文链接:http://www.cnblogs.com/guanjinke/archive/2007/02/13/649805.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
152 3
|
3月前
|
前端开发 C# 开发者
WPF开发者必读:MVVM模式实战,轻松构建可维护的应用程序,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离关注点,提高了代码的可维护性和可扩展性。本文详细介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定与逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种模式,开发者可以更高效地构建桌面应用程序。希望本文能帮助你在WPF开发中更好地应用MVVM模式。
187 0
|
前端开发 JavaScript 开发者
封装库/工具库中重要概念之UI框架
UI(User Interface)框架是前端开发中十分重要的一部分,它提供了各种组件和样式,用于构建页面和用户界面。在前端开发中,封装库/工具库可以帮助我们更加高效地使用 UI 框架。
195 0
|
TensorFlow 算法框架/工具 图计算
如何实现一个图化框架?代码已开源!
大家好,我是不会写代码的纯序员——Chunel Feng[3]。俗话说,人生如码,码如人生。人生中,有些事情是可以同时进行的,有些事情又必须是前后依次进行的;有些事情是可以刚开始就做的,有些事情又必须等待某个时机成熟了才可以开始。
376 0
如何实现一个图化框架?代码已开源!
下一篇
无影云桌面