有没有使用过Adobe Photoshop?如果用过,你就会对插件的概念比较熟悉。对外行人来说,
插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个DLL中)。一个插
件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力。例如,Photoshop本
身并不具备进行大量的图像处理功能。插件的加入使其获得了产生诸如模糊、斑点,以及其
他所有风格的奇怪效果,而其中任何一项功能都不是父应用程序自身所具有的。
对于图像处理程序来说这很不错,可是为什么要花偌大的力气去完成支持插件的商业应用程序
呢?假设,我们举个例子,你的应用程序要产生一些报表。你的客户肯定会一直要求更新
或者增加新的报表。你可以使用一个诸如Report Smith的外部报表生成器,这是个不怎么
样的解决方案,需要发布附加的文件,要对用户进行额外的培训,等等。你也可以使用
QuickReport,不过这会使你身处版本控制的噩梦之中——如果每改变一次字体你就要
Rebuild你的应用程序的话。
然而,只要你把报表做到插件中,你就可以使用它。需要一个新的报表吗?没问题,
只要安装一个DLL,下次应用程序启动时就会看见它了。另外一个例子是处理来自外部设备
(比如条形码扫描器)的数据的应用程序,为了给用户更多的选择,你不得不支持半打的
各种设备。通过将每种设备接口处理例程写成插件,不用对父应用程序作任何变动就可以
获得最大程度的可伸缩性。