(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf_第1页
(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf_第2页
(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf_第3页
(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf_第4页
(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机应用技术专业论文)com运行环境及基于com的通信模型的研究.pdf.pdf 免费下载

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

文档简介

c o m 运行环境及基于c 0 m 的通信模型的研究 摘要 程序设计方法学一直是软件工程领域的核心问题。传统的编程方法,如o o p f 面向对 象编程方法) ,已经很难满足应用系统复杂性和分布性的需要,组件化编程方法和组件模 型应运而生 位s f t 提出了c 0 m ( 组件对象模型) 以及一系列基于c o m 的技术,如 d c o m 、a c t i v e x 、c o m 十,用于构建组件编程框架。基于c o m 可以构建可复用性好、 易维护、稳健的系统。 本文对c o m 技术底层实现机制进行了研究。文章从c o m 技术的支持环境出发,分 析了c o m 底层的运行机制,阐述了c o m 组件的若干特征在晰n d a w s 平台上的实现方 式,并对c o m 进程内组件的运行环境进行模拟,为c o m 向非晰n d o w s 平台的移植做 了部分前期准备工作。模拟的主要内容包括组件对象的内存管理机制、组件的集成机制、 c 0 m 库中部分核心柚阿函数 本文对c o m 的通信机制进行了研究。文章分析了c o m 列集机制和可连接点机制对 多点通信的支持,提出了一个新的通信模型一基于c 0 m 的多点通信模型,讨论了模型 的负载平衡、容错性、安全性,初步实现了模型中主要对象,并规范了对象接口间的调 用关系。提出了静态和动态相结合的集中式负载平衡解决方案。该方案应用可连结对象 的回调机制。实现服务器负载信息的自动收集;通过客户动态配置d c o m 服务器位置的 方式,方便的实现任务调度:通过引入最优备用服务器和最优服务器的概念来作为任务 再分配时的调度服务器的依据,实现较好的容错性能。 文章最后对论文的研究工作进行了总结,并对基于c o m 的通信模型的进一步研究 指出了方向。 点 关键词:c o m ,模拟。组件,通信模型。负载平衡,容错,安全性,列集,可连接 中南大学磺士学位论文 0 0 m 运行环境及基于o o m 的通信模型的研究 a b s t r a c t i h em 咖d o l o g yo fp f o g 玎町n m i n gi so l k eo ft i 圮蠡) 口l i s e si nt l 地矗e l do fs o f b 恤r e e n g i n f i n g t h et f a d i t i 伽a ip r o g 睫m m i n gm c i h o d s 跚c h 勰o i ) p ( o b j e c t o r i e n t e dp r o 伊a m m i n 蓟 训dn o t 训s 母c o m p l e x 如dd i n f i b u t e da p p l i c a t i o 吣,s oc o m p o n e ms o 丘w a 他蛐dc o m p o n e n t 啪d e l sc 0 呲u p c 帆炳m p o 舱n to b j e 吐m o d e l ) a i i do t h c rt e c h n o i o g i 髂d e r i v e d 丘d mc o m , 吼l c h 勰d c o m ,a c t i v e kc o m + a 他d e l o p e db yh 缸c r o s o at 0 船t a b l i s hc 蛐p o n 蛐t - b 觞e d p m 印珊衄i n ga n 洳t e c t l 鹏 r e u s a b l e , m a i l l t a i n a b l ea n dr o b u s t a p p l i c a t i o n s c o u l db e c o n s t n l c t e db a s e do nc o m t l l i sp a p 盯r e s e a r c h e st h em i l a i i i s mo fc o m ,i nw i l i c ht l l e 姒p p o n i i l ge n v i r o n m e mo f c o mt 幽o i o g yi sa i l a l y z e d ,t h ei 仰e fm n l l i n gm e c l l a r i i s mi sg t u d i e d ,t h ec h 撇c t 耐s t i c so f c o mc o m p o r 玲n t 删t h e i ri m p l e m e n t 砒i o 璐o nw i n d o w sp l a t f 0 叻丑r es e tf o n h ,趾dt h e m i l i l i n g 鲫枷咖e 址i 5s i m i l l 砒e d ,w l l i c hi sp r e p a r e df o rc o m 仃a 唧l 瓶t 砒i o n 劬m 晰n d o 粥 p l a t f 0 皿t oo 山口s s u b j e c t so f o 旺mi r i _ p r o c 岛s 踮r v 盯h a v eb e e ns i m u i a t e d :1 t h em e c h a i l i s m o f m e m o r ym a n a g 锄e m ;2 t h ei n t c g 嘶o no f c o m p o n 饥t ;3 m eo f 吐忙k c m e la p i 如n 吐i o 璐 i i i c o m 曲嘣哆 t h ep a p e rr e s e a r c h e s 山ec o m m u l l i 哪i o nm e c h a i l i 蛐o fc o m ,mw m c ht h et e c h i l 0 1 0 9 i e s o fm a r s 衄i i n g 柚dc 0 衄e c t i o np o m 辄p p o n 蟛c o mg r o u pc 0 蛐u i i i c a t i o ni s 蛐a l y z e d ,a n e wc 0 删仙i i i c 札i o nm o d d 一伊o u pc o 咖u n i c a t i o nm o d e lb 躺e do nc o mi sp u tf o r 啪坩,l o a d b a l a n ,f 扎l t t o l e 咖c e 柚d 踌训t yo ft h em o d e la 他s t u d i e d ,t l l em a i n0 _ b j e c t si nt l l em o d e l a r ei m p l e m e n t e da l l dt h ei m e r a c t j o n s 砌o i l gt 1 1 e i i i n t 抵既a r en o r 眦l i z e d t h e 跚t h o r p r e m sab n do fn e wc e m r a l i 髓dl o a d b a l a n a l g o r i t t i i r ib a 辨do ns t a l i ca n dd y n a m i ct a s k s c _ h e d u l m gs t i 缸e g i e s t l i i sa l g 面t h mc 蛆w o r kb e t t 盯i nr e a l i z i n gg a m 酣n gl o a di n f b m 眦i o n 叫t 0 i n 砒i c a l l yb ya p p l y i n g c a l i b a c l 【m b a l i i s mo fc o n c t i o b j e c t ,s i g n i n gt a s 妇 c o n v e i l i e n t l yb yc o 面g 嘶n gd c o :ms e n ,甘,a i l d 砌e m t i 唱臼眦“n g 辩v e r a le m e 喀e n c i e sb y i 1 1 打o d u d i i gt h e n p to f o p 血n 岫- 蹁r v 盯蛐do p 血叭m - s p a r e - r v 盯m t ot 鹊k 心a l l o c a t i o n a 鼬m m r y0 f t h e w o f k s i sg i v e n a n d t h e 缸t l i 化诎o f 曲e 删试啊蕾i 傩m 圳b i s 。d c o m i s p o 砬e d o i i t i | i 圯do f t p a p 托 k e yw o 一毫:c o 札s i m u l 砒e ,c o m p o m 呲,c o 咖u i i i c a l i o nm o d e ll o a d b “a i i c e ,f 狐i t - t o l e r a n c e ,s e c u r i t y r n a 巧h a l i n g ,c o m 幢c t i o np o m 中南大学硕士学位论文 c o m 运寸亍环境及基于o o m 的通信模型的研究 第l 章概述 1 1问题的提出 程序设计的方法学一直是软件工程领域的核心问题,程序设计方法经历了多次变革, 从最初的功能分解法,到结构化程序设计方法,再到至今仍在广泛使用的面向对象程序 设计方法【”。随着软件科学的不断发展,原有的编程方法已经很难适应用的需要p l 【3 i 【4 】。 于是人们提出了组件化程序设计思想p 】。按照这种思想,复杂的应用程序被设计成一些 小的、功能单一的组件模块,在理想情况下,这些模块具有编程语言无关、动态链接、 运行空间透明的特性,因而复用性、可维护性好【6 胴1 8 】【9 1 。目前有两种主要的组件模型: c o m ( c o m p o n e n to b j e c tm o d e l ,组件对象模型) 和c o r b a ( c o m m o no b j e c tr e q u e s t b r e a l 【e r 出t e c t u r e ,公共对象请求中介体系结构1 。组件模型的提出,为软件产业朝着 标准化和集约化生产提供了理论基础。 在w i n d o w s 平台上,因为m i s m s o f i 的大力推广以及c o m 在应用中所体现的种种优 势,c o m 应用日益广泛,基于c o m 的应用技术日新月异,如o l e 、x 、a c t i v e x 、 d c o m 、c o m + 等技术,无不是建立在c o m 基础之上的。所以近年来,关于c o m 运行 环境以及基于c o m 的应用研究逐渐成为人们研究的热点。 在基于c o m 的广泛应用中,有一类应用值得我们注意。c o m 本质上建立了一个应 用程序与组件之间通信的规范,根据c 0 m 规范建立的组件,不管运行在与应用程序相 同的机器或远程机器,都可以实现与应用程序间的通信,而不需考虑底层的通信细节, 因而将c o m 的通信机制直接应用于网络通信,将是非常有益的尝试。 1 2 研究的意义 目前c o m 应用主要集中在四个方面:面向可复用构件的开发,即通用控件如x 控件、a c t i v e x 控件、v c l 组件的开发;基于可复用构件的开发,即使用通用控件采用 快速原型法构建应用程序例;基于c o m 的、) 1 7 i n d o w ss h e u l 功能扩展,改善软件尤其是桌 面工具软件的用户界面【1 0 l :用c o m 构建稳定的客户服务器系统。在c o m 应用中存在 着如下问题: 1 由于开发工具对组件开发和使用的封装,大大减轻了开发人员的负担。使得开发 人员不用懂得组件的运行机制就可以开发组件,但是一旦组件程序出现异常,便很难进 中南大学硕士学位论文 c o m 运行环境及基于c o m 的通信模型的研究 行调试。 2 c o m 并不是高深莫测的技术,基于c o m 的应用技术如可拖放、剪贴板、流、 复合文档等,在w i n d a w s 系统上已经已经得到广泛使用了,但由于对c o m 的底层运行 机制不清楚。很多开发人员在心里上对排斥c o m 。m i c r o s o f i 提出的新技术层出不穷, 使开发者应接不暇,然而很多技术都是建立在c o m 基础之上的,如o l e 、d c o m 等。 3 采用c o m 方法开发的系统本质上具有客户服务器体系结构【l l l 【1 2 l ,具有较好 的稳定性,但是c o m 编程方法并未引起足够的重视。 因此,研究c 0 m 技术的动机和c o m 底层技术的实现,对推动我国软件技术科学的 发展是非常有意义的。 另一方面,随着网络的应用范围日益广泛,用户对网络通信的需求不断增长。传统 的网络通信一般需要进行s o c k e t 编程,从较低的层次完成通信连接、并发接受服务、数 据包识别和转化、网络异常处理等工作。某些网络应用如多用户参与网络游戏、网络协 同工作等,均涉及多点通信。多点通信在网络层和传输层开始获得支持l l4 】,但从较底层 的协议出发构建网络通信系统,实旋起来难度较大。c o m 提供了一种对象远程过程调 用( o r p c ) ) 的通信机制,从编程的角度,用户不用编写底层的通信代码就可以建立客 户与服务器间的并发通信服务。根据c o m 的可连接点机制,一个客户对服务器的通信 内容可以转发给与服务器连接的其他客户,从而实现多点通信。 多点通信显然是一个分布式应用,其扩充性和稳定性是基本要求。c o m 服务器的位 置对客户是透明的。客户只需动态更改服务配置就可以连接到不同的服务器,这就为服 务器的扩充、负载平衡提供了支持【2 】【”j 。基于c o m 构建一个通信系统还具有易维护、 多语言协同开发的特点。因此,探索基于c o m 的多点通信模式是有应用价值的。 本课题是c o m 技术理论和应用的探索性研究。 1 3 论文结构 本论文共分l o 章,本章是第l 章。 第2 一s 章详细讨论了c o m 的相关原理和技术。并分析和模拟了c o m 组件的运行 环境。其中,第2 章是c o m 技术背景。在这一章中,分析了c o m 技术的动机,介绍 了c o m 的发展历程和c o m 基本原理,并对c o m 与c o r b a 技术进行了比较。第3 章 是c o m 支持环境,c o m 技术的支持环境包括面向对象、动态链接、线程等,本章分析 了这些技术的不足以及它们对c o m 技术提供的支持。第4 章是c o m 特征及其实现, 中南大学硕士学位论文 2 c o m 运行环境及基于c f 的通信模型的研究 介绍了c o m 的特征,并分析了c o m 语言无关性、位置透明性、复用性的解决方案。 第5 章是进程内组件的运行环境模拟。本章分析了c o m 对象的内存管理、接口查询机 制,模拟实现并优化了基本接口i l m k o w n 的功能;同时分析了c o m 对象的创建机制, 模拟了c o m 库中一些基本函数的实现。 第6 9 章讨论了c o m 在通信方面的应用。在第6 章中,分析了c o m 的通信机制。 其中具体分析了c o m 的列集机制对远程通信的支持,以及可连接点机制对多点通信的 支持。第7 章提出了一个基于c o m 的多点通信模型,分析了基于c o m 的多点通信过 程、通信安全性和通信效率。第8 章是负载平衡。在这一章中,通过对几种负载平衡算 法进行分析和比较,提出了多点通信模型中动态和静态调度相结合的集中式负载平衡解 决方案,并介绍了模型的容错措施。第9 章给出了这个模型总体结构,并初步实现了模 型各部分主要对象的接口,接着讨论了接口间的调用关系。 第1 0 章是结论和展望,在这一章中,回顾了本论文的主要内容,提出了一些不足之 处,并指出了进一步研究的方向。 中南大学硕士学位论文 c o m 运行环境及基于c o m 的通信模型的研究 第2 章c o m 技术背景 2 1c o m 的动机 重用是所有成熟的工程领域都必须关注的问题p l 。在计算机工程领域,最先在硬件 方面采用了重用。在3 5 年的时间里,硬件设计师由建造房屋大小的计算机发展到了生产 基于小而强大的微型处理器的膝上型l l 司。在这个过程中,“组件”的思想极其重要。如 果硬件工程师每次都从以硅集成制造系统,那么硬件业的发展不会这么迅速。实际上, 硬件工程师在建造一个新系统时总是尽量使用已有元件( 组件) ,每个元件通过其特定的 接口提供了互连功能,这样硬件工程师就可以利用别人的成果来集成最终的系统,极大 地简化了自己的工作。相比之下,软件领域的重用却步履缓慢,软件工作者常常在重复 许多编程人员己经走过的路,重复编写已有的代码。c o m 的中心思想就是定义软件中 可以重用的部分,每部分组件都有其特定的接口和所能提供的服务。这样就提供了一 种创建可重用组件的有效机制,使这些组件能为软件设计师所用,就象硬件设计师用的 芯片那样。 软件工程领域广泛使用了软件重用技术,如动态链接库和对象,但是单纯的动态链 接库和对象不足以成为组件的底层基础。 动态链接库可以以二进制的形式分发,使用某一种语言编写的链接库可以被另一种 语言编写的应用程序调用。同时用动态链接库构建的系统具有动态维护的能力,在不用 重新编译整个系统的情况下,实现系统的更新换代,从而实现整个程序框架的重用。但 是用动态链接库构建系统存在很多缺点【l ”。 对象也是一种软件重用的方法。通过继承,对象可以重用另一个对象的功能定义和 实现代码。然而传统的对象模型并不能作为组件的底层基础【l 埘。首先,对象不存在二进 制标准,使用某种c + + 编译器编译的对象,只能被使用该编译器编译的c + + 程序识别, 这就使得难以创建可以发布的二进制对象库,在发布对象库时不得不附上源代码。其次, 要跨越语言平台重用对象是困难的,c + + 并不是唯一的面向对象的语言,使用c + + 编写 的对象很难用于其他的编程环境。第三个问题是程序的维护困难,当某个对象要改变时, 你将不得不重新链接甚至重新编译整个程序,而理想的情况应该是只生成该对象的新版 本,应用程序就能够自动使用这个新的版本。 中南大学硬士学位论文 4 c o m 运行环境及基于c o m 的通信模型的研究 另一方面,从程序设计方法学的观点来说,传统的面向对象思想也存在若干不足。 首先,用面向对象的思想处理大型软件系统。特别是分布式应用系统时,对象的粒度粗 细很难得到有效控制;其次,现行世界的许多问题领域包括影响多个对象的全局性处理, 可以由若干个并行或串行执行的步骤组成,这种全局处理的概念不从属于任何单个对象, 与面向对象的思想不统一,缺乏有效的表示方法;再次,在运用对象进行软件开发的各 个阶段,除了编码实现阶段有面向对象语言作为工具外,其他的阶段都缺少强有力的软 件工具作为支持。 因此,m j c r o s o f t 公司提出了组件的二进制规范c o h 截c o m p o n 哪o _ b j e c tm o d l e ) ,并提 供了w i n d o w s 平台上的实现方案,应用于微软的一系列技术当中。基于c o m 的程序设 计符合组件化程序设计的思想思想。按照这种思想,复杂的应用程序被设计成一些小的、 功能单一的组件模块,在理想情况下,这些模块具有语言无关、动态链接、运行空间透 明的特性,因而复用性好、可维护性好。 2 2c o m 的发展 2 2 1o l e c o m 规范的形成起源于0 l e ( o b j e c tl i n k i n ga i l de m b e d e d j n g ,对象链按和嵌入) 技术。 0 l e 的第一个版本0 l e l ,是为处理复合文档( c o r n p o u n dd o c u m e n t ) 而准备的在o l e l 中,组件程序与客户程序之间采用d d e ( d y m m i cd a 协e x c h a n g e ,动态数据交换) 的机制, 肋e 建立在w i n d o w s 操作系统 的消息机制基础之上,效率低, 稳定性不好。o l e 2 中采用c o m 作为其底层结构。使用c o m 接 口作为程序同通信的标准,具有 稳定性好、易扩充的特点。 o l e 以c o m 作为其基础, 正是在o l e 的发展过程中c o m 规范逐渐形成。同时0 l e 不再仅 仅是处理复合文档的一种技术, 0 l e 建立在c o m 基础之上,由 一系列相互支持的服务构成( 如 0 l e 文档 中南大学硕士学位论文 图2 1o l e 的结构层次 c o m 运行环境及基于c o m 的通信模型的研究 图2 1 所示) 。c o m 规范与0 l e 规范已经没有严格的区分,0 l e 的很多部分已经作为 c o m 规范的内容。 o l e 应用以三种方式出现:o l e 文档0 l e 自动化,0 l e 控件。 o l e 文档即是复合文件,利用结构化存储来存放各种格式的对象以构成文档,这些 对象可以是内部数据或者是通过标记链接到文件的外部数据,同时,o l e 文档能容纳其 他进程所产生的对象。嵌入这些对象就像它们是o l e 文档内部的一个部分一样。 o l e 自动化从另外一个应用程序的内部,通过v b s 耐p t 和j a v a s c r i p t 这样的高级宏 语言和描述性语言。操纵一个对象的方法和属性,因而可以定制对象的功能,并提供应 应用程序之间的交互能力。o l e 自动化提供的服务存放在一个类型库( t y p e l i b f a 哪中。 o l e 控件一般称为o c x ,是指一个可嵌入的c o m 对象它作为一个中间服务器动 态链接库来实现。o l e 控件是自包含的对象,必须嵌入到o l e 容器中,支持与容器之 间的双向通信。 2 2 2a c t i v e x m i c r o s o f i 扩展了o l e 技术,使之可以适应i n t e m e t 和i n t r 柚e t 应用。觚i v e x 是由 组开发和实现h t 饥l e t 网上应用程序的技术或部件构成,核心是o l e 。为适应网络环境, a c t i v e x 控件只包含必要的接口实现,减少0 l e 控件冗余的代码量,以便重量尽量的轻。 a c t i v e x 服务包括a c t i v e x 文档、a c t i v e x 控件等与0 l e 密切相关的技术。a c t i v e x 扩展了o l e 文档。并将它们扩展到i m e m e t 网。a c t i v e x 控件是已经扩展到i m e 丌l e t 环境 的一个o l e 控件的超集,a c t i v e x 控件能用于桌面或i n t e m e t 上任何支持其接口的容器 中。如a c t i v e x 控件可嵌入到网页中,当最终用户遇到一个含有a c t i v e x 控件的页面时, 若此a c t i v e x 控件不在客户机中,那么就会下载到客户机中。 a c t i v e x 也包括不与o l e 相关的技术,有利于h l t e m e t 上的交互式程序的开发,如 i m e m e t 标记、a c t i v e x 超集链接、觚i v e x 会议( 觚i v e xc o n f e r e n d n g ) 、a d i v e x 服务器 扩展( a c i v e x f v e re ) 【t e n s i o n s ) 、代码签名( c o d es 遍n i n 曲、h r m l 扩展( h n e ) ( t e n s i o n s ) 、 活动电影( c t i l 恸t o v i e ) 。 2 2 3d c o m d c o m 即分布式组件对象模型i s t r i b u t e dc o d ,是跨网络的二进制c 0 m 对象的基 本扩展,使跨网络实例化和绑定对象称为可能。简单的说,d c o m 是一个高层网络协议, 它使基于c o m 的组件在位于不同机器上的两个进程问协同工作。d c o m 使得程序员不 中南大学硕士学位论文 c o m 运行环境及基于c 0 m 的通信模型的研究 必编写网络代码去处理分布式组件扩网络交互所需的通信。 c o m 规范中c o m 组件能提供远程访问的能力,d c o m 扩展了这种远程访问的能力, 它对c o m 组件的跨环境访问实旖了优化,并提供了安全性框架。d c 0 m 是c o m 的无 缝扩展,所以可以将基于c o m 的应用、组件、工具以及知识转移到标准化的分布式计 算领域中来。 d c o m 组件的位置具有独立性,可以独立进行配置,因此,客户可以根据配置选择 服务器。便于在多个服务器应用中实现负载平衡,同时也便于服务器的扩充。 安全性是任何一个分布式应用都要关注的问题。d c o m 无需在客户端和组件上进行 任何专门为安全性而做的编码和设计工作。就可以为分布式应用系统提供安全性保障。 就象d c o m 编程模型屏蔽了组件的位置一样,它也屏蔽了组件的安全性需求。在无需考 虑安全性的单机环境下工作的二进制代码能够在分布式环境下以一种安全的方式工作。 d c o m 通过让开发者和管理员为每个组件设置安全性环境而使安全性透明。 2 2 4c o m + c o m + 倡导一种新的设计概念,c o m 组件提升到应用层,把底层细节留给操作系统, 使c o m + 与操作系统的结合更加紧密。c o m + 的底层结构仍然以c o m 为基础,但在应 用方式上则更多地继承了耵s ( m i c r o s o f tt r a n s a c t i o ns e r v e r ) 的处理机制,包括m r s 的对象环境、安全模型、配置管理等。c o m + 把c o m 、d c o m + 和m r s 三者有机地统一 起来,同时也新增了一些服务,如负载 平衡、内存数据库、事件模型、队列服 务等,形成一个概念新、功能强的组件 体系结构,使得c o m + 形成真正适合于 企业应用的组件技术。几者之间的结构 关系如图2 2 所示。 2 3c o m 基本原理 c 叫+ : 负载平衡 内存数据库 对象池 队列组件 事物模型 组件管理和配置 图2 2c 叫+ 的结构内容 2 3 1 基本概念 c o m 中存在三个基本的概念:c o m 组件、c 0 m 对象、c o m 接口。c o m 引入了对 象的思想,c o m 对象是组件中的活跃元素,是c 0 m 中的功能部件。c o m 对象仍然是 某个类的实例,只是在c o m 实体的层次关系中忽略了类的概念。c o m 对象以接口的方 中南大学硕士学位论文7 c o m 运行环境及基于c o m 的通信模型的研究 式向外提供服务。在c o m 中,客户与组件、组件与组件问都是通过接口进行通讯的 从而封装了组件的内部实现。c o m 组件为c o m 对象提供了话动空间,在w i n d o w s 平台上。一个 组件或者是一个进程内组件,以叫动态链接 库) 文件形式提供,或者是一个进程外组件,以 e ) 匝( 可执行程序) 文件形式提供。一个c o m 组件 可以包含多个c o m 对象,每个c o m 对象可以 实现多个接口,每个接口暴露了c o m 对象的若 干方法。c o m 中实体的关系如图2 3 所示。 2 3 2 接口技术 图2 3c o 雌日件、c 0 m 对象和c 0 m 接口的关系 从语义上讲,接口描述了c o m 对象中一组语义相关的方法;从物理上讲,接口在 二进制层次上规范了c o m 对象中c o m 方法的访问途径。c o m 规范是直接基于c + + 对 象结构的,用c + + 表示的c o m 接口是一个包含虚拟方法的抽象类: c 1 4 站d 0 窖斟】b l i ci u n k 姗 t p u b n c : v i r h l a l i t e s u u b h ) = o ; v i m l a j m e s u u s l “) = o ; v i 咖a lh r e s u l te 叫) = 0 ; v i 血a jb o o l i s 王u o f “) 20 ; l c o m 接口与实现c 0 m 接口的 c o m 对象具有相同的虚拟表结构。 c o m 接口的虚拟表初始内容为空, 当c o m 对象的指针赋值给接口指针 c 叫对象 v t b l 图2 4c 0 m 接口和c 叫对象的内存结构 后,接口虚拟表填充了c o m 方法的真实地址,如图2 _ 4 所示。用c + + 语言描述的接口 并不能完全清晰的表示一个c o m 接口的所有属性,接口一般用接口描述语言( m l ) 定义。 c o m 要求接口除了描述组件的功能,规范c o m 方法的二进制规范以外,还必须完 成内存管理和接口查询两个功能。这两个功能是在接口i u n k o w n 中定义,所有的c o m 中南大学碗士学位论文 c o m 运行环境及基于c o m 的通信模型的研究 接口均从r u n b w n 继承,所有的c o m 组件也必须实现i u l 【o w n 的功能。i u n k o w n 接口 m l 语言定义如下: 岫t d f 妇如h m ( 卸r e s u l l rq i l 血t 目臼c r e m 啪d 【呲i i d _ i r i i d ) 】v o i d “p p v o b j e c t ) ; i j l o n ga d d r 哦x u l o n gr e l c a g ) ; ) 内存管理功能使客户仅仅根据接口的使用就能控制整个c o m 对象生存期,这与“客 户只关心c o m 接口而不必关心c o m 对象”的观点是一致的。 组件一般要展现更多的接口,复杂的组件。如一个具有完全特征的a c c i v e x 控件, 要求提供1 5 个以上的不同接口。由于不同语言和编译器对c o m 对象内存布局是不同的, 因而导致针某个对于接口的虚拟表指针存放位置的不确定,但是因为c o m 对象在成功 创建后总能返回接口i u l l l 【o 啪的指针,也就是只有i u n k o w n 的指针是固定可知的。客 户根据固定的接口提供的功能查询未知的接口,通过接口查询,屏蔽对象不确定的内存 分布,从而实现在二进制层次上动态访问对象。同时接口查询的功能在接口层次隔离 了定位内存可能产生的错误。为访问c o m 对象提供了安全机制。 2 3 3 包容和聚合 i n t 2 i n t l i n t 2 i n t l 图2 5c 删组件的包容示意图圈2 6c 叫组件的聚合示意图 包容和聚合是c o m 组件重用的方式,是指一个组件使用另一个组件的功能来完成 中南大学硕士学位论文 c o m 运行环境及基于c o m 的通信模型的研究 自己功能,其中聚合是包容的一种特例。包容是指外部的对象作为内部对象的客户,外 部对象直接调用内部对象的方法来实现自己的功能,而内部对象对客户来说是不可见的。 若对象a 实现了接口i m l ,对象b 也要求实现接口i n t l ,则b 在实现h l t l 时调用a 种 接口i n t l 的功能。图2 5 是c o m 对象包容示意图。 聚合是指外部对象将内部对象的接口直接暴露出来,就象它自己实现的接口一样。 当客户请求该接口时,外部对象直接返回内部对象的接口指针,客户仅知道外部对象而 不必关心内部对象。图2 6 是c o m 对象聚合示意图。 2 4c o m 与c o r b a 的比较 2 4 1c o r b a 概述 c o r b a ( c o r n m o no b i e c tr e q e s tb m k e f 舡c h i t e d u r e ,公共对象请求代理结构) 是 o m g ( o b j e c tm a n a g e m e mg r o u p ) 于1 9 9 0 年定义的分布式对象标准结构,目的是为适应分 布式软件跨平台、跨操作系统、跨语言、跨协议的需求而建立一个分布式组件开发标准。 0 m g 是由8 0 0 多家公司组成的一个非盈利性的组织,它不参与软件开发,只制定标准。 c o r b a 的核心是o r b ( o b j e c tr e q u e s tb r o k e r ) ,它是连接应用程序、各种对象、 c 0 砌j a 服务、c o j a 工具集的核心,如图2 8 所示。也正是0 r b 将c o r b a 中的元 素有序的分割开来,这种分割体现在三个方面:对象方法、服务定义、和服务实现之间 的分割;请求服务器和响应服务器之问的分割;c o r b a 基础设施开发者和c o r b a 应 用者之间的分割【1 7 l 【1 8 】【1 9 l 口0 1 。 c o r b a 基本服务为c o r b a 的分布式软件开发提供了对象级别的十六种基本服务。 c o r b a 的每一项服务,总可以在c o m ,d c o m 或其演变技术中找到相应的解决途径。 对象生存期服务为对象提供创建、移动、拷贝、释放等有关的服务,c o m 中也有解决 对象生存期的内存管理机制;对象命名为对象提供姓名、别名、引用的服务,对应着c o m 中的命名和绑定技术。这些服务都是软件集成时对象要求的公共服务。 c o r b a 工具集为c 0 r b a 的分布式软件提供应用级别的服务。c o r b a 开发者可以 在工具集中选择合适的工具,开发应用软件,从而忽略服务的底层实现细节。c o 髓a 工具集包括横向工具集和纵向工具集,横向工具集包括如下内容:用户界面,负责管理 图形用户界面的任务:信息管理,负责建立信息模型、存储及恢复信息数据、支持多种 信息模型和数据格式的转化、信息数据加密等工作;系统管理,负责内存、进程、线程 管理等能降低分布式软件运行开销的工作:任务管理,负责工作流、代理、规则管理、 中南大学硕士学位论文l o c o m 运行环境及基于c o m 的通信模型的研究 对象自动化等任务。c 0 r b a 也提供了医疗保健、金融服务、电讯、电子商务、制造, 五个领域纵向的工具集。c o r b a 工具集的目的很明显。就是让开发着在开发软件时, 可以从工具集中选择便捷的“c o r b a 部件”,无缝的集成软件。 由于c o 砌a 只是一个技术上的规范,因此各个公司实现的o r b 版本并不是完全相 同的,采用不同o r b 开发的软件系统并不能实现互操作。在c 0 r b a 2 o 中,通过提供 i n t e m e ci n t * 0 r bp f ;o t o 删( o p ) 解决了这个主要障碍。1 9 9 9 年,c o r b a 3 o 在o m g 获 得通过。c 0 r b a 3 o 增加了i n t e m c t 集成、服务质量控制、引入了组件群和脚本语言。 自9 0 年代至今,出现了许多成功的c o 砒 a 实现系统,其中最著名的有i n o a 公司的 o r b i x 系统和v i s i g e i l i c 公司的、,i s i b r o k c r 系统【2 1 1 。 应用程序及 c o 衄 工具集 横向:用户界面信息管理,系统管理,任务管理等工具集 各种对象 纵向:医疗保健,金融保险电讯,制造等面向行业的工具集 g j c 0 r b 对象请求代理( o b j e c tr e q u e s tb r o k e r ) 一0 髓 】 c 0 r b 服务 对象生存期。对象关系,兑现命名,持续对象,对象外化事件,属性对象查 询,事物,并行许可对象安全,对象洽谈,对象安全,对象启动等各种服务 图2 8c 0 r b 完整的体系结构 2 4 2c o m d c o m 与c o r b a 的比较 c o m d c o m 与c o r b a 是两种不同的分布式组件模型,但具有若干相似点,首先, 它们都是种编程技术,是吸收了面向对象技术、分布式计算技术、多层体系结构技术、 接口技术的一种综合技术。 c 伪舢d c o m 和c 0 l u l a 都是面向组件的对象模型,而面向组件只是更高级别的面向 对象它依然具有面向对象的特征“组件”可以认为是更高级别的类,只是不同于面向 对象中的类用同一种语言实现继承、重载、多态。组件可以在不同语言中实现。 c o m 帕c o m 和c o r b a 都是为适应分布式应用的需求而提出的,分布式计算模型具 有分布性、著行性、透明性、共享性、透明性、强健性的特征,因而基于c 蝴c o m 和c o a 设计的软件系统也必须满足这些特征。 中南大学硕士学位论文 c 0 m 运行环境及基于c o m 的通信模型的研究 一个分布式系统一般可以划分出处理图形用户界面的用户层、处理业务逻辑的逻辑 层、处理数据的数据管理层,c o m d c o m 和c 0 r b a 都支持采用多层体系结构设计软 件系统。 c o m d c o m 和c o r b a 都采用接口技术来解决语言无关。接口的作用有二:其一, 提供一种清晰的设计标准,使总体设计、详细设计、编码、维护阶段都能保持各自的独 立性和一致性:其二,为组件提供一种包装方式,以便在其他语言中重用。c o m 仍c 0 m 采用的是m s l 描述接口,c o r b a 采用0 m g l 描述接口。 客户 接口存根 ( s t u b ) 对象请求与代理 ( 0 r b ) 慈警日裟 ( s k e l e t o li = = n )h 。 图2 9d 0 叫和r b 的服务调用过程的比较 其次,c o m 仍c o m 和c o r b a 的服务调用过程也具有相似性。c o m d c o m 中,对 于远程激活的组件对象,在客户端,客户获得的是组件对象的代理对象;在服务器端, 客户不仅激活了组件对象,也激活了组件对象的存根。客户对代理对象的服务请求,即 过程调用,经过0 r p c 通道传递到组件对象所在机器的存根,再由存根调用组件对象的 功能。同样,在c o r b a 中,客户和c o 砌i a 组件也通过类似于“代理”和“存根”间 接方式实现服务调用,在c o 砌i a 中,分别称之为“接口存根”和“接口框架”。d c o m 和c o 妞a 的服务调用过程见图2 9 。 c 0 蛐d c o m 和c 0 妯a 作为两种不相关的分布式组件模型,实现方案肯定是不同 的,从应用的角度来说,c o m 仍c o m 和c o r b a 存在着如下特征。 首先,在跨平台和跨语言方面,因为c o m 仍c o m 是从w i n d o w s 桌面应用0 l e 扩 充而来的。最初的目的只是使 n d o w s 平台上的应用程序问有一个标准的通信标准,而 中南大学硕士学位论文 c o m 运行环境及基于c 0 m 的通信模型的研究 且,为提供开发支持,c o m 实现了c o m 库,它完全是平台和操作系统相关的。因此, c o m d c o m 的分布性在跨平台、跨操作系统方面是有局限的。而c o r b a 一开始就是 由多个企业提出的面向多平台、多操作系统、多语言的分布式组件开发标准,不存在这 种局限性。 其次,c o r b a 只是一种规范,要由不同厂商实现,因而c o r b a 实现必然存在一定 差异,这必然会影响其适应能力。c o m ,d c o m 有基于m n d o w s 平台和u i l i x 实现的标 准c o m 库辅助开发。而且。w i n d o w s 平台上的开发工具较多,它们屏蔽了c o m d c o m 的底层实现机制,使开发者只需关注组件的功能,而c o r b a 却缺乏这种优势。 2 5 跨平台的c o m 2 5 1c o m d c o m 与c o r b a 的互括 作 作为当前分布式对象模型中的两大主 流,c o r b a 和c o m 仍c o m 有着各自的优 点和适用范围1 2 ”。很多分布式应用将同时采 用c o r b a 和c o m d c o m ,这种情况下 c 0 r b a 和c o m d c o m 互操作对系统的开 发和集成具有重要的意义。c o m 拥有众多 的用户,因此o m g 组织在c o r b a 规范2o 版中增加了c 0 m 与c o r b a 互操作规范。 图2 一1 0c 0 r 卧和c 0 m d c 0 m 互操作模型 目前互操作产品主要有i o n a 的o r b i x a c t i v e x 、h p 的0 r b d l u s 等等。 c 0 m 与c 0 r 】j a 互操作规范采用信关的方式实现c o m 和c o 妯a 的互操作。规范 描述了c o m 和c o 髓a 的通信机制,其目标是使一个系统中的客户能够按照本系统的 访问机制去访问另一个系统中的对象。c o r b a 和c o m d c 0 m 互操模型如图2 1 0 客 户对异种对象的使用是通过它的视图来进行的。 规范定义了四个部分的映射机制,分别是c o m 到c o r b a 、a u t o m a t i o n 到c o r b a 、 c o r b a 到c o m 、以及c 0 r b a 到a u t o m a t i o n 。随着c 0 m 技术的进一步发展规范将 会定义其他的映射关系。 2 5 2c o m 平台移植 c o m 包括规范和实现两个部分,c o m 规范是平台无关的,c o m 实现却与操作平台 中南大学硬士学位论文 c o m 运行环境及基于c o m 的通信模型的研究 紧密相关,在n d o w s 平台上,c o m 的实现部分以c o m 库o l e 3 2 叫的形式提供。 m i c m s o f t

温馨提示

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

评论

0/150

提交评论