版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、硕士学位论文(工程硕士)基于构件的可插拔服务模型框架的设计与实现THE DESIGN AND IMPLEMENTATION OFPLUGGABLE SERVICE MODEL FRAMEWORKBASED ON COMPONENT王伟 2008年6 月国内图书分类号:TP311国际图书分类号:621.3工程硕士学位论文基于构件的可插拔服务模型框架的设计与实现硕士研究生 :王伟导师 :陈惠鹏副教授 副导师 :李博高级工程师申请学位 :工程硕士学科、专业 :软件工程所在单位 :软件学院答辩日期 :2008年6月授予学位单位 :哈尔滨工业大学Classified Index:TP311U.D.C.:
2、 621.3Dissertation for the Masters Degree in EngineeringTHE DESIGN AND IMPLEMENTATION OF PLUGGABLE SERVICE MODELFRAMEWORK BASED ON COMPONENTCandidate: Supervisor: Associate Supervisor: Academic Degree Applied for: Speciality:Affiliation : Date of Defence:Degree-Conferring-Institution: Wang WeiAssoci
3、ate Prof. Chen HuipengSenior Engineer Li BoMaster of EngineeringSoftware EngineeringSchool of SoftwareJune, 2008 Harbin Institute of Technology- -I 摘 要近年来,随着软件系统规模的逐渐增长,软件系统的复杂性急剧上升。究其原因,很大一部分是由于客户需求、市场环境、法律政策、技术平台等的频繁变化。而传统的对象复用技术、组件复用技术以其固有的静态性已无法快速的适应需求的频繁变化。为了能够最大化的降低变化带来的复杂性,需要一种不同的开发方法及其基础设施来适
4、应这种多变的环境。本论文依托多功能打印机项目,提出一种基于构件的可插拔服务模型,设计并实现了基于此模型的一个框架系统。在模型方面,采用分层的思想将整个模型划分为执行环境层、构件层、生命周期管理层以及服务管理层等四个层次,并将构件层作为四个层次中的核心层。在构件层部分,提出一种构件类型即Block ,它由能够为用户提供功能的一系列对象以及资源组成,并被视为一种最小的开发单元和部署单元,Block 成为整个模型的核心概念。在生命周期管理层部分,定义Block 4个生命状态,并详细阐述了Block 生命周期过程中状态之间的变迁情况以及由变迁带来的特定行为的执行。在服务管理层部分,从动态依赖方面出发,
5、提出了服务以及服务周边环境的概念,并将其依附于Block 概念实体。在运行时采用服务注册、获取、撤销的形式实现Block 之间的动态交互。在框架方面,依据模型对各个层实体概念的定义、实体依赖的表述,实体内部特征及结构进行了详细的设计。整个框架以Block 构件作为基础,对Block 的加载机制、Block 的状态、Block 的生命周期以及由Block 发布的一系列服务进行了重点设计。该论文除了提出一种不同的模型以及框架之外,还对以此模型框架为基础的开发方式和传统式开发方式在构件化、并行化、动态化、结构扩展性等方面进行了的比较。通过将传统的粗粒度的构件进行粒度的细化;将传统的同一个工程目录的依
6、赖进行弱化,带来了构件并行化程度的显著提高。通过采用内核加外围服务的方式,一方面消除了传统动态性对配置文件的依赖,另一方面减弱了系统中各个构件之间的耦合,使系统具有很强的扩展性,便于系统的稳定演化。关键词 构件;服务;可插拔;构件化;动态性- - II AbstractIn recent years, with the increase in the scale of software systems, their complexity also climbs. The reason is that traditional technique of reusing objects and co
7、mponents as well as its inherent nature of being static can not adapt responsively to the frequent changes in customer requirements, market environments, laws and regulations and technical platforms etc. In order to minimize the complexity brought about by the changes, a new development method and i
8、ts infrastructure are needed in order to adapt to the changing environment.This article puts forward a pluggable service model, designs and implements a framework system based on components in a multi-functional printer project. In the model aspect, the whole model is divided into 4 layers: environm
9、ent layer, component layer, lifecycle management layer and service management layer. The component layer is the core layer in all layers. In component layer aspect, this article puts forward a kind of component type Block. It is composed of a series of objects and resources that are able to provide
10、functions to users, and it is treaded a sort of minimum developing and deploying unit, and it becomes the core concept of the whole model. In lifecycle management layer aspect, this article defines the 4 lifecycle states of component, and provides a detailed description on the transition between sta
11、tes of component during their lifecycle process as well as the execution of the specific behavior caused by transitions. In service management layer aspect, this article puts forward the service and service context concept based on dynamic dependency, and relates them to the Block concept. This arti
12、cle adopts the mode of service registration, service acquirement, and service unregistration to implement the dynamic interaction between Blocks. In the framework aspect, this article provides a detailed design on concept definitions of entities in each layer, descriptions of dependency between enti
13、ties, internal characteristics and structure of entities according to the model. The whole framework is based on Block component and focus is given to the design of a series of services including the loading mechanism, status, lifecycle and publication of Blocks.Besides presenting a different model
14、and a framework, this article also- -III describes a comparison between the different development method and the traditional development method in component ability, parallelization, dynamical and expansibility of structure. Through refining traditional coarse-grained modules moderately, and weakeni
15、ng the dependency of the traditional single project directory, the degree of parallel in components has a notable improvement. Through using the mode of kernel plus peripheral service, on the one hand, it eliminates the dependency on configuration files that traditional development method; on the ot
16、her hand, it weakens the coupling among components in order that system can has a strong expansibility and a steady evolvement.Keywords component, service, pluggable, modularization, dynamical- -IV 目录摘 要. I Abstract .II第1章 绪论. 11.1 课题研究的背景及来源. 11.2 课题研究的目的和意义. 11.3 课题的国内外研究现状. 31.3.1 插件技术概述. 31.3.2
17、类加载委托模型以及空间可见性. 31.3.3 国外研究现状. 41.3.4 国内研究现状. 51.4 课题研究内容及论文结构. 61.4.1 课题研究内容. 61.4.2 论文结构. 7第2章 基于构件的可插拔服务模型. 82.1 系统需求. 82.2 四层模型. 92.2.1 静态结构. 92.2.2 动态结构.102.3 各个层实施的难点.112.4 本章小结.12第3章 可插拔服务模型框架的设计与实现.133.1 构件层的设计与实现.133.1.1 构件的定义.133.1.2 Block的组成以及动态结构.133.1.3 Block的加载架构.183.1.4 Block的加载流程.203
18、.1.5 Block加载类流程的实现.223.2 生命周期管理层的设计与实现.233.2.1 Block的状态以及状态转换.23- -V 3.2.2 Block生命周期的控制.263.3 服务管理层的设计与实现.293.3.1 静态依赖和动态依赖.293.3.2 服务管理层中的基本概念.303.3.3 服务的控制.323.4 对传统方式的改进.383.5 本章小结.40第4章 框架的测试以及应用.414.1 框架的测试.414.1.1 功能测试.414.1.2 并发测试.444.2 框架的应用.454.2.1 应用背景.454.2.2 Flash显示功能的开发.464.3 本章小结.49结 论
19、.50参考文献.52哈尔滨工业大学硕士学位论文原创性声明.55哈尔滨工业大学硕士学位论文使用授权书.55致 谢.56个人简历.57- - 1第1章 绪论1.1 课题研究的背景及来源随着IT 信息技术的发展,企业、政府自动化办公的步伐越来越快。报表的打印、传真的收发、文件的扫描与复印等是自动化办公套件中不可或缺的一部分。而在现在的自动化产品中,集以上特点于一身的MFP (多功能打印机)在自动化办公进程中扮演了一个重要的角色1。为了尽早的在自动化办公这一领域占领先机,生产MFP (多功能打印机)的各个厂商如三星、惠普用尽各种方法,希望能够缩短产品投放到市场的周期,从而抢先占领市场1。在缩短产品周期
20、的策略中,很大一部分是要缩短产品的生产周期,包括产品的研发、产品的测试、产品的安装以及产品的交付等。而在产品生产周期的这四个阶段中,尤以产品的研发对产品生产周期长短的影响最为重大2。在产品的研发过程中,需要应对市场需求的频繁变化,或许需要添加一些新的功能,或许需要删除一些旧有的功能等。 而传统方式由于其固有的缺点对变化反映相对迟钝,对并行性、扩展性能力相对较弱,因此需要一种能够快速应对需求变化的、稳固的、可靠的、灵活的基础设施。1.2 课题研究的目的和意义本小节从以下三个方面来阐述传统方式的弊端。(1 构件化和并行性 所谓构件化就是单个构件能够被独立的修改、维护的系统属性。目标是能够使系统的一
21、个部分的改变不会影响其它部分,使其产生不被期望的行为。构件化主要分为两种类型:逻辑上的构件化以及物理上的构件化。逻辑上的构件化是指在系统的开发阶段,对系统进行的有效的分解和结构化;物理上的构件化是指在系统开发后进行部署和维护时的独立单元3。传统方式下,在物理上的划分大多是根据空间位置进行的超大粒度的划分,并将划分出来的构件根据架构原则分布到不同的空间位置上。比如对于企业系统,将系统分为Web Archive Module以及Enterprise Archive Module。前者分布到Web 服务器端,后者分布到Application 服务器端。这些大粒度- - 2 的构件通常牵涉到多个开发人
22、员,导致多个开发人员之间的耦合关系过于紧密。紧耦合关系容易引发一系列不必要的涟漪效应,容易对项目产生一定的负面作用4。另一方面,粒度过大的构件也不容易进行管理,由于构件中包含很多相对松散而又略显杂乱的方面和逻辑,模糊了构件本应有的、相对单纯的逻辑职责,可维护性大大降低。再者,传统方式下,不同构件的开发是在同一个工程下,所不同是开发人员在不同的包中工作,尽管他们在包级别具有一定的并行性,但在工程级别仍耦合在一起。更重要的是,大粒度构件由于其职责的混杂,其并行开发的程度相对较弱,没有挖掘出其潜在的并行能力。(2 动态性 所谓动态性就是一种在系统运行时刻,在不影响其他功能正常状态的情况下,随时地更新
23、、添加、删除功能的特性5,6。在传统的方式下,也是可以达到动态性即动态的扩充、动态的修改、动态的改变系统的行为。但是传统的方式实现起来却比较麻烦,采用配置文件和反射机制来实现。通过将需求中的变化点进行抽象,形成接口,并将这种变化外部化,封装在可动态配置的文件中。在系统运行的过程中,通过解析文件得到具体的执行对象,在有新的变化出现的时候,只需修改配置文件而不用修改源代码,实现了一定的动态性。然而,这种特性的实现并非是“免费的午餐”,它需要开发人员维护一个或者多个外部化变化点的配置文件,在系统非常复杂的情况下,这种配置文件的内容会急剧增加,冗杂性和复杂性急剧上升,可读性急剧下降,维护成为一个复杂繁
24、琐的工作。(3 结构扩展性 在传统方式下,将整个系统看成一个不可分割的整体,整体中包含了各个模块,这些模块有些是平级的、有些具有一定的层次性,在运行时模块之间通过直接调用的机制实现相互之间的通信,通信的逻辑被分散到各个模块之间的调用过程之中,整个系统成为一个独立的完整实体,这种结构通常来说被称为宏内核结构7。由于这种结构下的各个模块采用的是直接调用的方式进行交互,因此,具有相对良好的时间相应性。但是,现代的软件开发要求更多的是一种超强的随需应变的能力,系统应具备在需求变化的情况下,快速的应对这种变化的素质,而传统方式下的结构,由于其将系统看成是一种不可拆分的整体,各个功能模块以强关联的形式连接
25、在一起,不利于新功能的添加。综上所述,为了克服传统方式下的弊端,使多功能打印机系统的开发具有随需应变、稳定演化的能力,需要一种能够快速应对需求变化的、稳固的、- - 3可靠的、灵活的基础设施。它具有细化传统物理上大粒度构件、简化系统动态性以及消除不必要的配置文件、提高系统结构扩展性的能力。1.3 课题的国内外研究现状1.3.1 插件技术概述所谓插件技术,就是在程序的设计开发过程中, 把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信。并且在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能8,9。开发支持插件功能的应用程序必须解决一个问题就是如何在主程序与插
26、件间正确地互相通信。为了在主程序与插件之间能正确地互相通信,应该先制定一套通信标准,这套通信标准就是接口。主程序与插件只能通过制订好的接口进行通信。软件开发中,接口只是定义功能并规定调用功能的形式,而不包含功能的实现10,11。主程序中,插件管理部分用于管理插件的安装和删除,并将所有安装插件的信息保存到适合的地方,例如保存到注册表或配置文件中。主程序启动时,根据插件的配置信息加载插件模块,然后获得插件的输出函数或输出类的指针并加以保存,如果需要的话,可以向主程序增加界面接口元素,如菜单、工具条按钮等。在主程序中当点击与插件相关联的接口元素时,就会触发插件调用函数,在插件调用函数中使用主函数种所
27、保存的插件信息调用插件中实现的功能。在调用插件输出函数时也可以把主程序中实现的接口传递给插件方12。运用插件技术可以开发出伸缩性良好,便于维护的应用程序。它著名的应用实例有:媒体播放器Winamp 、微软的网络浏览器Internet Explore 等。这些应用程序的一个突出优点是用户能根据自己的需要扩充程序的功能,例如通过在Winamp 中安装音乐视觉化插件就可以边听乐曲边欣赏根据乐曲生成的图形13。1.3.2 类加载委托模型以及空间可见性1.3.2.1 类加载委托模型 为了实现加载类时的安全性,避免恶意类代码的伪造,类加载器组件采用了一种特殊的类加载模型委托模型。除Bootstrap 类加
28、载以外的每一个类加载器,都有一个“双亲”类加载器,在某个特定的- - 4类加载器试图以常用方式加载类型以前,它会默认的将这个任务“委派”给它的双亲,请求它的双亲来加载这个类型。这个双亲再依次请求它自己的双亲来加载这个类型。这个委派的过程一直向上继续,直到达到Bootstrap 类加载器,通常Bootstrap 类加载是委派链中的最后一个类加载器,如果一个类加载器的双亲类加载器有能力来加载这个类型,则这个类加载器返回这个类型。否则,这个类加载器试图自己来加载这个类型14,15。1.3.2.2 类加载空间的可见性 每一个类加载器作为独立的实体都具有自己的类加载空间,在同一个类加载空间中的类是相互认
29、识的,可以互相调用。而不再同一加载空间的类就如同陌生人一样互不认识,互不来往。由不同的类加载器加载的类,即使是同一个类,由于其位于两个不同的空间世界,对于虚拟机来说也是不同的,尽管从逻辑上来说它们是同一个。由类加载委托模型可知,类加载器通过一种层次的形状相互关联,范围从简单的链状到复杂的多分枝树。加载的顺序是层层委派,直到树根。这种层次状导致了一种命名空间的嵌套,这种嵌套的命名空间控制着加载类的可见性。所谓可见性就是一个类加载器空间可被看见的程度,也即有多少类加载器可以看到目标类加载器的空间16。1.3.3 国外研究现状Siegfried Handschu提出了一种基于Plugin 的构件框架
30、即Ont-O-Mat 。此框架实现了通过方便的扩展来增加、删除、更新功能的一种机制,从而快速的应对需求的频繁变化17。此框架提供一个灵活的插件和服务机制,构件可以以一种可插拔的方式动态的插入到核心框架中。当一个新的构件被注册时,插件机制可以通知每一个被安装构件。通过服务机制每一个构件可以发现以及利用由其他构件提供的服务,服务的形态以接口向外暴漏。此框架带来了构件化、高度可扩展性、灵活性以及松散耦合的优点17。然而,一方面他对由此框架衍生的构件化没有一个清晰地定义,对构件的元数据、分类等也没有提及,更没有详细的阐述构件与并行开发的关系。另一方面对于构件的版本控制、匹配没有具体的阐述。Robert
31、 Chatley 等人也使用插件思想开发了一种通用的框架以便可以快速的、动态的构建灵活而复杂的系统。他们提出对于升级长时间运行的程序方面,使用传统的软件模型或者甚至是基于组件的开发都不能正常的、容易的改变系统的配置在不需要重起应用的情况下。在插件的配置方面,他们提- - 5出了一种链式配置,即一个插件可以成为另一个插件的宿主。换句话说,一个插件可以具有双重身份,宿主(能够使插件插入的实体 和插件(扩展实体 。在插件扮演宿主的角色时,允许其他插件作为自己的扩展物而插入18。然而,在他们的框架设计时,一方面对于插件的注册采用的是编码形式即需要开发人员编写一定的注册代码,不仅增加了开发人员的编码工作
32、量,而且一定程度上降低了对变化的应对能力。另一方面在paper 中对插件的注册进行了比较详细地阐述,但对于插件删除、更新却没有详细的提及,同时对构件无论在逻辑上还是物理上都也没有一个统一的论述。在应用方面,Peter Braun等人通过采用插件以及动态的思想实现了一个关于移动代理的工具集。在此工具集中,拥有很多实用的工具,比如代理迁移、通信、验证、授权、安全等,它们作为插件存在于工具集中19。Dan Decasper 等人认为随着协议的快速发展,以一种增量的方式动态的升级路由器软件变得越来越重要。他们采用插件和动态的思想在NetBSD 操作系统上设计并实现了一个高性能的、构件化的、可扩展服务的
33、路由器软件架构,此架构允许在运行时动态的添加以及配置插件20。1.3.4 国内研究现状陈方明、陈奇认为软件重用一直是困扰软件工作者的一个话题,从一开始的面向过程编程方式,到面向对象编程,直到现在的面向组件的编程思想,无不是为了提高软件开发的效率和软件代码的可重用性。而插件作为很多通用或专用程序提供给应用层用户进行二次开发的一种程序接口,其主要目的就是为了提高软件的重用性和可扩展性21。他们对插件的体系结构,和宿主之间的关系进行了一定的论述,并使用此思想将现有的eSpace 和Knonit 进行了一定的集成。然而,他们并没有对插件思想如何使整个工程的开发效率得到提高进行阐述,也没有对插件和构件之
34、间的关系进行阐述。王光平通过对构件与构件之间的关系即构件连接件的研究,提出了一种称为OO 软件总线的概念。他认为计算机系统的硬件总线是计算机各个部件间、输入输出设备间传送数据信息、地址信息和控制信息的公共通道。通过在其上插接多种类型和多块通用标准的接口构件,能够组成功能强大的更加完美的计算机系统。而在软件中,各个构件之间的连接拓扑关系也应该像计算机系统的硬件总线一样,通过在其上挂接不同的构件以便快速的形成完整的系统22。然而,他只是在理论上定性的对这种软件总线进行了阐述,而- - 6对于此种结构是否能够在实际中得到应用没有提及。在应用方面,韩宏等人通过采用插件式思想开发一套网络安全集成防护框架
35、,此框架通过动态的添加插件,能够集成管理不同类型的防火墙和入侵检测系统,通过框架的抽象,提供了一种告警自动响应的机制23。鲍亮、陈平通过基于插件的技术提出了一种应用系统异构数据集成方案。该方案以数据访问插件为接口,获取不同系统的异构数据,并转换为集成业务的统一数据格式,在此基础上,采用集成框架对插件行为的统一管理,动态的控制集成系统的数据访问能力,具有很强的灵活性和动态特性24。1.4 课题研究内容及论文结构1.4.1 课题研究内容由于现代需求(功能、市场、法律、法规等 变动的非常频繁,为了满足打印机生产厂商尽可能大的缩短产品研发周期的愿望,需要一种和传统开发方式不同的开发模式,使其能够以一种
36、可插拔的方式动态的添加、更新、删除功能以便快速的应对频繁变化的需求。本课题的研究目标是提供一种基于构件的可插拔服务模型框架,使其能够在统一构件定义的前提下;在服务作为构件间动态交互机制的基础下,提供构件的动态可插拔性。因此主要围绕上述问题来展开研究工作,主要工作如下:(1 提出一种分层的构件服务模型,阐述分层的原则,每一层的职责,每一层在整个分层中的位置以及每一层和其他层的关系。(2 阐述每一层的具体职责。该层包括哪些组件,每个组件在该层中扮演什么角色,以及每个组件具有哪些属性和特征。(3 阐述模型如何实现服务的发布、注册、获取及构件之间动态交互。(4 实现此模型的一个最小核心集框架。包括各个
37、层组件的设计与实现、组件之间关系的设计与实现等。(5 比较使用框架模型的开发模式和传统开发模式,分析它们之间的不同并阐述此开发模式在构件化、并行性、动态性、结构扩展性等方面的优点。(6 对框架进行功能性和并发性方面的测试,并使用此框架设计实现打印机界面的Flash 显示功能。- - 7 1.4.2 论文结构论文共分4章。第1章为绪论,阐述了课题研究背景及来源、课题研究的目的和意义、国内外研究现状,同时介绍了本文的主要内容。第2章为基于构件的可插拔服务模型,提出了一种分层的模型,并简要描述了各个层是什么以及拥有的职责,同时提出了实现各个层时需要注意的问题以及实施难点。第3章为可插拔服务模型框架的
38、设计与实现,具体阐述了各个层中重要组件的概念定义、关联关系以及动态功能的设计方法,并对一些重要的设计思想进行了较深入的剖析。同时,较详细的阐述了此开发方式在并行性、动态性以及结构扩展性等方面较传统方式的优点。第4章为框架的测试和具体应用。对框架在功能性、并发性方面进行了测试阐述,并描述了如何使用框架来开发打印机界面的Flash 显示功能。- - 8第2章 基于构件的可插拔服务模型2.1 系统需求所谓多功能打印机(简称MFP 就是集合了打印、复印、扫描、传真等多种功能的集成化办公设备。它具有一些特殊的功能,如网络、双面、装订等。既能节省空间又能提高工作效率,是现代化办公环境不可缺少的组成部分。整
39、个多功能打印机控制系统是作为打印机的控制程序内嵌到机器控制芯片中的。此控制系统根据打印机的功能又被划分为5个子系统,即打印子系统、扫描子系统、复印子系统、传真子系统、以及显示子系统。每个子系统又包含若干模块,形成一个树形结构。整个系统一方面需要和底层操作系统打交道(调用系统函数),另一方面需要在高层具有良好的抽象特性,因此需要两种抽象层次不同的语言来表达这两方面。作为第一批高级语言的C 语言具有很好的和底层操作系统交互的特性;作为最新一批高级语言代表的Java 语言具有很强的业务抽象功能。基于以上两点,系统采用Java 和C 作为最终的实现语言。C 语言负责底层驱动的开发比如HDD drive
40、r ,SD driver 等。Java 负责上层业务逻辑以及界面显示的表达比如打印业务,扫描业务等。为了完成一个特定的功能,需要连通系统的一个垂直切面(从高层到底层),因此就需要Java 和C 进行一定的互操作,由于Java 和C 属于不同的程序语种,需要在它们之间架起一座桥梁,使其能够互相通信以实现特定的系统功能,这座桥梁就是native program 。系统的技术结构如图2-1所示。由于多功能打印机需要提供一系列服务,而每个服务在一定时期内又相对不确定,为了能够快速的应对需求的变化,需要能够在最短的时间内开发新的服务并将新的服务集成到系统中使其能够正常的运行。因此,为了使新的服务能够动态
41、的加入系统以及使旧有的服务动态的从系统中撤销;为了使系统能够获得最大的可扩展性和动态性,需要一个基于构件的可插拔服务模型框架作为支撑。 - - 9图2-1 MFP技术结构图2.2 四层模型2.2.1 静态结构任何软件的开发都是需要一定模型的。在开发过程方面,无论是过去还是现在,都具有很多各具特色的模型。比如传统的瀑布模型、螺旋模型;现代的比较流行的统一过程模型、敏捷过程模型25。在软件设计方面,具有传统的过程式模型、现在的主流的面向对象模型、新型的构件化、服务化模型26。在软件估算方面,有COCOMO 模型、FP 模型、不确定性椎模型27。在过程改进方面,有能力成熟度模型等等。这些模型不仅可以
42、真实的刻画某一领域某一方面的本质以便人们可以清醒的认识问题,而且模型具有一定的指导作用,可以使人们沿着正确的道路前行。为了能够快速的应对需求的频繁变化,需要软件具有一种“即插即用”的特效即能够在系统依然运行的情况下,动态的更换零组件。为了达到这种效果,需要一种特别的框架作为基础设施,而框架实施需要一定的模型作为支撑。为了开发这种可插拔框架,提出一种分层的模型,如图2-2所示。从图2-2中,可以看到整个模型分为四个层次,分别为执行环境层、构件层、生命周期管理层以及服务管理层。每个层次在模型中具有各自特定的职责。- -10 (1 执行环境层 主要描述的是构件或服务运行的基础设施,提供一个统一的执行
43、环境,处理一些底层的技术,比如和宿主操作系统、文件系统的交互以及进程、线程管理等等,属于基础设施的范畴。(2 构件层 此层建立在执行环境层之上,是这四层中最重要的一层。它定义了一套定义、管理以及加载构件的策略。构件是这个模型中最小的构建块,既是最小的开发单元也是最小的部署单元。构件与构件之间的静态依赖通过一种特殊的方式提供。生命周期管理层以及服务管理层都是在它的基础上建立的。(3 生命周期管理层 此层建立在构件层之上主要负责管理构件的生命周期包括构件的安装、开启、更新、停止,以及在生命周期中产生的状态以及状态的转换,同时提供一套构件生命周期事件的发布订阅模型,方便事件的及时传达以及事件的及时处
44、理。(4 服务管理层 此层建立在生命周期管理层和构件层之上,主要负责服务的注册、发布、撤销以及构件与构件之间的动态交互。此层提供一个全局的服务注册器,负责服务的一切日常操作并为构件之间的交互提供了一个协作模型。此层和构件层 的关系最为密切。图2-2 四层模型2.2.2 动态结构尽管模型的各个层次职责清晰,但是为了成为一个完整的整体,不仅需要在静态结构上具有很强的内聚力,还需要在动态结构上具有平滑的交互机制,以便使其能够达到和谐统一。各个层次之间的交互如图2-3所示。- -11 从图2-3中可以看到,不同于模型的是多出了Block 的概念。在整个框架中,Block 成为了模型中的最小开发单元以及
45、最小部署单元在框架实现中的软件实体。Block 以类的形式加载到构件层中并运行在执行环境层中。生命周期管理层控制着构件层中加载的Block 的生命周期,比如安装Block 、开启Block ,停止Block 等。由Block 发布的一系列服务注册在服务管理层中,服务管理层控制着服务的注册和撤销,但服务的生命周期伴随着Block 的生命周期由生命周期管理层控制。图2-3 各个层之间的交互2.3 各个层实施的难点(1 执行环境层 由于Java 的兴起,使用Java 的人越来越多。尤其是它的跨平台特性更是受到业界各种人以及团体的关注。它能够使程序在不同的平台上运行而不用重新编译,这样的特性正好符合这
46、里的需求。这个服务模型在执行层次上的起初设想就是希望能够消除各个平台带来的差异,使这一模型能够建立在一个统一的虚拟平台下,实现跨平台的特性。因此,选用Java 作为底层执行环境就非常的合适。同时Java 虚拟机提供的特有的类加载特性(链式委托模型、动态加载类、类加载的开放性),也是需用它的一个原因。(2 构件层 该层的主要难点在于如何来定义构件,以一种什么样的粒度来表示构件,以及如何来定义构件的独立性,开放性等等。在这层中需要说明构件的加载机制,如何利用Java 的类加载机制来定义构件的加载机制。将要遇到的关键点:一是构件类加载器的设计。是平面型还是层次性,- - 12 是一个构件一个类加载器,还是多个构件公用一个类加载器,还是这个模型就只有一个全局的类加载器;二是加载构件的时候,是依据什么策略来加载,加载的顺序是什么。三是构件是否有子构件。如果有,父构件如何和子构件进行连接,子构件的独立性有多强。四是如何定义和设计构件之间的依赖关系,是以细粒度类的形式依赖还是以其它粗粒度的形式依赖。(3 生命周期管理层 该层的难点在于如何定义构件的安装、启动、更新、停止。如何定义构件的状态以及随着构件执行的行为的不同其状态的变迁状况。构件是否有上下文,如果有,如何来定义构件的上下文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏护理职业学院《数据库系统原理(双语)》2023-2024学年第一学期期末试卷
- 黄山职业技术学院《药事管理学》2023-2024学年第一学期期末试卷
- 湖南劳动人事职业学院《建筑构造Ⅰ》2023-2024学年第一学期期末试卷
- 湖北生物科技职业学院《金属熔炼与铸造》2023-2024学年第一学期期末试卷
- 【物理】《大气压强》(教学设计)-2024-2025学年人教版(2024)初中物理八年级下册
- 高考物理模拟测试题(附带答案)
- 重庆师范大学《软件测试课设》2023-2024学年第一学期期末试卷
- 重庆电信职业学院《扩声技术1》2023-2024学年第一学期期末试卷
- 浙江中医药大学《嵌入式系统开发及应用》2023-2024学年第一学期期末试卷
- 浙江机电职业技术学院《空间信息系统》2023-2024学年第一学期期末试卷
- 2023年贵州黔东南州州直机关遴选公务员笔试真题
- 心脑血管疾病预防课件
- 中药饮片验收培训
- DB35T 1036-2023 10kV及以下电力用户业扩工程技术规范
- 中国移动自智网络白皮书(2024) 强化自智网络价值引领加速迈进L4级新阶段
- 亚马逊合伙运营协议书模板
- 2024年6月青少年机器人技术等级考试理论综合-三级试题(真题及答案)
- 《义务教育数学课程标准(2022年版)》测试题+答案
- Unit 4 同步练习人教版2024七年级英语上册
- 人教版数学三年级下册《简单的小数加、减法》说课稿(附反思、板书)课件
- 广东省深圳市2023年中考英语试题(含答案与解析)
评论
0/150
提交评论