`
sbiigu
  • 浏览: 162526 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

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

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



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



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



插件软件设计步骤包括:

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

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

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

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

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

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

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



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

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

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

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

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



插件接口的认识



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



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

 

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



程序结构及其运行机制



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




插件1

插件2

插件n

插件管理

插件调用函数
分享到:
评论

相关推荐

    插件技术原理及其C#实现

    ### 插件技术原理及其C#实现 #### 插件技术概述 插件技术作为一种重要的软件设计模式,被广泛应用于各种软件系统中,以增强软件的功能性和灵活性。它基于一个核心概念:即软件主体(宿主程序)可以加载并利用一...

    cad 液压原理图插件

    CAD液压原理图插件是一种专为工程技术人员设计的工具,旨在简化和加速液压系统的绘图过程。在机械、船舶、建筑和其他需要液压系统的行业中,准确、高效地绘制液压原理图至关重要。这款插件包含了丰富的预定义图形...

    深入浅出MyBatis技术原理与实战(高清带目录版)

    《深入浅出MyBatis 技术原理与实战》是笔者通过大量实践和研究源码后创作而成的,是国内系统介绍MyBatis 著作的先河。 《深入浅出MyBatis技术原理与实战》分为3 个部分,依次介绍了MyBatis 的基础应用、原理及插件...

    《P2P技术揭秘P2P网络技术原理与典型系统开发》(管磊 编著)

    主要内容包括P2P概述、P2P网络拓扑结构、P2P网络搜索技术、P2P关键技术及应用、P2P网络中的nat穿透技术、基于P2P的bittorrent(后文简称bt)技术、基于P2P的emule文件共享技术、基于P2P的skype即时通信技术、基于P2P的...

    深入浅出MyBatis技术原理与实战

    《深入浅出MyBatis 技术原理与实战》是笔者通过大量实践和研究源码后创作而成的,是国内系统介绍MyBatis 著作的先河。, 《深入浅出MyBatis技术原理与实战》分为3 个部分,依次介绍了MyBatis 的基础应用、原理及插件...

    深入浅出MyBatis技术原理与实战.pdf

    《深入浅出MyBatis技术原理与实战》是笔者通过大量实践和研究源码后创作而成的,是国内系统介绍MyBatis著作的先河。  《深入浅出MyBatis技术原理与实战》分为3个部分,依次介绍了MyBatis的基础应用、原理及插件...

    moodle插件(demo插件学习使用)

    5. **MySQL数据库操作**:Moodle使用MySQL作为默认数据库,了解SQL语句和数据库设计原理对插件开发至关重要。 6. **Web开发技术**:HTML、CSS和JavaScript是构建用户界面的基础,开发者需要熟悉这些前端技术。 7. ...

    Eclipse插件开发学习笔记全篇+源码.rar

    Eclipse插件开发是扩展其功能和定制工作环境的关键技术。本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇...

    Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar

    Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-21).rar Eclipse插件开发学习笔记 第三四篇(22-25).rar Eclipse插件开发学习笔记 第三四篇(26-28)+原代码.rar ...

    《深入探索Android热修复技术原理》高清完整版PDF

    4. 插件化技术:了解Android插件化原理,它是热修复技术的重要组成部分,使得模块化开发和独立更新成为可能。 5. Sophix框架详解:详细解析Sophix的架构设计、工作流程以及如何集成到项目中。包括修复包的生成、推...

    《深入浅出MyBatis技术原理与实战》高清完整PDF下载

    当前已经是移动互联网时代,Java持久框架Hibernate没有办法适应高性能,灵活,大数据,可优化等要求,这时...本书从基础讲到底层,注重实战,原理,照顾到初中高三类读者,可以作为MyBatis的学习教程和参考技术丛书。

    MyBatis大揭秘-Plugin插件设计原理.docx

    本文将从插件配置、插件编写、插件运行原理、插件注册与执行拦截的时机、初始化插件、分页插件的原理等六个方面对MyBatis插件设计原理进行详细的阐述。 1. 插件配置 MyBatis的插件配置在configuration内部,初始化...

    2022金蝶云星空插件开发学习文档.zip

    总结,金蝶云星空插件开发是一项涉及面广泛且具有挑战性的任务,但通过系统的理论学习和实践操作,开发者能够逐步掌握这一技术,为企业带来更高效、更个性化的解决方案。希望本指南能成为你探索金蝶云星空插件开发的...

    Eclipse插件开发学习笔记 第三四篇(26-28)+原代码.rar

    Eclipse插件开发 学习笔记 第二篇 核心技术(11-16).rar Eclipse插件开发 学习笔记 第二篇 核心技术(17-21).rar Eclipse插件开发学习笔记 第三四篇(22-25).rar Eclipse插件开发学习笔记 第三四篇(26-28)+原代码.rar ...

    GEE超级插件全部源码-

    通过此插件,开发者可以深入理解其工作原理,进一步定制化以适应自己的项目需求,或者改进现有功能,创造出更强大的工具链。 【标签】中的"引擎"指的是游戏引擎,它是游戏开发的基础框架,负责处理渲染、物理、音频...

    sextante插件原理剖析ppt

    本人根据自己对SEXTANTE插件源码的分析,简要的阐述了sextante插件的文件组织以及自定义算法和第三方库扩展实现的流程和原理。列举了一个个人自定义算法的例子,sextante的中文资料稀缺,需要的朋友们你们有福了。

Global site tag (gtag.js) - Google Analytics