首页 百科知识 插件系统设计

插件系统设计

时间:2022-11-01 百科知识 版权反馈
【摘要】:针对上述存在的问题,提出了基于框架-插件的矿井数字通风系统的设计方法。其中,六个功能插件分别为井巷三维可视化建模插件、通风实时数据动态查询与预警插件、通风网络解算与调节插件、通风机性能测定插件、通风网络可靠性分析与优化插件、通风日常报表管理插件,而四个图层插件则分别为巷道图层、风机图层、巷道骨架线图层和风流方向图层。唯一需要注意的是要遵循插件系统的原理,重点去处理在设计中经常出现的问题。

§2.3 系统结构设计


传统的通风仿真系统,在编译开发出来之后,就不允许对现有的系统进行更改或扩充,一旦要对某个功能进行扩充,则必须对整个系统进行编译开发,这就大大增加了研制开发的费用,而且有些无须修改的功能属于重复开发,费时费力。针对上述存在的问题,提出了基于框架-插件的矿井数字通风系统的设计方法。在此基础上设计了一个框架、六个功能插件和四个图层插件。其中,六个功能插件分别为井巷三维可视化建模插件、通风实时数据动态查询与预警插件、通风网络解算与调节插件、通风机性能测定插件、通风网络可靠性分析与优化插件、通风日常报表管理插件,而四个图层插件则分别为巷道图层、风机图层、巷道骨架线图层和风流方向图层。

2.3.1 插件技术概述

2.3.1.1 插件的相关概念

插件技术是实现软件应用框架架构的核心技术之一,以即插即用方式重用不同人员的开发成果,从而达到快速构建软件和复用,减少软件开发的成本和周期,提高软件产品的质量和开发效率。GIS应用框架是实现了GIS应用领域通用的完备功能(除去特殊应用的部分)的底层服务,而不是应用程序的小片程序。将插件技术引入GIS应用框架的开发实现中,有利于促进地理信息技术的发展和应用。

插件技术把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且在宿主程序不变的情况下,可以通过增减插件或修改插件来调整和增强应用程序功能,能从应用系统中进行“热拔插”,对功能模块进行方便、安全的装卸,而不必重新编译整个系统,类似于计算机上的USB接口。计算机的硬件设备是由许多插件板连接而成的,而这些插件板又是将许多具有独立功能的集成电路插件按插件板的设计要求组装连接而成的。各种插件卡插到计算机主板上,通过总线使它们相互通信、协同工作,计算机的迅速发展与这种结构特征及集成电路的发展是分不开的。近年来受到硬插件技术的启发,人们开始研究软插件技术,与硬插件系统类似,软插件系统由总线(也称宿主程序)、接口和插件三部分组成,如图2-2所示。

图2-2 软插件系统示意图

(1)宿主程序。Windows平台上一般表现为一个可执行的文件(一般为.EXE文件),这个可执行文件负责启动整个系统,将插件系统所需的插件加载到自己的进程地址空间中,插件系统所需要的插件是一些服务性的插件,常驻进程之中。宿主程序还必须对插件进行管理,不同产品的服务性插件的设计都不完全相同,但是对插件进行管理的功能是一定要实现的。

(2)插件。能够动态地插入到系统中,提供给插件系统相对简单的功能,但是多个插件能够使系统功能完善,完成许多复杂功能的处理,是插件系统的重要组成部分。在插件中必须提供给宿主程序调用的接口,当宿主程序需要调用插件的时候能够找到这个接口,以完成与宿主程序的通信与交互,并且使得宿主程序能够得到插件的相关信息。

(3)接口。宿主程序和插件能够互相结合在一起工作,必须有一套互相协作的规则和协议来使不同来源的程序互相协调工作,完成这些规则和协议的部分称为插件系统的接口。这是一个逻辑上的接口,由宿主程序和插件各完成一部分,它们共同完成插件的插入、调用、停止以及宿主程序与插件之间的交互。

2.3.1.2 插件的分类

目前应用比较普遍的插件,大致上可分为以下几类。

(1)批处理式。类似于批命令的简单插件,它一般是文本文件,这种插件的缺点是功能比较单一、可扩展性极小和自由度非常低。

(2)脚本式。使用某种语言把插件的程序逻辑写成脚本代码,而这种语言可以是Python,或是其他现存的已经经过用户长时间考验的脚本语言,甚至你可以自行设计一种脚本语言来配合你程序的特殊需要。当今最流行的是XML,其特点在于,稍有点编程知识的用户就可以自行修改你的脚本。

(3)动态函数库DLL。插件功能以动态函数库的形式存在。主程序通过某种渠道(插件编写者或某些工具)获得插件函数签名,然后在合适的地方调用它们。

(4)聚合式。顾名思义,就是把插件功能直接写成.EXE。主程序除了完成自己的职责外,还负责调度这些“插件”。这使插件与插件之间、主程序与插件之间的信息交流困难了许多。

(5)COM组件。插件需要做的只是实现程序定义的接口,主程序不需要知道插件怎样实现预定的功能,只需要通过接口访问插件,并提供主程序相关对象的接口。这样一来,主程序与各插件之间的信息交流就变得异常简单,并且插件对于主程序来说是完全透明的。

2.3.1.3 基于插件技术的软件开发方法

上面介绍了五种插件类型,其中批处理式和脚本式因为功能比较简单很少应用;聚合式相当于创建了另外一个进程,实际开发过程中一般以外挂的形式出现;比较常用的是普通的DLL插件和COM插件两种形式,二者关键的区别在于插件接口的实现上。普通的DLL插件使用导出函数作为接口,而COM插件则使用COM规范中特有的创建与管理接口的方法。在插件的实现过程中,绝大部分的实现都是使用导出函数作为插件提供服务的接口。

基于插件技术的软件开发,可以根据产品的具体情况采用面向对象的分析与设计方式,也可以采用面向构件的设计方式。唯一需要注意的是要遵循插件系统的原理,重点去处理在设计中经常出现的问题。

2.3.2 应用框架概述

2.3.2.1 框架的概念

框架(Framework)的概念出现于20世纪80年代,是目前主流软件架构的技术之一。框架是一个“可复用”的、“半成品”的应用,它建立在领域分析的基础上,由一组互相协作的组件组成,通过这些组件及其协作关系定义了应用系统的体系结构,同时通过扩展热点(Hot spots)组装用户开发的组件,以处理领域变化性。框架面向特定领域,集成了主流复用技术,不仅为特定领域内共性问题的解决提供了统一的业务应用系统骨架,同时又提供了相应的机制来支持领域内变化性特征的隔离、封装和抽象,兼顾了系统的稳定性和灵活性,使软件具备了支持动态演化的能力。框架的出现改变了应用软件的开发模式,使软件能够像硬件一样动态定制,从而使软件具有更强的时空适应性。可以说,框架是可以通过某种回调机制进行扩展的软件系统或子系统的半成品。一个框架是一个可复用的设计插件,它规定了应用的体系结构,阐明了整个设计、协作插件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为插件复用提供了上下文关系。

2.3.2.2 应用框架

框架有许多相互独立的分类方式,如图2-3所示,大致上可以将框架分为基础设施框架、中间件框架、应用框架三大类。

图2-3 框架分类图

(1)基础设施框架。该框架的通用性很强,它是对系统基础功能接近完整的实现,并留有扩展的余地。

(2)中间件框架。该框架的发展也有十多年的历史,它是随着诸如数据访问中间件、消息中间件、事务处理中间件和各种互操作中间件技术的出现而出现的。

(3)应用框架。该框架的使用是最广泛的,它为应用程序框架提供了一组类似功能的应用程序的基本架构,通过在该框架内集成更多的功能,可以快速完成一个应用程序的开发。例如Web应用框架Struts,而基于OSGI规范开发的Eclipse则完全可以视为开发桌面应用的应用框架,还有Open Laszlo等客户端应用框架。

2.3.3 框架-插件技术

框架-插件技术是近年来备受重视和广泛应用的技术。框架-插件技术可以让用户在不修改程序主体的前提下,对软件的功能进行进一步的扩展与更新维护。通过预留接口,利用一种弱耦合的关系将插件与调用插件的主程序连接起来。需要功能扩展时,用户仅就不同的插件接口进行编写即可,不需要对主程序作任何变动,以实现系统功能的扩展。

图2-4 框架-插件示意图

图2-4为框架-插件示意图,首先设计数字通风系统的整体结构框架,并设定好软件系统的扩展接口。在系统中插件都是以一个独立文件的形式存在,同时通过设定不同插件的功能,再为其设计扩展接口,系统运行时根据具体插件的功能配置寻找预先设计好的接口,将插件导入系统中,就可以实现所设计的软件系统的整体功能。

使用框架-插件技术编写的软件系统很容易扩展,在系统发布后需要对系统进行的扩充,无须重新编译,只需增加或修改插件即可。

2.3.4 系统功能插件设计

2.3.4.1 井巷三维可视化建模插件

(1)通过输入井下巷道属性信息以及巷道拓扑关系数据,系统进行三维建模,生成三维井巷仿真系统图。

(2)该插件提供对通风系统三维仿真模型的放大、缩小、平移、交互漫游、按任意角度实时旋转等三维图形操作功能,支持键盘和鼠标两种操作方式。

(3)删除巷道:在巷道开采完封闭后,可以在通风仿真图上直接删除作废巷道;增加巷道:在掘进过程中,或者在进行通风系统优化时,可以在图上增加新的巷道以进行模拟和评估通风系统。

2.3.4.2 通风实时数据动态查询与预警插件

该插件将井下瓦斯、粉尘、温度等监测实时数据通过数据采集软件包转换成一定格式(.dat)的数据文件,将监测数据动态地映射在三维仿真图形上,让工作人员实时了解井下的环境参数;另外该插件具有通风信息预警功能,通过设置瓦斯、风量、温度等报警参数,实现对信息的预测与预报,防止井下事故发生。

2.3.4.3 通风网络解算与调节插件

将与通风网络解算有关的巷道参数、风机参数等数据输入后,自动依据已编入的矿井通风基本理论,可选择性地选用斯考德-恒斯雷法或者牛顿法解算各巷道对应的风量及方向,分析各工作参数及运转稳定性,并输出解算结果,可以多次计算,以对比其解算的稳定性和是否与实测风量相近;同时根据结算结果得出需调节点和其调节量,进行通风网络调节。

2.3.4.4 通风机性能测定插件

根据风机性能测定原始数据,求解风机风压特性参数,计算扇风机的工况点和相应的效率、轴功率以及运转稳定情况,以确定风机是否处于最佳工作状况,同时绘制风机特性曲线。

2.3.4.5 通风网络分析与优化插件

该插件主要提供以下三个功能:

(1)根据通风信息实时数据测定,进行通风系统现状可靠性评价,分析其存在问题,提出相应的解决方法和控制措施。

(2)对矿井通风系统进行优化设计,通过多个通风方案(主要在技术上、经济上、安全上)比较,提出可靠的通风系统总体方案和分步实施方案,并指导通风系统的设计和施工。

(3)对矿井通风阻力测量路线的优化选择,包括主干测量路线的优化选择,所有分支巷道必测路线的优化选择和所有节点必测路线的优化选择。

2.3.4.6 通风日常报表管理插件

矿井的通风日常管理生成的各类报表与数据主要靠手工进行输入、处理,效率较低且易出错。该插件的主要功能就在于可以使上述数据的处理实现自动化。

2.3.5 系统开发框架设计

2.3.5.1 GIS应用框架系统的整体结构

GIS应用框架主要由两个部分组成,即框架平台和若干个插件。框架平台主要包括插件管理器、界面管理器、服务管理器以及系统功能管理器等功能组件。框架和插件之间的通信是通过一组接口协议来进行的,本系统中框架实现IApplication接口,插件是通过这一接口来对框架的各种要素进行访问的;插件实现IPlugin接口,框架通过这一接口来实现对插件的加载管理,并对插件的功能函数进行调用。按照插件的不同表现形式,现对其另外定义几个接口,主要包括ICommand、ITool、IToolBarDef、IMenuDef、IDockableWindow-Def等。框架插件关系如图2-5所示。

2.3.5.2 插件的动态加载

在插件式应用框架的实际开发过程中,关键之处在于宿主程序怎样查找和加载插件,并且对插件所提供的功能函数进行使用。通常情况之下,插件的处理方式大部分都是以DLL的文件格式存在的,所以,可以把插件统一放置于一个目录之下,在宿主程序启动的时候来查找这一文件并创建可用的插件对象,或者采用配置文件来进行插件的配置,宿主程序在运行的时候,可以按照配置文件中的参数来动态加载适当的程序集,并调用程序集中的方法来完成用户的功能需求。当用户须增加新功能时,只需要提供新的程序集,之后再更改新的配置文件就能够实现了。具体应用.NET中使用System.Reflection命名空间中的类型来加载插件。

应用框架中的插件管理器将插件对象实例进行获取之后,就可以对插件管理器中已经有的插件对象进行查询,从而可以进行插件的加载和卸载。

2.3.5.3 插件的调用

图2-5 框架插件关系图

在插件管理器获取插件之后,宿主程序的界面元素怎样按照插件信息来生成相应的插件功能并予以调整,这两者之间的相互关联就是界面管理器所需要完成的工作。在宿主程序系统界面上来生成相应的菜单以及工具栏,并将相应的插件调用,这就需要对系统界面的窗口信息进行获取,需要将自己的一些消息处理函数添加进来。对于不同的插件,它们在同一宿主界面上的表现形式是各不相同的,就像ICommand和ITool对象一样,两者在表现形式上看似是相似的命令按钮,但是对于ITool对象来讲,它需要和其他的视图进行交互。两者都是停靠于Imenudef或者是ItoolBarDef的UI对象之上的,表现出来的是后者的一个Item对象。

根据矿井通风系统的特点,在研究开发中提出了数字通风系统的框架与插件集成的方法,确定了矿井数字通风系统的体系结构。如图2-6所示,将系统划分为一个框架、六个基础功能插件和四个图层插件。

图2-6 矿井数字通风系统开发框架

总之,框架+插件体系结构这样的开发方式是GIS软件开发中的一种新的方式,本书主要是通过一个比较简单的演示来使插件式GIS应用框架原型系统实现了,在把接口的规范定义好了之后,可以利用插件来对系统的功能进行相应的扩展。对于插件式应用框架,其主要优点就在于能够使系统的可扩展性得到提升,减少重复工作,使业务的逻辑得到简化等,是一种值得推广的方式。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈