插件
插件(也称为addin、add-in、addon、add-on或Plug-in)是应用程序接口(API)按照一定的规范编写的程序。开发者可以通过插件来扩展产品功能。计算机软件插件可分为类似命令的简单插件、脚本语言插件、动态函数库DLL插件、COM组件插件、现有程序环境插件等。早期的软件很难定制和扩展,于是开始实行模块化方法的概念,插件就是一个功能独立的功能模块。20世纪70年代,插件首次用于文本编辑器,随后“插件”一词由Silicon Beach Company提出。90年代,插件被引入计算机软件领域,大大提高了软件开发的可操作性和可维护性。然后,很多流行的软件开始支持插件,比如Adobe Photoshop,Netscape Navigator,Emacs等等。Web2.0兴起后,Web服务和应用编程接口的概念开始流行,Web2.0网站开始允许使用第三方开发者创建的应用。
插件技术可以“即插即用”地扩展软件功能,支持协同开发,使软件易于维护和扩展。常用的开发平台是微软的。NET,IBM的Elipse平台,RCP平台,Android平台。插件广泛用于数字音频、视频和网页浏览。但插件机制本身存在一些安全隐患,不法分子会利用恶意插件威胁用户的财产和隐私。因此,在使用电脑时,我们需要注意清除这些恶意插件,防止恶意插件带来的危害。
定义意义
定义插件也可以称为插件,是按照相应规范的应用程序接口(API)编写的程序。应用程序运行时,通过接口规范调用插件,扩展应用程序的功能。
它是基于面向对象的思想设计和实现的。通常插件以二进制形式独立存在,在主程序运行时动态加载通道内存空间。很多软件都使用插件技术,比如IE浏览器、Photoshop、媒体播放器、MS Office、MS Visual Studio等等。
插件的本质是在不修改程序主体(平台)的情况下,对软件功能进行扩展和强化,可以用来解决一些操作上的不便或增加新的功能,提高计算机的运行效率,进一步扩大软件的扩展空间,丰富软件的功能。
研究意义
插件可以提高代码的可重用性,使软件并行开发,提高开发效率,同时降低成本。而且插件的独立性不影响主程序和其他插件在功能升级和异常调试时的运行。用户的系统可以通过更换插件自由跟随用户业务的变化,软件的未来版本可以通过插件丰富自身的功能,无需重新开发,提高了软件的可测试性。
主要特性
插件在计算机软件的运行过程中起着重要的作用。插件主要有以下特点和优势:
低耦合:插件软件解耦模块,使程序更加清晰易懂。
复用率高:在软件设计开发中,如果要调整或升级软件原有的设计结构,就必须使用插件技术。
插件互不干扰:即使计算机软件中不断加入新类型的插件,也不会影响软件的整体系统。
结构灵活:插件的结构简单,删除和添加插件的过程方便快捷,不会对计算机软件的整体构成产生不利影响。
可维护性强:插件通过接口与主程序连接,与主程序解耦,插件是独立的,所以插件的变化对主程序没有影响。
开发周期短:在开发过程中,开发者可以先开发主框架和一些重要的功能插件,从而保证产品在第一时间投入市场,得到用户的反馈。其他功能可以在产品上线后再添加。
专有技术
开发原理
插件开发就是把一个大软件分成几个更小的软件,其中一个是主框架,也就是宿主程序。宿主程序的性能模式是可执行文件,插件是驻留在内存中的服务函数。当宿主程序使用插件时,它会将其加载到自己的内存空间中。因为不同的产品在插件的时候规定了不同的规则,所以需要对插件进行管理。单个插件的功能单一,多个插件可以协同工作,完成更复杂的工作。插件和主机程序要遵循接口的规则来连接,插件的所有功能都是通过接口来配置的。
计算机软件可以将插件设置为动态形式,并以动态形式实现插件的应用。此外,插件还可以为计算机提供相应的接口,促进主程序调用行为的实现,准确识别主程序调用行为。主程序主要用于启动计算机软件。在计算机软件的工作进程中,插件可以输入相关的进程地址。可以通过主程序对每个插件进行有效管理,保证每个插件的有效应用。
工作流程
插件通过连接到宿主应用程序的现有代码库来工作,并通过应用程序编程接口(API)或核心程序提供的其他集成点连接到主软件。插件构建在应用程序上,集成点由API提供。其他软件组件可以通过API将它们的代码合并到宿主软件中,而无需修改它们的核心功能。
发展重点
使用插件的软件系统通常由一个主程序和许多完成子功能的插件组成。在设计系统时,需要解决主程序对插件的识别、加载、卸载、调用等问题。其开发要点如下:
定义软件插件的标准接口:包括定义主程序接口和插件接口,写明主程序可以被插件调用哪些资源,成为系统可以识别的插件的条件。
制定插件管理机制:确定主程序获取插件存储位置的方式,以方便插件的加载、卸载或更新。
加载和调用插件:决定主程序如何动态加载插件和调用插件。
主要技术
插件技术主要是根据预定义的接口编写标准化的程序,并将程序应用于计算机软件的运行。插件运行时,应保证计算机应用功能的扩展、主程序与插件组件的协调、软件运行协议规则的审批,保证程序处于正常状态。
插件编程技术:根据系统需求划分目标,分离软件的功能组件。之后定义各个环节的接口技术,分别开发各个功能组件,最后集成软件。在软件集成过程中,确保每个功能组件都在标准程序下执行。一般来说,为了保证集成效率,不采用传统的链接库或源代码集成方式,可以使用合适的集成软件。
动态链接技术:动态链接技术需要在动态链接库的基础上实现,动态链接库本身不能独立运行,需要在函数调用的基础上对主程序中的程序集进行函数调用。
组件对象模型的构建技术:组件对象模型可以促进计算机软件之间的通信。在对象模型中,组件是基本单元。组件对象模型在保证组件间通信和交互的基础上,可以规范同类型插件接口,强化插件的功能。
插件架构
在计算机软件中使用插件技术时,需要有接口和动态链接库的支持。
插件管理器:负责为插件分配资源,创建运行环境,根据用户需求调用插件。为了保证这个过程的顺利进行,需要定义一套如何调用插件、如何交换数据的规则,让插件系统在这些规则的指导下正常运行。插件只能通过扩展点插入。一般来说,插件的开发平台会提供插件需要的扩展点。
插件接口:接口是插件不可缺少的一部分,它具有在主程序和插件之间传递信息和数据的功能,以保证计算机软件应用的稳定性和可靠性。接口的主要目的是实现软件功能调用,开发者可以根据软件的接口规范开发相关插件。在插件功能程序开发过程中,需要建立插件与主程序之间的正确通信。为了保证接口的适用性,要尽可能满足用户对插件的多样化需求,设计一个覆盖所有类型插件的信息数据处理结构。
动态链接库:动态链接库可以复用组件,在熟悉插件相关编程和调用规则的前提下,可以集中调用插件。动态链接库方案适用范围广,可行性高。在插件的集成管理中,只要系统掌握了与插件相关的调用规则和编程规则,就可以优化插件的功能。动态链接有两种调用方式:静态和动态。静态调用是通过编译系统,加载DLL来实现的,需要的代码少,相对简单,但是缺乏灵活性。如果DLL中有错误,并且没有DLL,DLL将在相应的地址停止。动态调用的应用复杂而灵活,当DLL出现错误时,程序也能正常运行。
插件资源文件:插件资源文件,也称为清单文件,通常包含将插件集成到框架中所需的关键信息。第一次创建插件时,默认情况下,开发平台会在清单编辑器区域打开文件,然后开发者可以选择关于插件的不同组信息。
插入式通信:插件之间的通信允许它们协作和交互来实现所需的功能。插件通信的方法包括共享数据和状态、事件和通知、进程间通信和端点。其中,事件和通知包括事件总线和观察者模型。事件总线允许插件订阅和发布事件总线或消息传递系统,插件可以在必要时做出相应的响应。使用观察者模式,插件可以注册为特定事件或状态变化的观察者或监听器。当观察到的事件发生时,注册的插件会得到通知。
插件容器:插件容器是一种类似于observer的设计模式,但更侧重于数据处理、状态改变和可取消操作。负责运行Adobe eFlash、Java、Silverlight等插件,防止插件崩溃时浏览器崩溃。
主要应用
插件程序目前应用广泛,特别是在大型软件开发中,可以提高群体的开发效率,缩短开发周期,降低设计难度。在实际应用中,插件不仅可以执行代码,还可以处理图像、声音、动画等。
网页浏览器:浏览器中广泛使用插件,网页浏览器的插件也称为扩展,如Adobe Flash Player、Grammarly、广告拦截器等。VPN使浏览器具有额外的功能,这些功能包括启用内容过滤和广告拦截,提供另一层安全,限制用户被允许在指定网站上花费的时间,允许用户突出显示网页并通过社交媒体和电子邮件共享它们,以及翻译网页。
内容管理系统:预先创建的插件和模板可以应用于内容管理系统(CMS)。CMS是一个工具,可以通过一个易于使用的界面构建网站的所有内容,从文本到照片到小部件。使用CMS可以快速有效地建立一个网站,而无需编写自己的代码。流行的CMS工具,如WordPress,提供了多种功能,从添加社交媒体集成到增强网站的SEO(搜索引擎优化)等等。
媒体播放机:多媒体软件配有各种功能的模块,包括插件管理模块、产品功能模块、人机界面模块、通信模块和界面管理模块等。插件可以扩展可播放媒体的格式,保证音频的高质量,纠正多媒体中音频和视频的同步。调整照明设置,允许媒体编码等。例如,插件Winamp DSP允许用户定制带有效果和可视化的音频回放。
装帧设计艺术:平面设计软件中有很多插件,可以进行色彩校正、提高图像质量、创建数字背景、快速自动蒙版绿屏摄影、创建纹理和边框、添加光照等功能,可以满足数码摄影师、平面美工和网页设计师的各种需求。Adobe Phototshop这款软件工具,包含了多种插件和扩展,比如——Noiseware这款获奖插件,可以单独使用,消除照片的噪点。
项目开发:开发工具插件可用于帮助构建模式项目,包括软件组件、脚本包、模式类型和插件,并为这些项目提供创建、配置、打包、部署和调试功能。比如华为的HMS Toolkit,一个IDE工具插件,提供了一套包括应用创建、编码和转换、调试、测试和发布的开发工具,还可以将现有代码转换成集成HMS核心服务的代码。
电子商务平台:插件有一些独立的功能,可以通过调用整合形成一个成熟的电商平台,比如ECwid电商购物车。通过与各大承运商集成,可以自动计算运费,包括美国和加拿大的税率自动计算和欧盟增值税,与TaxJar集成,可以自动申报和申报美国的销售税。另一个名为Easy Digital Downloads的插件可以查看和管理所有客户的详细记录及其购买历史,并跟踪商店的收入、退款和销售情况。