构建插件式的应用程序框架构建插件式的应用程序框架.pdf

构建插件式的应用程序框架构建插件式的应用程序框架.pdf

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构建插件式的应用程序框架构建插件式的应用程序框架

1 开篇 说起插件(plug-in )式的应用程序大家应该不陌生吧,记得很早以前有一款很流行的 MP3 播放软件 winmap,它是我记忆里最早认识的一款使用插件模式的应用程序,你可以使用 他的插件管理器插入很多的音乐效果器, 皮肤, 甚至是歌词显示的面板。接下来看到了 Photoshop 使用插件模式管理虑镜。最后发现只要是大一点的应用程序基本都使用了插件式 的程序框架,就拿我们最常用的工具来说吧,Visual Studio 、Office、Delphi、Eclipse 等等。 Eclipse 将插件模式发挥到了及至,因为他是开源的,所以众多的爱好者,开发出了让人应接 不暇的插件。i 为什么使用插件式的应用程序框架呢?我的答案就是他为应用程序的功能扩展提供的 无限的想象空间。一个应用程序,无论你前期做了多少的市场调查,需求分析做的多么完美, 你也只是迎合一部分人的期望,更甚,你只迎合了一部分人的一部分期望,或者一部分人在 某一时间的一部分期望。所以当程序发布以后,你依然有机会提供新的功能而不必重新发布 程序,人们也可以根据自己的需要来开发新的功能来满足自己的需求,据我所知有很多的软 件公司就是专门开发插件来赚钱,真是一举多得,何乐而不为呢? 我们来看一些常见的提供插件模式的应用程序是如何实现插件功能的。据我的使用经验 来看,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 是通过注册表的方式。最后,应用程序可以通过 某种方式动态的加载插件。 2 订立契约 无论是用COM 的方式,还是普通DLL,抑或.NET 方式来实现插件框架,首先要面临的 问题就是如何订立契约。如同我上一篇文章讲到的一样,契约是应用程序和插件之间进行交 互的依据和凭证。应用程序必须声明我有什么样的功能可被插件使用,并且插件必须符合什 么条件才能被我使用。反之,插件必须要知道应用程序提供什么样的功能,我才能将自己的 功能融入到应用程序的体系中。本系列文章主要讲如何使用.NET 实现插件式的应用程序框 架,所以其它的方式我就不再提了。 如何使用.NET 订立契约呢?首先想到的Interface,其次是抽象类,但是在插件模式中使 用接口,因为我们是在满足应用程序的主要目的的基础上来提供附加的插件功能,就这一点 来说,接口更灵活,更容易扩展。接下来,如何订立契约的内容呢?这就要根据业务需求了, 为了讲解的方便,我们定义一个最最基本的插件式应用程序的插件契约。我们做一个假定, 我们的应用程序是一个多文档的应用程序,包含一个主菜单栏,一个工具栏,菜单栏可以在 程序的上下左右

您可能关注的文档

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档