随笔-3  评论-0  文章-0  trackbacks-0

面对日益复杂的计算需求,软件开发者一直以来都致力于寻找某种终极、通用的体系结构,允许它们高效率地完成高质量的应用。这种追求最终导致许多新抽象方法和工具的出现,其中最具希望的进展是纯插件体系结构。

 
插件一开始只是用来扩展应用的回调机制,现在已经成为应用程序的基础。插件不再仅仅只是应用的附加物(add-ons),今天的应用程序都是由插件组成。这个领域由于许多成功项目的推动已经逐渐成熟了。

最终用户的需求控制软件的创建和部署。用户要求更多更好的功能,要求软件能够按照它们的需求进行剪裁,要求软件演进速度要足够快。没有人想重新发明轮子,而是仅仅只是编写那些满足特定需求的特定代码,而后与现有工作结合起来。新兴的企业级应用套件包含众多更小的独立软件模块,它们必须相互集成起来以产生更高级别的功能模块,同时提供统一的用户接口。对需求迅速变化的反应能力、可升级性、与其他厂商的模块进行集成等促使更加灵活和可扩展应用程序的出现。

 

真实环境内的开发者必须处理许多复杂的基础设施、工具和代码方面的问题。插件体系结构之所以具备强大的吸引力是由于它向用户提供模块化的功能。任何人都可以通过混合和装配他们所需要的插件,或者为缺失功能编写新的插件来迅速定制应用。这种灵活性的代价仅仅只是管理这些插件。

很多开发者都很熟悉传统插件,比如用来扩展web浏览器或者文本(图形)编辑器的可下载软件模块。它们并不编译到应用中,仅仅只是通过预先定义的接口或者扩展机制连接到应用程序中。而且创建这样的插件不需要应用程序的源代码。宿主应用程序在需要的时候可以识别并激活这些插件所实现的功能。

在纯插件体系结构中,一切都是插件。宿主应用程序的角色被消弱到用来运行插件的引擎,而本身不再具备任何固有的最终用户功能。缺少了具备指导作用的宿主应用程序,剩下的就是由各个插件的松散联盟,其中包含由框架或插件自身制定的规则来实现各种约束。

为了能够组成没有预先定义结构的大型软件系统,或者这些系统结构的组织方式目前还无法预测,纯插件体系结构必须支持通过插件实现的插件可扩展性(extensibility of plug-ins by plug-ins)。由于缺少宿主应用,插件本身就成为其他插件的宿主,支持预先定义的插入点(hook points),其他插件可通过这些插入点加入新的功能。这些插入点就是通常所说的“扩展点”(extension points)。实现了某个扩展点的插件被称为一个扩展(extension)。扩展模型(extension model)结构化地描述了插件如何被扩展的方式和新插件如何提供扩展的方式。



posted on 2005-06-27 00:10 穿山甲 阅读(579) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: