APP下载

反射机制下插件系统软件的设计和应用

2016-08-17刘述木

现代电子技术 2016年12期
关键词:配置文件插件对象

向 桢,刘述木

(四川工程职业技术学院,四川 德阳 618000)

反射机制下插件系统软件的设计和应用

向桢,刘述木

(四川工程职业技术学院,四川 德阳618000)

为了缩短软件开发周期并提升软件扩展性,提出基于反射机制的插件系统软件设计理念。该系统所配置的独立软件,无需编写源程序,从而达到定制、修改、添加软件功能。在反射机制下设计插件系统软件借助观察者模式对插件间的数据关系实施解耦,并借助XML描述与表达插件关系进行配置,这一软件设计思想能提升软件复用性、扩展性。

反射机制;插件系统软件;软件设计;软件开发

随着计算机技术的开发和广泛应用,多数复杂的系统的开发层出不穷,系统的复杂性为日后的维护、管理工作带来不便。任何一种软件的开发,不管研发者开发前是否详细调查用户需求,软件开发完成后,使用过程中用户需求出现变化或部分功能有待改进,传统繁琐、低效率的流程无法满足需要。为了设计维护性能强、容易扩展的软件,最佳的方式就是使用插件技术,文中尝试把基于NET反射机制引入插件系统软件开发中,软件参数化程度升高,实现完善配置管理的目的。

1 简述反射技术及插件技术的概念

1.1反射技术

反射概念最早于1982年提出,是指程序能够访问、检测、修改其自身状态或行为的一种能力[1]。反射概念的提出快速引发计算机领域有关应用反射性的研究。通常反射系统不单单满足开放性条件,也要满足原因连接。原因连接就是反射系统从发生描述改变能够及时反映至系统底层的时间情况。在NET内,反射机制可以建立灵活代码,该代码进行运行过程中进行装配,不需要再组建实施源代码链接。反射机制允许在编写及执行过程中,将接入装载至可执行的程序内部信息,这种反射机制称为创建灵活应用的主要工具[2]。

1.2插件技术

插件技术本身也是构建技术,如果某个软件工程项目较大、要求过紧,需要多个人员、单位在不同的时间下进行设计、开发软件。插件技术实现最终集成时,必须把部件组装而无需实施编译及连接,操作完成后直接组装至原软件平台方可使用。插件技术是遵循某种规范的应用程度接口对程序进行编写操作。目前,多数软件设有插件,例如:IE中安装相应的插件后,Web浏览器可直接使用插件程序对某种特定类型的文件进行处理。

2 基于反射机制下设计基础框架

插件是近几年比较常见的技术,插件结构有利于编写最佳的扩充和定制功能程序。本文提出插件/平台软件设计就是把某个有待开发目标软件划分为主框架(平台)和补充模块(插件)。主框架由内核、插件管理等部分组合而成。通过内核申请服务对整个程序的工作运行状态实现驱动,由于插件技术满足系统要求的各项服务,服务状态及形式展示在不同插件中[3]。在主框架中,插件管理层起着重要的连带作用,该管理层用以合理调配相应的接口,为内核提供一系列的服务功能。同时,内核能够有效完成推进时间、触发事件及分发消息等各项任务,其关系如图1所示。

图1 基于反射机制插件系统结构简图

在插件系统软件设计时,其平台选用软件基础服务,最后对扩展点展开分析,之后封装形成独立的插件,根据以上要求,软件设计框架如图2所示。

图2 插件系统软件的设计流程

2.1设计插件系统

设计插件系统过程中,抽象提取的插件必须满足独立性强、可靠性好、连接方便等特点,配合简要清晰地解释说明,方便日后合理的检测和应用。一般情况下,插件采用接口的形式对其功能进行公布,达到合理内部封装的效果[4]。插件严格遵循统一的命名规则及设定的接口标准。深入研究多种插件系统与对象的关系,本文提出借助数据交互接口、树状关系接口等相关插件接口。IEntityPlug是系统插件的直接继承接口,其具有注册、初始化、更新配置等插件等功能。

2.2NET反射机制下插件运行过程

NET反射机制本身就是一个分析程序元数据表的过程,便于掌握程序集的类型及其主要成员。通过反射机制能获取程序集中定义的不同信息,允许程序正常运行状态下建立部分类型对象,并及时调用以上类型、成员的操作[5]。通常将插件设置在特定目录内,例如:bin/de⁃bug/plugin,在plugin目录下存储插件,也能把插件信息填写至XML配置文件内。插件系统运行时序见图3。

图3 插件系统运行时序

程序正常运行时,窗体由配置文件内读取保存插件名称及其加载的DLL路径信息,动态形成各类菜单、命令。开启程序后,通过ObjectManafer对XML配置文件进行读取。反射机制建立插件试题,实现插件注册及初始化操作。

2.2.1插件实现具体步骤

插件实现必须遵循封装变化点、动态加载程序集的原则,插件系统软件正常运行时,依据配置文件制定的各项参数,动态加载合理的程序集并调用相应的方法,以此满足用户功能需求。如果用户需要增设新的功能,只需设置新的程序集并更改配置文件即可完成。

2.2.2封装变化点实现方式

在平台上定义的插件包括Tool,Command两种形式,各类插件具体的实现功能有所差异,均需设置统一的Icommand或TTOOL接口,通过设置这样的接口,宿主程序无需重视插件的具体实现情况,重点关注插件有没有实现该接口,由接口宿主程序与插件实现交互效果。

2.3配置约定

配置文件作为设计的软件框架的重要组成部分,配置文件的内存储系统包含原有的初始化信息,主要有对象属性值、对象关系等。因不同对象之间的关系过于复杂,在一定程度上为配置和管理工作带来极大的困难,配置合理的对象属性值便于系统进行管理,提高系统的运行效率[6]。本文选定XML文件作为软件参数配置软件,XML便于理解、解析,实现XML表达对象之前关系的优势。假设某个工程为根,与该工程有关的信号均保存在合理的属性之内。本文系统中的每个插件均是XML的一个节点,文中将其当做插件节点。把插件对象设置属性值作为该插件的各个子节点,插件能够准确表达该插件的名称、工作状态等各类信息,也可增设部分特有的属性值。

2.4对象逻辑关系的表达

配置文件第一步解决的问题就是不同对象的相关性,对象逻辑的象树关系代表配置文件内父与子的关系。

通常情况下,文中所说的组合对象、调用关系等内容,若插件节点出现这类关系,配置表示为空。每个对象在传输数据和信息的过程中,在XML配置上并列增设另外的<PSRalationShips>节点,其中某一个订购关系表示为<PSRalation>。该节点主要组成部分为:数据发布者、发布者名称、类型、数据订购者。

3 结语

总之,基于反射机制设计插件系统软件中,软件实现的功能均在插件中实现,不同插件处于相对独立的状态,因此,修改某一个插件并不会影响整个系统或其他插件正常运行状态,能有效减少其耦合性。文中设计的插件系统软件,已经广泛应用到实际工作中,在一定程度上提升开发效率和灵活性。

[1]高峰.插件式护士工作站设计与实践[J].中国数字医学,2012 (7):114⁃115.

[2]汪峰坤,曹新彩.基于反射的低耦合轻量级插件框架的研究和设计[J].硅谷,2012,11(5):54⁃55.

[3]陈海燕,朱宇来,林阳,等.利用反射技术实现程序结构优化设计[J].科技资讯,2014,32(28):21.

[4]张奕,余海龙,谭剑美,等.四通道高速数据采集系统设计[J].现代电子技术,2012,35(9):10⁃12.

[5]许宁,李建.基于.NET反射机制的插件技术的研究[J].计算机光盘软件与应用,2011(21):167⁃168.

[6]宫爱爱,丁香乾,侯瑞春,等.基于Eclipse智能代码生成框架的研究[J].现代电子技术,2013,36(18):55⁃58.

Software design and application of plug⁃in system under reflection mechanism

XIANG Zhen,LIU Shumu
(Sichuan Engineering Technical College,Deyang 618000,China)

In order to shorten the software development cycle and improve extensibility of software,some software design ideas of plug⁃in system based on the reflection mechanism is put forward.The independent software configured in the system doesn't need to write the source program,so as to achieve customization,modification,software addition functions.The plug⁃in system software is designed under the reflection mechanism to implement decoupling of the data relationship between the plug⁃ins with the help of the observer pattern.XML is used to describe and express the plug⁃in relationship for configuration.The soft⁃ware design idea can improve the software reusability and extensibility.

reflection mechanism;plug⁃in system software;software design;software development

TN911⁃34

A

1004⁃373X(2016)12⁃0130⁃02

10.16652/j.issn.1004⁃373x.2016.12.035

2015⁃11⁃03 基金项目:四川省2014年第二批科技计划项目:德阳产学研园区(2014GPT0011);国家自然科学基金青年项目(71303271)

向桢(1970—),男,四川通江人,工程师,硕士。研究方向为软件工程、信息技术应用。刘述木(1978—),男,四川德阳人,工程师,硕士。研究方向为计算机应用。

猜你喜欢

配置文件插件对象
神秘来电
提示用户配置文件错误 这样解决
自编插件完善App Inventor与乐高机器人通信
互不干涉混用Chromium Edge
忘记ESXi主机root密码怎么办
攻略对象的心思好难猜
基于jQUerY的自定义插件开发
基于熵的快速扫描法的FNEA初始对象的生成方法
打印机设置
区间对象族的可镇定性分析