1.2 插件技术的研究和发展现状 插件是一种事先定义了某种函数功能并且已代码实现的软件模块,这种软件模块可供软件在运行过程中调用,实现预先定义的功能。由于插件仅仅是某个功能的函数实现,所以具有很大的局限性,本身不能脱离宿主软件单独运行。但是这种局限性也让插件只要定义了功能函数的接口,就可以被不同的软件调用,实现函数功能而不需要知道插件内部具体的功能实现机制[7]。 在软件开发中运用插件技术可以增强软件的重用性和可延展性, 可缩短软件的开发周期,降低软件开发人员的开发强度,延长软件的生命周期,并能根据用户的需要,通过更换或修改插件的形式以扩充自己的功能。 插件式开发的软件由两部分组成:宿主程序和插件。宿主程序即为主应用程序,插件只有在主应用程序上才能调用自身的内部功能,插件与主应用程序相互独立。从宿主程序和插件的数量上来看,一个插件集成软件可以有很多个不同功能的软件,但是宿主程序却只能有一个[8],比较常见的插件式集成软件的系统结构如图
1.2.1 所示。宿主程序中与插件有关的部分主要有插件管理部分和插件接口部分。插件管理部分主要负责插件的安装和删除,并且决定插件信息保存的位置。主程序启动运行时,插件管理部分就会检测程序中集成的插件,并保存相关插件信息,当程序需要调用某个插件功能时,就将插件信息传送给调用函数。当宿主程序要调用插件内函数的功能时, 插件接口部分的插件调用函数就会调用该插件内函数,并传送相应的参数信息,由插件内函数完成计算之后,将计算结果返回给主程序。在调用某插件内函数时可能传递在程序其他部分已经实现的数据接口,而这个实现的接口可能是由主程序实现,也可能由主程序调用其他插件实现[9]。 宿主程序在调用插件时,需要进行数据的传送,包括参数的传递和计算结果的返回等,两者之间对于数据的定义不一样可能导致数据交互出错,所以宿主程序与插件之间不能直接进行数据通信,必须预先定义好数据交互规则,我们将定义好的数据交互规则称为接口。在插件式的软件开发中,接口就类似头文件中的函数定义,它只告诉用户要“做什么”,而不说明“怎么做”,“怎么做”的功能由插件内的函数实现。接口实际上是宿主程序和插件都能识别的数据通道,一般来说,是宿主程序给出接口的定义,然后根据接口的定义由插件实现相应的功能。所以,如果一个软件的开发者如果需要别人来实现软件的某个功能,只需要向其公开接口规范,由其他人完成算法插件之后,调用该插件即可。也有可能插件的功能实现涉及到宿主程序的某个功能,这个时候就需要宿主程序实现接口的该功能 [10]。从这我们就知道,宿主程序与插件之间的信息传输是非常灵活的,遵循的是一种双向传输机制。这种调用规范和功能实现相互分离的方法为软件开发和后期文护带来巨大的便利:由于插件与宿主程序的互相独立性,在实现接口定义的功能时不用考虑两者的数据关联。而且,对于宿主程序公布的某一个接口定义而言,可以有多个插件同时实现该接口功能,这从接口外部看来没有什么区别,唯一的不同在于插件内部的实现有所区别。所以,若想改变程序实现的功能,只需更换相应插件,而不需要对宿主程序做任何更改。这对于应用程序的灵活性和可文护性是极大的便利。
- 上一篇:ASP.net企业宣传网站设计+源代码
- 下一篇:智能化城市公共自行车租赁系统设计
-
-
-
-
-
-
-
杂拟谷盗体内共生菌沃尔...
当代大学生慈善意识研究+文献综述
电站锅炉暖风器设计任务书
酸性水汽提装置总汽提塔设计+CAD图纸
乳业同业并购式全产业链...
十二层带中心支撑钢结构...
河岸冲刷和泥沙淤积的监测国内外研究现状
中考体育项目与体育教学合理结合的研究
java+mysql车辆管理系统的设计+源代码
大众媒体对公共政策制定的影响