学习插件技术原理后的一点认识

原创 2005年04月28日 16:43:00

    插件的本质在于不修改程序主体(平台)的情况下对软件功能进行扩展与加强,当插件的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的不便或增加新的功能,也就是实现真正意义上的即插即用软件开发。平台+插件软件结构是将一个待开发的目标软件分为两部分,一部分为程序的主体或主框架,可定义为平台,另一部分为功能扩展或补充模块,可定义为插件。

    在进行软件开发之前,是否采用平台+插件结构进行软件开发,还要依据具体的软件需求情况进行确定,但一般来讲,使用平台+插件结构进行软件设计会给所开发软件增加新的生命力。当确定平台+插件的软件结构之后,就要分析哪些部分功能由主体完成,即平台的基本功能,哪些部分功能由插件完成,即需要扩展的插件功能。平台所完成的功能应为一个软件系统的核心和基础,这些基本功能即可为用户使用,也可为插件使用,就是又可以把平台基本功能分为两个部分,内核功能和插件处理功能。平台的内核功能是整个软件的重要功能,一个软件的大部分功能因由内核功能完成。平台的插件处理功能用于扩展平台和管理插件,为插件操纵平台和与插件通信提供标准平台扩展接口。插件所完成的功能是对平台功能的扩展与补充,一般插件完成系列化功能,例如:PHOTOSHOP的滤镜插件完成对图形的特殊效果处理,这些功能都有一些共性,可以进行集中管理,并且是可以定义出标准的插件接口。

 

    为了实现平台+插件结构的软件设计需要定义两个标准接口,一个为由平台所实现的平台扩展接口,一个为插件所实现的插件接口。这里需要说明的是:平台扩展接口完全由平台实现,插件只是调用和使用,插件接口完全由插件实现,平台也只是调用和使用。平台扩展接口实现插件向平台方向的单向通信,插件通过平台扩展接口可获取主框架的各种资源和数据,可包括各种系统句柄,程序内部数据以及内存分配等。插件接口为平台向插件方向的单向通信,平台通过插件接口调用插件所实现的功能,读取插件处理数据等。

 

    平台插件处理功能包括插件注册、管理和调用,以及平台扩展接口的功能实现。插件注册为按照某种机制首先在系统中搜索已安装插件,之后将搜索到的插件注册到平台上,并在平台上生成相应的调用机制,这包括菜单选项、工具栏、内部调用等。插件管理完成插件与平台的协调,为各插件在平台上生成管理信息以及进行插件的状态跟踪。插件调用为调用各插件所实现的功能。平台插件处理功能实现的另一部分功能为平台扩展接口的具体实现。

 

插件软件设计步骤包括:

1、 确定平台基本功能和插件要完成系列化功能或扩展功能;

2、 定义平台扩展接口和插件接口;

3、 完成平台设计,主要是平台插件处理功能;

4、 向插件开发者提供主平台程序(执行代码),公布平台扩展接口和插件要实现的接口,可能包括开发用的SDK;

5、 插件开发者按要求开发插件,实现插件接口,开发者可使用提供的主平台程序测试插件;

6、 主平台设计者继续完成主平台的内核功能,并可随时公布新增加主平台扩展接口和插件接口;

7、 实现4-6步骤的良性循环,整个软件系统不断向前进化。

 

平台+插件软件设计的优点:

1、 实现真正意义上的软件组件的即插即用

2、 在二进制级上集成软件,减少大量的软件重新编译与发布麻烦与时间;

3、 能够很好实现软件模块的分工开发,能够大量吸取他人的优长;

4、 可较好实现代码隐藏,保护知识产权。

 

插件接口的认识

 

    开发支持插件功能的应用程序必须解决一个问题:如何在主程序与插件间正确地互相通信。为了在主程序与插件之间能正确地互相通信,应该先制定一套通信标准,这套通信标准就是接口,主程序与插件只能通过制订好的接口进行通信。软件开发中,接口只是定义功能并规定调用功能的形式,而不包含功能的实现。接口实质上是软件模块的调用规范。

 

    就开发支持插件功能的应用程序而言,一般来说由主程序的开发者来制订接口,如果希望其他的开发人员能开发相关的插件,只要公开相关接口即可。接口功能一般由插件方实现。因为插件的实现也要调用主程序的功能,所以接口功能也可能由主程序来实现。也就是说,主程序与插件的信息流可能是双向的。

  

    接口的调用规范与功能实现互相分离有一个很大的优点:尽管不同的插件开发者对同一个接口的具体实现不同,但是在主程序中对这些插件的调用方式是一样的。如果有主程序实现的接口,在不同的插件中也可以用相同的使用方式调用主程序的功能。这极大的提高了应用程序的灵活性。

 

程序结构及其运行机制

 

    主程序中,插件管理部分用于管理插件的安装和删除,并将所有安装插件的信息保存到适合的地方,例如保存到注册表或配置文件中。主程序启动时,根据插件的配置信息家在插件模块,然后获得插件的输出函数或输出类的指针并加以保存,如果需要的话,可以向主程序增加界面接口元素,如菜单、工具条按钮等。在主程序中当点击与插件相关联的接口元素时,就会触发插件调用函数,在插件调用函数中使用主函数种所保存的插件信息调用插件中实现的功能。在调用插件输出函数时也可以把主程序中实现的接口传递给插件方。

 

 

 

 

插件1

插件2

插件n

插件管理

插件调用函数

插件1

插件2

插件n

插件管理

插件调用函数

插件的概念及原理

插件的本质在于不修改程序主体(平台)的情况下对软件功能进行扩展与加强,当插件的接口公开后,任何公司或个人都可以制作自己的插件来解决一些操作上的不便或增加新的功能,也就是实现真正意义上的“即插即用”软件...
  • xiaohaizi77881314
  • xiaohaizi77881314
  • 2013年08月14日 00:48
  • 686

软件插件技术的原理与实现

摘要:基于插件的应用系统拥有良好的可扩充性、可定制性和可维护性。1.       引言插件是近年来十分常见的一种技术。插件结构有助于编写有良好的扩充和定制功能的应用程序。许多软件甚至操作系统或其外壳程...
  • u010608117
  • u010608117
  • 2017年10月16日 14:13
  • 386

gstreamer教程系列之动态插件的实现与原理

gstremer的插件机制是其核心,所有的元件的都是以插件的形式绑定在管道中用来实现媒体播放的效果。动态加 载机制简单的说就是gstreamer框架依照所请求的流的格式来向自己的插件库中寻找可用插件已...
  • fei_ing
  • fei_ing
  • 2015年08月03日 11:35
  • 642

gstreamer插件工作原理与流程分析

gstreamer plugins的工作同所有的基于插件的程序的工作原理类似,本质上都是通过读取动态库实现的,只需要每个动态库都实现某一个特定的接口就可以了,比如XX_init等,gstreamer统...
  • acs713
  • acs713
  • 2012年07月02日 14:48
  • 9506

《C#和NET学习的总结》----前沿

C#和NET学习的总结------前言作者:xhanwu日期:2007-05-23-----------------------------------------------------------...
  • xhanwu
  • xhanwu
  • 2007年05月23日 12:40
  • 621

对于ASP.net学习的认识

【摘自一个老师的问答】以下是web开发学习的路线:    一 基础阶段    C#基本语法+Asp.Net基本控件+数据库,另外要学习DHTML和CSS为网页布局和以后的Ajax打基础。    小项目...
  • auroralr
  • auroralr
  • 2010年09月20日 10:06
  • 273

WebSphere Application Server 中 Web 服务器插件工作原理及故障诊断

引言 Web 服务器与 WebSphere Application Server ( 简称为 WAS) 配合进行请求分发是一种很常见的拓扑结构。而 IBM WebSphere Application...
  • zdwzzu2006
  • zdwzzu2006
  • 2013年12月23日 11:13
  • 3210

插件原理

                                                                      插件原理             作者:周顺利       ...
  • Shatty
  • Shatty
  • 2006年04月16日 10:27
  • 7292

对软件工程专业的认识

  昨天听了李老师的计算机软件工程专业的专业介绍,对软件工程专业的学习内容有了进一步的了解。  我国是一个计算机行业的年轻国。尤其是软件行业的发展更是比西方发达国家晚了很多。虽然近几年来我国在计算机软...
  • wangziqi1987
  • wangziqi1987
  • 2007年09月30日 15:51
  • 3533

对线性回归,logistic回归和一般回归的认识 .

1 摘要       本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识。前四节主要讲述了回归问题,回归属于有监督学习中的一种方法。该方法的核心思想是从连续型统计数据中得到数学模...
  • wangqing_19900504
  • wangqing_19900504
  • 2012年10月25日 19:34
  • 357
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习插件技术原理后的一点认识
举报原因:
原因补充:

(最多只允许输入30个字)