插件(Plug-in,又称addin、add-in、addon、add-on或外挂),是一种遵循一定规范的应用程序接口 (API) 编写出来的程序。开发者可通过插件扩展产品功能。计算机软件插件可根据使用的语言和环境,分为类似命令的简单插件、脚本语言插件、动态函数据库DLL插件、COM组件插件、已有程序环境插件等。
概述
编辑插件也可以称之为外挂,是根据相应规范应用程序接口(API)进行编写的程序,应用程序在运行时通过接口规范对插件进行调用,以扩展应用程序的功能。它是基于面向对象的思想设计和实现的。通常,插件以二进制的形式独立存在,在主程序运行时动态加载道内存空间。许多软件都使用了插件技术,如IE浏览器、Photoshop、媒体播放器、MS Office、MS Visual Studio等。插件的本质在于不修改程序主体(平台)的情况下对软件功能进行扩展与加强,可以用来解决一些操作上的不便或增加新的功能,能够提高计算机的运行效率,将软件的拓展空间进一步放大,使软件的功能更加丰富。
插件体系结构
研究意义
插件化可以提高代码的复用性,能够使软件并行开发,提高开发效率的同时降低了成本。且插件所具有的独立性,在进行功能升级和异常调试的时候,不影响主程序与其他插件的运行,用户的系统可以通过更换插件的方式自如的跟随用户业务的变化而变化,软件的未来版本还可以通过插件丰富自身功能,而无需重新开发,提高了软件的测试性。
特性
插件在计算机软件的运行过程中,发挥着重要作用。插件主要有以下几方面的特点和优势:
- 耦合度低:插件化软件使模块之间解耦,让程序脉络更加清晰,易于理解。
- 重用率高:在进行软件设计开发时,如果要调整或升级软件原本的设计结构,必须使用插件技术。
- 插件与插件之间互不干扰:即使继续向计算机软件中添加新类型的插件,也不会影响软件的整体系统。
- 结构灵活:插件的结构简洁,删减和添加插件的过程方便快捷,不会对计算机软件的整体组成造成不良影响。
- 维护性强:插件与主程序之间通过接口连接起来,与主程序解耦,插件独立,所以插件的改动对主程序没有影响。
- 开发周期短:在开发过程中,开发者可以先开发主体框架和部分重要功能插件,以此来保证产品在第一时间投向市场,获得用户的反馈意见。其他功能可以在产品上线之后,陆续加入进来。
发展历史
编辑早期软件的定制和扩展主要依赖于源代码的修改进行编程,这种方法对开发人员的要求较高,对于大规模的复杂问题难以理解和调试,所以模块化方法的概念开始实行,把软件系统划分成独立命名和可独立访问的模块。插件就是具有独立功能的一个功能模块。插件化(或模块化)设计模式最先应用于制造业,1962年,西蒙(H.Simon)提出了模块(Module)的概念。他认为,模块是复杂系统在进化过程中产生的一种特殊结构,模块化的概念也在制造业领域取得了成功,例如船舶大型钻井平台等设备的制造。这种设计模式也被应用在了计算机硬件系统的设计中。硬插件通过接口连接到总线上,总线负责插件的通信管理与控制。接口负责插件的数据传递、开关等工作。计算机系统投入运行后,还可以根据用户的需求添加新的功能插件。插件于1970年代首次用于文本编辑器中,后来Silicon Beach使用插件来扩展图形程序的功能,如Digital Darkroom和SuperPaint,该公司还因创造了“插件”一词而受到赞誉。随着软件和微处理器变得更加强大,插件在20世纪90年代首次流行起来,插件化开始引入计算机软件领域,尤其是在PC端。计算机工程师乌尔里克(UIrich)和马奥尼(Mahoney)提出:软件可以理解为由一个或多个具有特定功能的部分组成,所以一个软件系统可以拆分成多个独立的功能模块,系统的功能由这些模块相互协作而成。而后许多流行的软件开始支持插件,尤其是内容创作工具(如Adobe Photoshop)、Web浏览器(如Netscape Navigator)和文本编辑器(如Emacs)。插件允许用户在不改变核心代码库的情况下,添加新功能或改进现有功能。插件式体系结构把应用程序的功能拆解开来,从而将一个大应用拆解为由各个功能组成的数个小应用,这样就有效减小了单个程序安装包的体积。插件是被单独开发出来的,系统根据用户的需求实时的将插件加载到系统内。由于模块脱离主体,各个模块可以由不同的开发组同时开发,因此可以大大提高软件的开发速度,降低耦合性,也方便了设计,在可运行性、可测试性和可维护性等方面也有大大的提高。如 Eclipse、Photoshop、firefox 等很多 PC 端的软件应用,都是采用了模块化的设计与开发方法。Web2.0时代的到来和兴起,参与式社交网络开始出现,Web服务和应用程序编程接口 (API) 的概念变得流行,使不同的Web应用程序能够无缝通信和共享数据,Web 2.0的网站使用API进行自动化使用,能够更深入地使用由第三方开发人员创建的应用程序。
技术原理
编辑开发原理
插件化开发是把一个很大的软件分成多个比较小的软件,其中有一个软件为主体框架,也就是宿主程序。宿主程序的表现模式是可执行文件,插件则是常驻于内存中的服务性功能。宿主程序在使用插件的时候,会将其加载至自己的内存空间。由于不同产品在插件化时所指定的规则不同,因此需要对插件进行管理。单个插件的功能较单一,多个插件协同工作,就可以完成比较复杂的工作。插件与宿主程序都要遵循接口的规则去连接,插件的所有功能都是通过接口进行配置的。计算机软件可以将插件设置为动态形式,以动态形式实现插件的应用。另外,插件也可以为计算机提供相应接口,推动主程序调用行为的实现,精准识别主程序调用行为。主程序主要用于启动计算机软件。在计算机软件的工作过程中,插件可以进入相关进程地址。各个插件可以通过主程序实现有效管理,确保各插件的有效应用。
工作流程
插件通过连接到主机应用程序的现有代码库来工作,由应用程序编程接口(API)或核心程序提供的其他集成点连接到主软件,应用程序上构建了插件,通过API(应用程序编程接口)提供集成点,其他软件组件可以通过API将其代码合并到主机软件中,而无需修改其核心功能。
插件的工作流程
开发要点
一个使用插件的软件系统,通常由一个主程序和许多完成子功能的插件组成。在进行系统设计时,需要解决主程序对插件的识别、加载、卸载以及调用等问题,其开发要点如下:
- 定义软件插件程序标准接口:包括定义主程序接口和插件接口,声明主程序有哪些资源可被插件调用,以及成为系统可识别插件的条件。
- 制定插件管理机制:确定主程序获取插件存储位置的方式,方便插件的加载、卸载或更新。
- 加载及调用插件:确定主程序动态加载插件的方式及调用插件的方式。
主要技术
插件技术主要是根据预定义接口,进行标准化程序的编写,并将程序运用到计算机软件的运行中。插件在运行时应该保证计算机应用程序功能的拓展、主程序与插件组件相互协调,以及对软件运行的协议规则进行审定,保障程序处于正常状态。
- 插件式编程技术:根据系统需求划分目标,将软件各个功能部件分开。之后,限定各个环节的接口技术,每个功能部件单独开发,最后进行软件集成。在软件集成环节,确保每个功能组件在标准程序下进行。一般情况下,为了保证集成效率,不采用传统的链接库或者是源代码方式的集成方式,可使用适合的集成软件。
- 动态链接技术:动态链接技术需要在动态链接库的基础上实现,而动态链接库自身也不能独立运行,需要在函数调用的基础上,对主程序中组建进行函数调用。
- 组件对象模型的建立技术:组件对象模型可以促进计算机软件之间的通讯。在对象模型中,组件是基本单元,在保障各个组件之间的通讯交互基础上,组件对象模型可以对同一类型的插件接口施加相应的标准化处理,能够强化插件的功能。
插件架构
编辑在计算机软件中运用插件技术时,需要通过接口和动态的链接库等来支持实现。插件管理程序负责为插件分配资源,创建运行环境,按照用户的要求对插件进行调用。为了保证这个过程顺利进行,需要为如何调用插件,如何交换数据定义一套规则,使得插件系统在这些规则的指导下可以正常运行。插件需要通过扩展点才可以进行插入,一般情况下,插件的开发平台会提供插件所需要的扩展点。插件接口接口是插件必不可少的一部分,具有在主程序与插件之间传输信息数据的功能,保障计算机软件应用的稳定性和可靠性。接口的主要目的是实现软件功能调用,开发人员可以根据软件的接口规范,来开发相关的插件。在进行插件功能程序开发的过程中,要建立插件和主程序之间的正确通信。为了确保接口的适用性,应尽可能满足用户对插件的多元化需求,并设计覆盖所有类型插件的信息数据处理结构。
接口与组件的关系
动态链接库动态链接库能够对组件进行重用,在熟悉插件相关编程和调用规则的前提下,能够对插件进行集中化的调用。动态链接库方案的适用范围比较广泛,其可行性比较高。在插件的集成化管理中,只要系统掌握了与插件相关的调用规则和编程规则,就能够对插件的功能进行优化。动态链接主要有静态和动态两种调用方式。静态调用是通过编译系统,利用DLL加载实现,其需要的代码少,较为简单,但是缺乏灵活性。如果DLL出现错误,没有DLL的话,DLL就会停在相应的地址中。动态调用的应用比较复杂,灵活性较高,在DLL出现错误时,程序也能正常运行。插件资源文件插件资源文件也叫清单文件,一般包含了将插件集成到框架所需要的关键信息。第一次创建插件时,在缺省的情况下,开发平台会在清单编辑器区域中打开该文件,之后开发人员可以选择关于插件的不同信息集合。插件通信插件之间的通信允许它们协作和交互以实现所需的功能,插件通信的方法包括共享数据和状态、事件和通知、进程间通信和端点。其中事件和通知包括事件总线和观察者模型,事件总线允许插件订阅和发布事件的事件总线或消息传递系统,插件可以在必要时做出相应的反应;使用观察者模式,插件可以注册为特定事件或状态变化的观察者或侦听器。当观察到的事件发生时,注册的插件会收到通知。插件容器插件容器是一种类似于观察者的设计模式,但更侧重于数据处理、状态更改和可取消操作,负责运行 Adobe Flash、Java和Silverlight等插件,并防止插件崩溃时浏览器崩溃。
分类
编辑插件提供了一种灵活的方式来增强程序的功能,使得软件能够适应不同用户的需求或适应新的技术发展。根据使用的语言和环境,计算机插件可以分为以下几类:
- 类似命令的简单插件:在使用过程中需要用户选择或输入一些数据,自定义具体操作步骤,主要用于Win Amp以及Win Hacker等软件。这类插件的优点是使用难度低、方便运用,可以减少软件的开发时间和成本,适合刚开始研究计算机技术的人。它的缺点主要是自由度较低,会降低软件系统的运行效率,让软件的很多功能无法实现。
- 脚本语言插件:通过脚本语言的形式实现软件功能,其优点是在插件制作的过程中,不需要依靠其他工具,开发软件就可以实现其对应功能。它的缺点是制作过程比较繁琐,需要特殊编制。Office等办公软件中采用的就是脚本语言插件。
- 动态函数据库DLL插件:借助动态数据库实现主程序的功能。主程序通过相应工具,调用DLL插件中存在的函数,然后再利用相应函数调动动态函数库中的DLL插件。这类插件的缺点是,在主程序运行的过程中,可能会发生“DLLHELL”状况,导致插件无法运行。
- COM组件插件:COM 组件方案主要是为了用户提供宿主程序和组件之间的交互规范,在该类型组件的编写环节中,需要注意软件系统与插件之间的相互匹配。同时 COM 组件方案与动态链接库方案相比,更加易于Windows 系统技术实现。这类插件可以对计算机内部的一些主要程序进行定义,使用者在应用插件的过程中,不需要深入了解插件的组成和操作过程,可以直接将客户端的接口连接到计算机内部的主程序上。
- 已有程序环境插件:设计者根据功能需求进行设计,有很强的自由性。这种插件的复杂程度更高,制作难度和所需的时间成本也很高。Photoshop中应用的就是这类插件。
相关平台
编辑知名产品
编辑兼容性
编辑插件的兼容性是指按新的接口开发的插件,能够提供对旧接口开发的插件管理程序的支持,或者按照新接口开发的插件管理程序,也能够插入按照旧接口开发的插件。兼容性可以提高软件的可复用性,增长插件应用系统的生命周期。
接口的兼容实现
插件的兼容性要求插件具备智能识别、自动化调用和通信过程顺利:智能识别:插件系统中可能会插入很多插件,其中的一部分可能是第三方开发的,其功能和需要的资源都不能够事先预判。接口必须在插件插入到系统中的时候,对插件进行识别,包括获取插件信息、判断它是否与当前接口吻合等,以决定是否将它插入到系统中。之后,还要从获得信息中获取插件所需要的资源,并为它创建运行环境,以确保插件的正常运行。自动化调用:对插件的调用分为事件激活和自动调用两种方式。事件激活指将某种特定的事件消息传递给插件,插件调用相应的事件处理程序。自动调用是指系统可以根据自身的需要,或者用户的需要,对插件提供的服务进行调用。通信过程顺利:插件管理程序与插件之间的通信过程是否顺利,对多个插件的并行调用有很大影响。
安全性
编辑插件机制的引入,给应用软件的功能扩展带来了便利,但同时,插件机制本身存在着一些安全隐患,容易被不法分子利用,可能对用户的财产和隐私安全带来威胁。
- 恶意插件:当恶意插件入侵电脑后,可能会对用户的计算机系统进行数据窃取,或是对信息进行随意篡改。在计算机网络运行中,有些软件中捆绑着各种恶意插件,如果用户下载了这类软件,计算机便会受到网络攻击。这些恶意插件是黑客所植入的,而且恶意插件的隐蔽性较高。
- 应用软件木马(SPM):即利用应用软件插件机制实现的木马,它本体是一个完整的插件,但具备了木马的功能和行为。当应用软件启动,加载了相应的插件,执行插件中植入的恶意代码,那么相应的SPM就会启动运行。在窃密方面,SPM比传统木马更具有优势,可以通过与应用软件结合,直接访问宿主软件内的文件内容。
一旦用户的计算机系统在安装软件过程中捆绑了恶意插件,黑客便会通过这些恶意插件来对用户的计算机系统进行监听,会影响到计算机系统的运行速度,甚至会对用户的计算机系统进行攻击和数据篡改。在计算机网络安全防范技术研究中,需要重视这些恶意插件的清除,防止黑客利用恶意插件开展网络攻击。
应用
编辑插件式程序在当前有着广泛的应用,特别是在大规模的软件开发当中,可以提高群体的开发效率,缩短开发周期以及降低设计难度等。插件在实际应用中,除了可执行代码外,还可以处理图像、声音、动画等。
Web浏览器
插件在浏览器的应用类型较为广泛,网络浏览器的插件又被称为扩展,例如Adobe Flash Player、Grammarly 和广告拦截器,VPN使浏览器具有附加功能,这些附加功能包括启用内容过滤和广告拦截、提供另一层安全性、限制允许用户在指定网站上花费的时间、允许用户突出显示网页文本并通过社交媒体、电子邮件等分享、进行网页翻译等。
一款翻译插件
内容管理系统
预先创建好的插件和模板能够应用到内容管理系统(CMS)中,CMS是一种工具,可以通过易于使用的界面构建网站的所有内容,从文本到照片再到小部件,使用CMS无需编写自己的代码,能够快速有效地构建网站。比较流行的CMS工具例如WordPress,它提供了多种功能,从添加社交媒体集成到增强网站的SEO(搜索引擎优化)等等。
WordPress SEO优化引擎插件
媒体播放器
多媒体软件设置附带各种功能的模块,包括插件管理模块、产品功能模块、人机界面模块、通讯模块以及界面管理模块等,插件在多媒体中能够实现可播放媒体格式的扩展、保证音频的高品质、校正音频和视频的同步。调整灯光设置、允许媒体编码等等,如插件Winamp DSP允许用户自定义带有效果和可视化的音频播放。
Winamp DSP界面管理图
图形设计
在图形设计软件中有许多的增效工具插件,能够进行颜色校正、提高图像的质量、创建数字背景、绿屏摄影的快速自动蒙版、创建纹理和边框、添加光照等一系列的功能,可以满足数码摄影师、图形艺术家和 Web 设计师的各种需求。软件工具Adobe Phototshop中就包含了多种增效工具和扩展,如一款获奖的增效工具——Noiseware,可单独用于消除照片杂色。
Nosieware效果对比图
项目开发
开发工具插件可以用来帮助构建模式项目,这些项目包括软件组件、脚本包、模式类型和插件,为这些项目提供创建、配置、打包、部署和调试功能。例如华为的HMS Toolkit,一个IDE工具插件,提供一套含应用创建、编码和转换、调测、测试和发布的开发工具,还能够将现有代码转换为集成HMS Core服务的代码等。
HMS Toolkit代码的转换
电子商务平台
插件带有一些独立的功能,通过调用整合,能够形成一个成熟的电子商务平台,比如ECwid电子商务购物车(Ecwid Ecommerce Shopping Cart),通过与主要承运人集成,自动计算运费,包括美国和加拿大的自动税率计算以及欧盟增值税,与TaxJar集成,可在美国自动进行销售税报告和申报;另有一款名为Easy Digital Downloads的插件,该插件可以查看和管理所有客户及其购买历史记录的详细记录,对店铺的收入、退款、销售等进行追踪。
Easy Digital Downloads的用户追踪功能
内容由百科小编提供,本内容不代表globalbaike.com立场,内容投诉举报请联系全球百科客服。如若转载,请注明出处:https://globalbaike.com/385572/