(计算机科学与技术专业论文)基于插件体系结构的服务可视化生成部署工具的研究与实现.pdf_第1页
(计算机科学与技术专业论文)基于插件体系结构的服务可视化生成部署工具的研究与实现.pdf_第2页
(计算机科学与技术专业论文)基于插件体系结构的服务可视化生成部署工具的研究与实现.pdf_第3页
(计算机科学与技术专业论文)基于插件体系结构的服务可视化生成部署工具的研究与实现.pdf_第4页
(计算机科学与技术专业论文)基于插件体系结构的服务可视化生成部署工具的研究与实现.pdf_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

卜、 li1lililiilili,lilil刁llllilyililiil6liiil9ilililsiiiilll 何贡献均已在论文中作了明确的说明并表示了谢意。 本人签名: 时j l 童 日期:二受l q :l :呈 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期问论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 保密论文注释:本学位论文属于保密在一年解密后适用本授权书。非保密论 文注释:本学位论文不属于保密范围,适用本授权书。 本人签名: 导师签名: 日期:2 盟q j :2 日期:2 q l q j :生 北京邮电人学硕:t 学位论文 声明 务开发人员的操作。 本文研究基于j a v a 技术的标准企业服务总线的实现规范,分析 基于企业级服务总线与面向服务架构实现的服务执行平台中服务包 的生成、组装以及部署的流程,研究插件体系结构的设计思想及步骤, 实现基于插件体系结构的服务可视化生成部署工具。提出了工具的工 具的模式,即可以在工具上应用预留的扩展点来开发新的工具,提高 对己开发工具模块的复用率,并完成对系统服务包的可视化开发、组 装和部署以及系统服务工程的可视化创建、导入和管理。通过工具的 依赖关系图像树形示意图可以很直观的看到服务组装包中各服务包 间的各种依赖关系,通过工具界面组装生成各种服务包组装包。还可 以完成对服务单元包、组装包、部署包的各种配置以及服务包的部署 工作,也可以应用完成了代码补全功能的编辑器对服务包的各种文件 直接编辑,满足各种不同层次服务开发人员的需求。 全文的安排:第一章阐述了文章的应用背景以及课题的主要工 作0 ,第二章说明了本论文应用到的相关技术;第三章提出了基于插件 体系结构在服务执行平台基础上的服务可视化生成部署工具的设计 方案;第四章对服务可视化生成部署工具的实现做了详细介绍;第五 章在服务执行平台上运用服务可视化生成部署工具完成对一个典型 应用服务的开发,用来测试工具的可用性;第六章结束语对项目的进 一步认识进行了总结说明,并对下一步工作提出了展望。 关键词:标准企业级服务总线,服务生成,服务部署,插件体系 结构,可视化 北京邮电大学硕二b 学位论文摘要 t o o l su s i n gt h ev i s u a ls e r v i c ec r e a t i o na n dd e p l o y m e n tt o o lb a s e dp l u g i n a r c h i t e c t u r e b yu s e ri n t e r f a c e ,s e r v i c ed e v e l o p e r sc o u l du s et h et o o lt o c r e a t es e r v i c eu n i t ,s e r v i c ea s s e m b l ya n ds e r v i c ed e p l o y m e n tp a c k a g e s v e r yc o n v e n i e n t l y t h e yc o u l da l s oc r e a t ep r o j e c t s ,i m p o r tp r o j e c t sa n d m a n a g ep r o j e c t s ,u s i n gt h et 0 0 1 , t h ep a p e ri sc o n s i s t e do fs i xp a r t s t h ef i r s tp a r ti n t r o d u c e st h e c u r r e n td e v e l o p m e n to fp r o j e c ta n dt h em a j o rw o r ko ft h i s p a p e r t h e r e l a t e dt e c h n o l o g i e sa r ed i s c u s s e di nt h es e c o n dp a r t t h et h i r dp a r ti st h e t h ed e s i g no ft h ep l u g i nb a s e dv i s u a ls e r v i c ec r e a t i o na n dd e l p o y m e n t t 0 0 1 t h ef o u r t hp a r ti st h ei m p l e m e n t a t i o no ft h et 0 0 1 t h ef i f t hp a r ti s t e s t i n go ft h et 0 0 1 t h el a s tp a r td r a w sac o n c l u s i o no ft h i sp a p e r , a n d m a k e ss o m es u g g e s t i o n sf o rt h ef u t u r ew o r k k e yw o r d s :e s b ,s e r v i c ec r e a t i o n ,s e r v i c ed e p l o y m e n t ,p l u g i n a r c h i t e c t u r e ,v i s u a lt o o l 1 1 1 北京邮电大学硕 :学位论文a b s t r a c t i v 北京邮电大学硕:i 二学位论文 目录 目录 第一章绪论1 1 1 研究背景1 1 2 本文研究内容2 1 3 论文结构和主要内容2 第二章相关研究4 2 1 插件体系结构4 2 1 1 插件体系结构设计思想4 2 1 2 基于插件体系结构的软件设计步骤6 2 1 3 插件体系结构优点6 2 2 基于插件体系结构框架7 2 2 1s h a r p d e v e l o p 8 2 2 2j a v ap l u g - i nf r a m e w o r k 。ll 2 2 :;e c l i p s e 13 2 3 基于插件体系结构框架的选择1 6 2 4 本章小结l7 第三章服务可视化生成部署工具的设计1 8 3 1 服务可视化生成部署工具体系结构设计1 8 3 2 运行基础平台l9 3 3 服务可视化生成部署工具管理层2 0 3 4 核心控制层2 l 3 4 1 服务工程模块2 4 3 4 2 服务项目对象模型2 6 3 4 3 服务构建器。3 0 3 4 4 服务生命周期管理器3 8 3 5 本章小结4 l 第四章服务可视化生成部署工具的实现4 2 4 1 服务可视化生成部署工具框架搭建4 2 4 1 1 创建项目4 2 4 1 2 编码说明。4 3 4 2 服务可视化生成部署工具管理层实现4 4 4 3 核心控制层实现4 5 4 3 1 服务项目对象模型。4 5 北京邮电大学硕士学位论文目录 4 3 2 服务工程模块实现5 0 4 - 3 3 服务构建器实现5 5 4 3 4 服务生命周期管理器5 9 4 4 本章小结6 0 第五章系统服务生成部署典型流程6 l 5 1c r e a t e c o n f e r e n e e 流程服务工程6 1 5 2 结果验证一6 6 5 3 本章小结6 8 第六章总结与展望6 9 6 1 工作总结6 9 6 2 下一步工作7 0 参考文献7 l 术语缩略语。7 3 至定谢7 4 作者攻读学位期间发表的学术论文7 5 第一章绪论 服务总线( e s b ) 【2 】。e s b 是传统中间件技术与x m l 、w e b 服务等技术相互结合的 产物,是一种在松散耦合的服务和应用之间标准的集成方式。e s b 提供了一种开 放的、基于标准的消息机制,通过简单的标准适配器和接口,来完成粗粒度应用 服务和其他组件之间的互操作,能够满足大型异构企业环境的集成需求。j a v a 业务集成( j b i ,j a v ab u s i n e s si n t e g r a t i o n ) 3 1 规范定义了一个e s b ,方便开发商能 够用j a v a 语言实现面向服务的架构。 支撑本论文的项目主要是国家9 7 3 项目“普适服务的基础理论、模型和关键 技术”,本课题组设计并实现了一个基于j b i 规范的服务执行平台,在这个系统 上,可以很方便的开发任何服务引擎,因为这是一个可插拔式的系统,只要实现 了系统定义好的插拔接口,就可以不需要处理其他网络环境、操作系统甚至多线 程并发执行相关的内容,只需要考虑服务本身的逻辑即可。 在基于面向服务架构的服务执行平台上做开发,服务开发人员只需要把精力 完全集中到服务逻辑的开发上来,大大提高了开发的效率,但同时又出现了另一 个问题,就是本系统没有一个可视化的界面,开发人员只能通过命令行的方式来 处理开发过程中的各种任务,如服务单元包、服务组装包、服务部署包的生成部 署,服务工程的创建、导入、管理等。这些任务都需要开发人员手动完成,在提 倡所见即所得技术的现在这种方式无疑又大大降低了开发人员的效率,而且在手 动创建配置的时候,很容易出现很多拼写等一类的细小但不容易注意的错误,而 这些错误又往往很难被发现,因此开发一个可视化的工具就显得特别重要了。 j a v a 中开发图形化工具传统的方法是直接使用抽象窗口工具包 a w t ( a b s t r a c tw i n d o w i n gt o o l k i t ) 【4 】或者s w i n g t 副,这种方法在处理图形化开发的 细节上( 图形的创建删除、放大缩小、拖放和撤销等) 一般比较复杂;图形化 设计和后台模型的对应关系都需要开发者自己定义,没有统一的标准,这样很难 进行维护;a w t 或者s w i n g 开发的图形界面跟w i n d o w s 界面的风格不一致,让 北京邮电大学硕二i :学位论文 第一章绪论 一直使用w i n d o w s 的用户很难接受。 类似于s o a 面向服务架构的一种软件体系结构插件体系结榭6 1 ,是一 种遵循统一的预定义接口规范编写出来的程序,应用程序在运行时通过接口规范 对插件进行调用,以扩展应用程序的功能。通过插件体系结构,也可以很方便的 开发可插拔式的工具。插件体系结构的基础平台能够提供界面基础框架来统一界 面显示风格,减轻开发者负担;由于借鉴了硬件总线的结构,各个插件之间是相 互独立的,所以结构非常清晰,也更容易理解;因为插件与主程序之间通过接口 联系,就像硬件插卡一样,可以被随时删除,插入和修改,所以结构很灵活,容 易修改方便软件的升级和维护,因为插件本身就是由一系列小的功能结构组成, 而且通过接口向外部提供自己的服务,所以复用粒度更大,移植也更加方便。 1 2 本文研究内容 基于以上项目的背景,本文的研究工作是在服务执行平台基础上,对插件体 系结构进行研究,设计并开发一种基于插件体系结构的服务可视化生成部署工 具。以达到支持系统项目服务开发人员对系统服务包的可视化开发、组装、部署, 对系统服务工程的可视化创建、导入和管理。应用所见即所得的可视化技术将对 系统服务包开发、组装和部署以及对系统服务工程创建、导入和管理繁琐的命令 行操作变为可视化操作,大大提高服务项目开发部署管理的效率。 1 3 论文结构和主要内容 本文首先研究了插件体系结构以及基于插件体系结构实现的开源框架;然后 重点讨论了在服务执行平台基础上的服务可视化生成部署工具的设计;接下来对 服务可视化生成部署工具的实现进行了详细的介绍;接着通过一个典型示例验证 了工具的可用性;最后总结了本文的研究成果,并提出了下一步研究的工作。论 文共包括六章,各章节的主要内容如下: 绪论( 第一章) 阐述了文章的研究项目背景以及本文的主要研究内容,最后给出了本论文的 组织结构。 相关研究( 第二章) 本章将对服务可视化生成部署工具进行研究,并分析了插件体系结构的设计 思想、设计步骤及其优点,最后分析研究了基于插件体系结构实现的 s h a r p d e v e l o p l t l 、j a v ap l u g i nf r a m e w o r k 8 】和e c l i p s e 9 】三种开源框架,并在分析透 彻这三种框架的基础上,结合服务执行平台本身的特点以及服务可视化生成部署 北京邮电大学硕+ 学位论文 第一章绪论 工具的需求选定了一个最适合用于在服务执行平台基础上的服务可视化生成部 署工具开发的插件体系结构框架。 服务可视化生成部署工具的设计( 第三章) 本章在详细研究插件体系结构以及服务执行平台的服务开发流程的基础上, 提出了服务可视化生成部署工具的设计方案,对服务可视化生成部署工具的体系 结构框架进行了详细介绍,并从服务可视化生成部署工具的运行平台、可视化工 具管理层、核心控制层以及人机交互界面进行了全面的阐述。 服务可视化生成部署工具的实现( 第四章) 本章对服务可视化生成部署工具的实现进行了详细的介绍,由于服务可视化 生成部署工具是通过界面与用户进行交互的,所以在每层的实现中穿插着介绍了 人机交互界面。本章首先介绍了整个服务可视化生成部署工具架构的搭建和服务 可视化生成部署工具管理层的实现,接着重点介绍了核心控制层,并分别介绍了 这一层中的服务项目对象模型、服务工程模块、服务构建器以及服务生命周期管 理器的实现过程。 系统服务生成部署典型流程( 第五章) 本章主要介绍了服务执行平台的一个创建会议的典型应用流程,并通过应用 工具创建一个完整的服务工程验证服务可视化生成部署工具的可用性。 总结与展望( 第六章) 本章对论文工作进行了总结说明,对系统存在的问题进行了分析,并对下一 步工作提出了展望。 北京邮电大学硕十学位论文 第二章相关研究 第二章相关研究 弟一早卞日大研九 服务执行平台是基于j b i 规范的企业级服务总线开发的,是一个可插拔式的 系统。在系统中可以非常方便的开发自己的服务引擎,并集成到原有的系统中去, 整个开发过程比较简洁,只需要实现系统的接口处理好与系统的交互,接下来开 发人员就可以集中精力开发核心的业务逻辑。基于这样一种思路,所以也希望服 务可视化生成部署工具能像在服务执行平台中实现服务引擎一样很方便的进行 插拔式的工具开发,而且不影响原有的系统。并在有更多需求时能方便的对服务 可视化生成部署工具进行扩展,所以本章将对插件体系结构进行深入的研究,分 析几种开源的实现架构,选择最适合本系统的开发框架。 2 1 插件体系结构 插件体系结构【6 j 就是一种可插拔式的结构,与本文的服务执行平台中j b i 规 范的企业级服务总线很类似。插件是一种遵循统一的预定义接口规范编写出来的 程序,应用程序在运行时通过接口规范对插件进行调用,以扩展应用程序的功能。 插件最典型的例子是m i c r o s o f t 的a c t i v e x m 】控件和c o m t 】( c o m p o n e n to b j e c t m o d e l ,部件对象模型) 实际上a c t i v e x 控件不过是一个更高继承层次的c o m 而已此外还有p h o t o s h o p 的滤镜( f i l t e r ) 也是一种比较常见的插件。 插件体系结构的开发方法,是一种程序设计技术,是一种面向组件的软件开 发方法。在插件结构的应用系统中,程序并不是单一的执行文件,而是由主程序 和若干外部模块组成。这些模块是按照一定的规则编写,可以通过配置文件灵活 地加入到系统中,也可以在程序运行时动态地加入到系统中。由于可以灵活机动 地增加减少替换这些模块,通常把插入到系统中的模块称为插件,基于插件的系 统称为插件系统,而把这种开发方法称为插件驱动开发方法。在插件程序中,插 件管理程序可以通过一定的规则和特定的接口与插件通信以及调用插件实现的 功能。与一般的函数调用不同,插件管理程序与插件是相对独立的,插件管理程 序可以脱离具体的插件模块而独立运行,插件也是实现特定功能的相对独立模 块,插件管理程序可以在程序运行的过程中动态调用多个不同插件所提供的服 务。 2 1 1 插件体系结构设计思想 插件体系结构是一种平台+ 插件的结构,它将一个待开发的目标软件分为两 北京邮电大学硕:i 二学位论文第二章相关研究 部分,一部分为程序的主体或主框架,可定义为平台,另一部分为功能扩展或补 充模块,可定义为插件。 平台所完成的功能应为一个软件系统的核心和基础,这些基本功能即可为用 户使用,也可为插件使用,就是又可以把平台基本功能分为两个部分,内核功能 和插件处理功能。平台的内核功能是整个软件的重要功能,一个软件的大部分功 能因由内核功能完成。平台的插件处理功能用于扩展平台和管理插件,为插件操 纵平台和与插件通信提供标准平台扩展接口。插件所完成的功能是对平台功能的 扩展与补充,一般插件完成系列化功能,例如:p h o t o s h o p 的滤镜插件完成 对图形的特殊效果处理,这些功能都有一些共性,可以进行集中管理,并且是可 以定义出标准的插件接口。 为了实现平台+ 插件结构的软件设计需要定义两个标准接口,一个为由平台 所实现的平台扩展接口,一个为插件所实现的插件接口。这里需要说明的是:平 台扩展接口完全由平台实现,插件只是调用和使用,插件接口完全由插件实现, 平台也只是调用和使用。平台扩展接口实现插件向平台方向的单向通信,插件通 过平台扩展接口可获取主框架的各种资源和数据,包括各种系统句柄,程序内部 数据以及内存分配等。插件接口为平台向插件方向的单向通信,平台通过插件接 口调用插件所实现的功能,读取插件处理数据等。 平台插件处理功能包括插件注册、管理和调用,以及平台扩展接口的功能实 现。插件注册为按照某种机制首先在系统中搜索已安装插件,之后将搜索到的插 件注册到平台上,并在平台上生成相应的调用机制,这包括菜单选项、工具栏、 内部调用等。插件管理完成插件与平台的协调,为各插件在平台上生成管理信息 以及进行插件的状态跟踪。插件调用为调用各插件所实现的功能。平台插件处理 功能实现的另一部分功能为平台扩展接口的具体实现。 。 主程序与插件只能通过制订好的接口进行通信。软件开发中,接口只是定义 功能并规定调用功能的形式,而不包含功能的实现。接口实质上是软件模块的调 用规范。一般来说由主程序的开发者来制订接口,如果希望其他的开发人员能开 发相关的插件,只要公开相关接口即可。接口功能一般由插件方实现。因为插件 的实现也要调用主程序的功能,所以接口功能也可能由主程序来实现。也就是说, 主程序与插件的信息流可能是双向的。 接口的调用规范与功能实现互相分离有一个很大的优点t 尽管不同的插件开 发者对同一个接口的具体实现不同,但是在主程序中对这些插件的调用方式是一 样的。如果有主程序实现的接口,在不同的插件中也可以用相同的使用方式调用 主程序的功能。这极大的提高了应用程序的灵活性。 主程序中,插件管理部分用于管理插件的安装和删除,并将所有安装插件的 北京邮电大学硕:l 学位论文 第二章相关研究 信息保存到适合的地方,例如保存到注册表或配置文件中。主程序启动时,根据 插件的配置信息加载插件模块,然后获得插件的输出函数或输出类的指针并加以 保存,如果需要的话,可以向主程序增加界面接口元素,如菜单、工具条按钮等。 在主程序中当点击与插件相关联的接口元素时,就会触发插件调用函数,在插件 调用函数中使用主函数中所保存的插件信息调用插件中实现的功能。在调用插件 输出函数时也可以把主程序中实现的接口传递给插件方。 2 1 2 基于插件体系结构的软件设计步骤 基于插件体系结构的软件设计步骤包括: 1 ) 根据待开发软件的实际情况,考虑选用哪种形式的插件框架,巨内核还 是微内核; 2 ) 根据确定的插件框架类型,考虑已有插件框架满足软件开发需求的程度, 来决定插件框架是选用已有的成熟框架,还是自主开发: 3 ) 对软件的功能按插件的方式进行划分,并考虑插件间的通讯及扩展关系; 4 ) 开发各插件; 5 ) 逐步地组装各插件到插件框架上; 6 ) 完成插件框架与所有插件的联调; 7 ) 根据用户和市场的需求,修改或升级对应的插件; 8 ) 如果有必要,修改或升级对应的插件框架; 9 ) 组装更新后的插件插件框架,并完成联调; l o ) 实现7 - 9 步骤的良性循环,整个软件系统不断向前进化。 2 1 3 插件体系结构优点 插件最吸引入的地方当然就是其所实现“运行时( r u n t i m e ) 一功能扩展。这 意味着工具开发者可以通过公布插件的预定义接口规范,从而允许第三方的工具 开发者通过开发插件对软件的功能进行扩展,而无需对整个程序代码进行重新编 译。运行时是相对于编译时而言的。一般来说,工具开发者对软件功能更新时, 是在源代码级别进行更新,然后对整个程序进行重新编译,进而发布应用程序的 新版本,这就是编译时的软件更新。 与传统的软件体系结构相比,插件体系结构的程序中,插件管理程序和插件 程序之间的划分是非常清楚的,这使得插件管理程序的结构简单,只负责处理与 插件的通信与调用插件的功能,而与具体功能相关的数据结构算法等则由插件模 块来完成,而各个插件之间几乎没有什么联系和干扰。把各个插件之白j 的联系和 北京邮电大学硕士学位论文第二章相关研究 干扰降到最低,是在划分模块组织软件过程中应该尽量满足的要求,这样能够降 低插件模块之间的耦合度,减少插件之间的依赖。采用这种方法,在完成软件的 设计后,插件管理程序和各个插件模块可以完全独立开发,这有利于在大规模软 件开发过程中,使开发能够并行进行,提高开发的效率和质量。并且在开发和调 试过程中,当部分插件模块发生问题的时候,由于各个插件模块之间相对独立, 并不会影响到其他模块,有利于软件测试工作的开展和进行,便于在测试和调试 的过程中发现问题然后解决问题。另外,对部分插件的修改,不会影响到其他插 件,避免了因为改正错误而引出新的问题的情况。 插件体系结构的开发方法,给程序开发人员带来了灵活性,在主要模块完成 后就可以正式发行,不必等到整个开发过程的全部结束。在软件发布以后还可以 添加新的插件和完善已有的功能。这样,大大缩短了软件的开发周期,这样可以 节省出传统的软件体系结构和开发方法开发出的软件在维护阶段所需要投入的 人力,物力和财力,集中力量与资源到新产品的开发当中。 同时插件甚至可以交给第三方公司开发,提高行业内的合作能力,达到优势 互补的目的。插件开发完成后,也可能被其他的应用程序用到,提高了软件的可 重用性。 插件体系结构设计的优点可以总结为以下四点: 1 ) 实现真正意义上的软件组件的“即插即用; 2 ) 在二进制级上集成软件,减少大量的软件重新编译与发布麻烦与时间; 3 ) 能够很好实现软件模块的分工开发,能够大量吸取他人的优长; 4 ) 可较好实现代码隐藏,保护知识产权。 因此,在现代软件业向规模化产业化发展的时候,插件程序体系结构和开发 方法具有巨大的优势和潜力。 2 2 基于插件体系结构框架 通过上一小节对插件体系结构设计思想和设计步骤的详细介绍,以及对插件 体系结构的分析,插件体系结构为服务执行平台的服务可视化生成部署工具的开 发提供了很好的参考,接下来将重点分析研究几种开源的基于插件体系结构的框 架。之所以选择开源的框架,是因为开源的插件框架无须支付任何费用,开源的 插件框架提供了源代码,方便了用户在源代码级进行扩展,而且在质量上,很多 开源的插件框架技术水平并不比商用的差,很多甚至高出很多,且成功的应用案 例也很多。所以本节将重点几种开源的框架,并通过对这些框架的详细分析来选 定本章将使用的框架。 北京邮电大学硕士学位论文第二二章相关研究 2 2 1s h a r p d e v e l o p s h a r p d e v e l o p 7 j 是一个开源的n e ti d e ,可采用c 撑或v b n e t 等编程语言进 行n e t 开发,它采用了微内核的插件架构。它虽然不是一个通用的插件框架,但 从s h a r p d e v e l o p 的设计原理及其具有的强大功能和可扩展性上,即可证明其插 件框架是十分成熟的。在其开发论坛上,可了解到,在2 0 0 6 年2 1 版本的 s h a r p d e v e l o p 推出时就附带了一个剥离出来的通用的插件框架s h a r p d e v e l o pf o r a p p l i c a t i o n s ( s d a ) ,而且从那以后,就有一些项目正在以及准备采用s d a 来作 为底层架构。像任何爱好者开发的工具一样,s h a r p d e v e l o p 经历了很多版本的更 替,最早是m i k ek r u g e r 一个人开发的,于2 0 0 0 年9 月诞生,当时m i c r o s o f t 才 推出来一个n e t 的a l p h a 版几个月,而2 0 0 2 年的上半年才推出来正式的n e t 1 o 。 2 2 1 1 基本概念 1 ) a d d l n t r e e 插件树 s h a r p d e v e l o p 中的插件被组织成一棵插件树结构,树的结构是通过 e x t e n s i o n ( 扩展点) 中定义的p a t h ( 路径) 来定义的,类似一个文件系统的目录结 构。系统中的每一个插件都在配置文件中指定了e x t e n s i o n ,通过e x t e n s i o n 中指 定的p a t h 挂到这棵插件树上。在系统中可以通过a d d t r e e s i n g l e t o n 对象来访问 各个插件,以实现插件之间的互动,下图是插件树的示意图: 图2 1s h a r p d e v e l o p 插件树 2 ) a d d i n 插件 在s h a r p d e v e l o p 中,插件是包含多个功能模块的集合。在文件的表现形式 上是一个a d d i n 配置文件,在系统中对应a d d l n 类。 北京邮电大学硕士学位论文第二章相关研究 3 ) e x t e n s i o n 扩展点 s h a r p d e v e l o p 中的每一个插件都会被挂到插件树中,而具体挂接到这个插件 树的哪个位置,则是由插件的e x t e n s i o n 对象中的p a t h 指定的。在a d d i n 配置 文件中,对应于 。例如下面这个功能模块的配置: 指定了扩展点路径为s h a r p d e v e l o p w o r k b e n c h a m b i e n c e s ,也就是在插件树 中的位置。 4 ) c o d o n 在s h a r p d e v e l o p 三个作者写的书的中译版中被翻译为代码子。c o d o n 描 述一个功能模块,一个功能模块对应一个实现了具体功能的c o m m a n d 类。为 了方便访问各个插件中的功模块,c o d o n 给各种功能定义了基本的属性,分别 是i d ( 功能模块的标识) ,n a m e ( 功能模块的类型,这个n a m e 是a d d i n 文件 定义中c o d o n 的x m l 结点的名称,i d 才是真正的名称) ,其中n a m e 可能是c l a s s ( 类) 、m e n u l t e m ( 菜单项) 、p a d ( 面板) 等。根据具体的功能模块,可以继承 c o d o n 定义其他的一些属性,s h a r p d e v e l o p 中就定义了c l a s s c o d o n 、m e n u c o d o n 、 p a d c o d o n 等等。在a d d i n 定义文件中,c o d o n 对应于 标签下的内容。 例如下面这个定义。 建立插件树,并初始化树。s h a r p d e v e l o p 是以插件文件中e x t e n s i o n 节点 的p a t h 路径来识别每个插件树的节点。在这一步中,s h a r p d e v e l o p 会加载所有 的插件文件,并根据节点路径生成完整的插件树,注意在生成插件树的过程中代 码子运行时对象是不会建立的,仅仅是建立了代码子对象,运行时对象是在用户 组合代码子功能的时候才会创建。关于这部分,可参见a d d l n t r e e s i n g l e t o n 类里 面的代码实现。 3 ) 在建立好插件树之后,就是应用程序来利用代码子组合应用程序的时候。 一般来说插件系统都是通过服务( s e r v i c e ) 来管理并组合这些代码子的。要建立代 码子对象首先要获取给定路径下面的节点,这个步骤是通过 a d d l n t r e e s i n g l e t o n a d d l n t r e e g e t t r e e n o d e 这个方法来实现的,它返回一个 i a d d l n t r e e n o d e 对象,显然这不是想要的,要想利用代码子运行时对象,必须通 过i a d d l n t r e e n o d e b u i l d l t e m 或i a d d l n t r e e n o d e b u i l d l t e m s 方法来实现,其中前 一个方法只会建立一个代码子运行时对象并返回一个o b j e c t 对象,而后一个方 法会建立改路径下面的所有代码子对象并返回一个a r r a y l i s t 的数组。 在第3 步中已经看到了,在建立好插件系统后,就可以得到任意节点下面所 有的代码子运行时对象。 2 2 1 3 插件树优点 s h a r p d e v e l o p 可以通过其他插件扩展己有插件。但这样做面临的主要问题 北京邮电人学硕一:学位论文第二章相关研究 是:其他插件执行行为的时候必须通知己有的插件,因为要扩展另一个插件,就 必须扩展另一个插件的“行为”,它们之间必须保持某种类型的通信。这是插件 结构需要解决的主要问题。插件树结构的这个优点为软件的设计和开发提供了级 别非常高的灵活性。 包含可执行代码的程序集( a s s e m b l y ) 文件不必保存在同一个目录中。开发人 员可以将它们存储在任何需要和方便的位置,插件管理系统都能够将插件文件加 载。这就使得插件的添加、删除和部署都非常容易,只需要将包含x m l 定义和 所需程序集的插件文件夹复制到s h a r p d e v e l o p 的a d d l n s 文件夹就可以了。 使用插件树结构,插件不必实现自己的插件结构,因为所有插件都基于一个 系统一插件树。向系统中添加插件,只需要通过插件树这个接口,就可以定制 任何的功能。 2 2 2j a v ap l u g i nf r a m e w o r k j a v ap l u g - i nf r a m e w o r k s 】( j a v a 插件框架j p f ) ,是j a v a 下的一个通用的开 源插件框架。项目注册时间是2 0 0 4 0 5 2 51 2 :2 3 ,项目活跃程序高达9 6 7 6 。它借 鉴了e c l i p s e3 0 p j 以前的版本的基于扩展点的插件框架的机制。目前已经有多个 开源和商业项目以它做为插件体系结构框架,具体如下所示; 1 ) e m e r s i o np l a t f o r m ( h t t p :e m e r s i o n s o u r c e f o r g e n e t ) 2 ) o p e n q r m ( h t t p :w w w o p e n q r m o r g ) 3 ) s a l o m e - t m f ( h t t p s :w i k i o b j e c t w e b o r g s a l o m e - t m f ) 4 ) j r u b i k ( h t t p :s o u r c e f o r g e n e t p r o j e c t s r u b i k ) 5 ) s a m o o h a ( h t t p :w w w s a m o o h a c o r n ) 6 ) m e d l m a g e s u i t e ( h t t p :s o u r c e f o r g e n e t p r o j e c t s m e d i m a g e s u i t e ) 2 2 2 1 框架结构 j p f 的系统框架结构如下图所示: 北京邮电大学硕学位论文第二章相关研究 图2 - 2j p f 框架结构 从图中可以看出j p f 分为三个主要部份: 1 ) p l u g _ i nr e g i s t r y :插件注册表,用来保存所有已经发现的插件元数据; 2 ) p l u g _ i nr e s o l v e r ( s t a n d a r dp a t hr e s o l v e r ) z 路径分析器,用来找到和发现 资源的物理路径; 3 ) p l u g _ i nm a n a g e r :插件管理器,j p f 用来加载和运行时激活插件; 2 2 2 2 主要特点 j p f 插件体系结构框架主要有以下八个特点: 1 ) 开放的框架 框架的a p i 设计为一套j a v a 接口和抽象类开发者可以根据自己的需要实 现特别的框架,也可选择j p f 提供的缺省的标准实现。 2 ) 清晰、一致的a p i 设计 j p f 的a p i 经过了精心设计,以方便开发者快速上手。 3 ) 内置的完整性检查 j p f 能对注册了的插件在j p f 启动时进行一个详细的完整性检查,并能就检 查结果给出一个详实的报告。 4 ) 插件是自描述的 插件的开发者能够将插件的内部注释或参考资料等相关文档包含在插件的 m a n i f e s t ( 宣告文件) 中。 5 ) 插件的依赖检查 插件的开发者能够宣告插件之间的依赖关系,依赖关系可根据所依赖的插件 的i d 和版本号范围来进行指定。 6 ) 强类型的扩展参数 插件的m a n i f e s t 中还包含了描述强类型的扩展参数的机制,这些信息被j p f 用来查找和加载扩展插件。 7 ) 插件的懒激活 北京邮电大学硕士学位论文 第二章相关研究 插件只有在确实需要它们的时候才装入内存中。 8 ) 随时能进行插件的注册反注册和激活反激活 插件能在应用程序执行的时候就进行注册和反注册,而且注册后的插件能够 随时激活和反激活,以极大地减少对系统资源的占用。 2 2 3e c l i p s e e c l i p s e 9 】也是一个典型的插件系统,e c l i p s e3 0 以前的版本提供了一个自己 的基于扩展点进行扩展的插件框架,而从3 o 起其插件体系架构就重构为基于 o s g i 1 2 规范来实现,这个插件框架叫做e q u i n o x 1 3 】,e q u i n o x 基于o s g i ,而且 保留了e c l i p s e 以前插件机制中的扩展点的优点。 o s g i ( o p e ns e r v i c eg a t e w a yi n i t i a t i v e ) i l2 j 规范于19 9 9 年开始制定,目前版 本是r 4 1 ,o s g i 之前主要用于网络设备的服务架构体系,那是一个典型的松耦 合的服务架构体系,在被e c l i p s e 引入作为其插件体系架构后o s g i 也被业界所 关注,1 t 4 1 更是吸取了e c l i p s e 的很多优点修订而成。 e q u i n o x 是e c l i p s e 中的项目之一,e q u i n o x 是作为o s g ir 4r i 而知名的, 同时由于e q u i n o x 有e c l i p s ei d e 这么个成功案例,反应出了e q u i n o x 作为o s g i 框架的优势。e q u i n o x 目前是随着e c l i p s e 版本而发布的,同时,它也提供独立的 下载,在独立的下载页面中可以下载到e q u i n o x 对于o s g ir 4 的所有实现以及 、e q u i n o x 扩展o s g ir 4 而提供的b u n d l e 。e q u i n o x 开发小组由i b m 的j e f f 领衔, 开发状态非常的活跃。 2 2 3 1 总体结构 e c l i p s e 平台是一个开放式插件体系结构,它提供了一些自身的扩展点来给 其他插件做扩展。并且e c l i p s e 平台负责管理这些插件的运行,这样开发者可以 只专注开发自己的插件,而不用去关心如何在运行时和其他插件进行配合。 e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论