(计算机应用技术专业论文)分布式组件技术的应用研究.pdf_第1页
(计算机应用技术专业论文)分布式组件技术的应用研究.pdf_第2页
(计算机应用技术专业论文)分布式组件技术的应用研究.pdf_第3页
(计算机应用技术专业论文)分布式组件技术的应用研究.pdf_第4页
(计算机应用技术专业论文)分布式组件技术的应用研究.pdf_第5页
已阅读5页,还剩68页未读 继续免费阅读

(计算机应用技术专业论文)分布式组件技术的应用研究.pdf.pdf 免费下载

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

文档简介

摘要 随着计算机技术的高速发展,企业的应用系统和以往相比,有了很 大的进步。企业级的应用不再局限于以往的单机系统或简单的客户端n 务器系统,而是逐渐向着三层、多层体系结构的分布式应用迈进。 分布式组件技术是组件技术和分布式对象技术相结合的产物。组件 技术解决了对象依赖于特定编程语言,只能基于源代码级别重用的问 题。而分布式对象技术将对象调用拓展到了跨进程、跨机器、跨局域 网、甚至跨i n t e r n e t 范围内。利用分布式组件技术,我们可以构建逻辑上 分布的大型分布式应用系统,并可大大降低应用程序中层与层之间的依 赖、开发部署和维护的复杂程度,增强系统的伸缩性,安全性,提高系 统的运行性能,便于团队合作开发。 本文以某国际著名赛马会的帐户管理系统为应用背景,综合运 用n e t 平台下的分布式组件的相关技术,实现了一个典型的适合企业使 用的分布式系统。本文首先介绍了国内外分布式组件技术的发展现状, 分析了当前分布式组件技术的发展特点和趋势。其次,本文研究了分布 式组件技术的工作原理和技术要素,分析比较了现今主流的三个分布式 组件平台:m i c r o s o f t 的n e t 平台,s u n 公司的j 2 e e 规范,以及o m g 组 织的c o r b a 规范。本文选择m i c r o s o f t 的n e t 平台作为主要应用平台, 在介绍了n e tr e m o t i n g 的核心概念之后,着重分析了n e tr e m o t i n g 的 体系结构以及n e tr c m o t i n g 与c o m + 和w e b 月t 务之间的紧密联系。然后 本文遵循r u p 思想和用例驱动的开发方法,严格按照从初始阶段、细化 阶段、构造阶段和交付阶段的过程,综合运用n e t 平台下的分布式组件 技术,实现了该帐户管理系统。最后,本文就一般系统都非常关心的安 全和性能这两方面进行了深入的探讨,并提出了安全性策略和组件负载 平衡策略来解决这两方面的问题。 关键字:c o m + ,n e t 远程处理框架,分布式组件,r u p ,组件负载 平衡 a bs t r a c t a st h ef a s t d e v e l o p i n e n t o f c o m p u t e rt e e h n 0 1 0 9 y , a p p l i c a t i o nd e v e l o p i n go fe n t er p r is e sm a k e sg r e a tp r o g r e s s t h a ne v e r t h e s ee n t e r p r i s e s e a l e a p p l i c a t i o n sa r ea p p l l e dt o n o t o n l ys i n g l ec o m p u t e r or s i m p l e br o w s e r s e r v e r a p p l i c a t i o n ,b u t a l s ot h et h r e e m u l t it i e ra r c h i t e c t u r e g r a d u a l l y d is t r i b u t e dc o m p o n e n tt e c h n o i o g yis t h et o m b i n a t i o no f c o m p o n e n tt e c h n o i o g y a n dd is t r i b u t e d o b j e c tt e e h n o l o g y c o m p o n e n tt e e h n 0 1 0 9 y s o l v e st h e p r o b l e m t h a t o b j e e t s t r i c t l y r e i i e so nac e r t a i n p r o g r a m m i n gl a n g u a g e a n di t s r e u s i n g is o n l y b a s e do ns o ur c ec o d e1 e v e l a n dd is t r i b u t e d o b j e c tt e e h n o l o g ye x t e n d st h er a n g eo fo b j e c ti n v o c a t i o nt o p r o e e ss ,s i n g l em a c h i n e ,l a ne v e ni n t e r n e t b ym a k i n gu s e o f d is t r i b u t e d c o m p o n e n tt e e h n o l o g y ,o u rs y s t e r n c o u l d f i rs t l yb eb u i i to i l l o g i c a l d is t r i b u t e d a r e a s ,s e c o n d l y i t c o u l dd e c r e a s et h e d e p e n d e n c ya m o n g t i e r so ft h e a p p l i c a t i o n s a n dt h e c o m p l e x i t y o fd e v e l o p i n g ,d e p l o y m e n t a n dm a i n t e n a n c e ,a n df i n a l l yi tc o u l dr a i s et h e f l e x i b i l i t y , s e c u r i t ya n dp e r f o r m a n c eo ft h ea p p l i c a t i o n sa n db eh e l p f u l t ot e a m d e v e l o p i n g i n t h i s p a p e r ,t a k e nm a n a g e m e n t o f a c c o u n t s y s t e m a s a p p l i c a t i o nb a e k g r o u n d ,u t i l i z e d w i t h d is t r i b u t e d c o m p o n e n tt e e h n o l o g i e s o n n e t p l a t f o r m a d is t r i b u t e d s y s t e m i s d e v e l o p e d ,w h i c h m i g h t b ef i tf or c u r r e n te n t e r p r i s e s c a l ea p p l i c a t i o n s f i r s to fa 1 1 t h ec h a r a c t e r is t i c sa n dt r e n dso fm a i n s t r e a m d is t r i b u t e d c o m p o n e n tt e c h n o l o g i e s a r e a n a l y z e d a f t er i n t r o d u c i n g t h e irc u r r e n ts i t u a t i o b si nd o m e s t i ca n d i n t e r n a t i o n a l t h e n ,t h ew o r k i n gp r i n c i p l ea n d e le m e n tso f d i s t r i b u t e d c o m p o n e n tt e c h n o l o g y a r es t u d i e da n dt h e d i f f e r e n c e s a m o n g t h et h r e em a i n s t r e a md is t r i b u t e d c o m p o n e n tp l a t f o r m s :m ic r o s o f t s n e t ,s u n s j 2 e ea n d o m g sc o r b aa r e g o t i n t h i s p a p e r m i c r o s o f t s n e tis c h os g na sd e s t i n a t i o np l a t f or m s oa f t e ri n t r o d u e i n gt h ek e y c o n c e p t o f n e t r e m o t i n g ,t h e a r c h i t c c t u r c0 f n e t r e i n o t i n g a n dt h e c 0 n n c c t i v i t y b e t w e e nc o m + a n dw e b s er v i c ea r es h o w n a f t e rt h a t ,a c c o r d i n gt ot h et h o u g h t so f r u pa n dus ec a s ed r i v e na p p r o a c h ,s t r i c t l yf 0 1 1 0 w e db yt h e s t e p s0 fi n c e p t i o n ,e 1 a b or a t i o n ,c o n s t r u c t i o na n dt r a n s i t i o n , t h e m a n a g e m e n t 0 fa c c 0 u n t s y s t e m0 n n e t p l a t f o r m is d e v e l o p e d l a s t l y ,t h es e c u r i t ya n dp e r f o r m a n c ew h i c ho f t e n b ec a r e da b o u ta r ed e e p l yd is c u s s c d ,a n ds e c u r i t yp 0 1 i c ya n d c o m p o n e n tl o a db a l a n c ep o l i c ya r eg i v e na s s 0 1 u t i o n s k e yw 0 r d s :c o m + ,n e tr e m o t i n g ,d i s t r i b u t e dc 0 m p o n e n t r u p ,c o m p o n e n tl o a db a l a n c e 武汉理工大学硕士学位论文 第1 章绪论 1 1 课题研究的目的和意义 随着计算机技术的不断发展,企业的应用系统和以往相比,有了很大的进 步。企业级的应用不再局限于以往的单机系统或简单的客户端j i l l 务器系统,而 是逐渐向着三层、多层体系结构的分布式的组件化应用系统不断迈进。组件化 的软件可以很容易嵌入从第三方组件供应商购买的组件,而这些新购入的组件 大部分是成功应用过的、安全稳定的组件,企业不仅可以借此减少开发成本, 而且大大增强了软件的安全性和可靠性,使得企业都可以集成组装软件系统。 组件不是基于源代码级别的重用,而是基于更高级别的二进制的重用,因其不 依赖于特定的编程语言,大大提高了系统中模块的可复用性和可扩充性。可以 说:组件化开发为应用程序的开发提供了一条崭新的思路,而分布式组件技术 大大拓展了这条新的开发思路。利用分布式的组件技术,我们可以构建跨越单 机、局域网、甚至i n t e m e t 的地理上分布的大型分布式应用系统:利用分布式 组件技术,我们可以非常容易地将应用程序系统进行分层,例如分解成表示 层、中间层和数据库层,这样可以大大降低层与层之间的相互依赖,便于团队 合作开发,降低开发、部署及维护的复杂度。 本课题以某国际著名赛马会( 以下简称马会) 的帐户管理系统m a s ( m a n a g e m e n to fa c c o u n ts y s t e m ) 为应用背景,综合利用n e t 平台下的分布 式组件相关技术,实现了一个典型的适合企业使用的分布式系统。 1 2 分布式组件技术的发展现状和特点 在分布式组件技术领域,国内相比于国外,起步较晚,基础较差,成功的 大型企业级分布式应用案例较少,较多的都仅停留在对国外主流分布式组件技 术的理论研究和逐步应用阶段。而在国外,理论成熟较早,应用和研究都很丰 富,出现了许多成功的应用案例,这些案例囊括了医药、银行业、交通、电信 武汉理工大学硕士学位论文 等几乎各个行业。目前公认的主流分布式组件技术均出自国外:有m i c r o s o f t 公 司的n e t 平台、s u n 公司的j 2 e e 规范和国际对象管理组织o m g ( o b j e c t m a n a g e m e n tg r o u p ) 制定的公共对象请求代理体系结构c o r b a ( c o m m o n o b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ) 规范。 1 2 1 国内分布式组件技术的发展现状 尽管在分布式组件技术领域国内相对国外还有一定的差距。但是,国内在 主流分布式组件技术规范的基础上也研究出了一些令人振奋的分布式组件技 术。 在c o r b a 规范基础上应用的有国防科技大学的s t a r b u s 和东南大学的奥 贝软总线( o r b u s ) 。s t a r b u s 是我国自主开发的第一个遵循9 0 年代国际主流 分布对象技术标准c o i 出a 标准的实用的分布计算软件平台,支持异构条 件下大型网络应用系统综合集成的。将自主创新的面向a g e n t 的分布计算行为 模型与c o r b a2 0 标准遵循的“软总线+ 软构件”的体系结构有机结合,突破 了经典的客户端服务器计算模型的局限。s t a r b u s 在基于网络的分布计算和大型 信息系统中得到实际业务应用,具体包括办公自动化、电信、金融、农业信息 管理和专家系统、石油钻井和军事作战指挥等【l 】。o r b u s1 0 版本是由东南大学 计算机系网络与通信研究室于1 9 9 7 年底自行研制成功的遵从c o r b a 2 0 规范的 面向分布对象计算的网络应用和开发平台。o r b u s 遵从o m g 组织提出的 c o r b a 2 0 规范,支持多种操作系统平台,提供方便、灵活、友好的管理晁面 2 】a 在j 2 e e 规范基础上,金蝶国际软件集团有限公司实现的金蝶a p u s i c 应用 服务器,已成功通过s u n 公司的j 2 e e 应用服务器测试认证,这标志着中国的 中间件产品和技术将在世界j a v a 技术领域中占有重要的一席之地。金蝶a p u s i c 3 0 基于各种现有的被广泛接受的工业标准,包括j 2 e e l 2 和1 3 规范、x m l 相 关规范、w e b 服务相关规范、数据交换以及各种安全方砸的协议和标准,为企 业应用提供了一个可靠、高效的开发、部署和维护平台例。 另外还有科泰世纪科技有限公司的e z c o m 组件技术。e z c o m 是 m i c r o s o f t 的组件对象模型c o m ( c o m p o n e n to b j e c tm o d e l ) 的一个子集,同时 又对m i c r o s o f t 的c o m 进行了重要的扩展。e z c o m 组件与微软的c o m 组件二 进制兼容,但是e z c o m 的开发工具自动实现组件的封装,简化了组件编程的 武汉理工大学硕士学位论文 复杂性,有利于组件化编程技术的推广普及;e z c o m 组件技术是一个实现软件 工厂化生产的先进技术,可以大大提升企业的软件开发技术水平,提高软件生 产效率和软件产品质量;软件工厂化生产需要有零件的标准,e z c o m 组件技术 为建立软件标准提供了参考,有利于建立企业内、行业内的软件标准,有利于 建立企业内、行业内的组件库【4 】。 1 2 2 国外分布式组件技术的发展现状和特点 在国外,分布式组件的应用已十分广泛,在大中型企业的应用解决方案及 电子商务等应用中都有许多成功的案例,且越来越多的国外著名软件供应商都 在他们的产品中支持了主流的分布式组件技术,以便于支持企业级应用和w e b 应用。 1 发展现状 c o r b a 规范出现的最早,早在1 9 9 1 年o m g 组织就颁布了c o r b a l 0 , 现在已经发展到了c o r b a 3 0 。c o r b a 规范的特点就是大而全。互操作性和 开放性非常好。但是c o r b a 规范太庞大,太复杂了,开发工具又相对缺乏, c o r b a 技术和标准的更新速度较慢。严重老化的平台、高度的复杂性,以及 供应商之间一直存在的磨擦都严重地阻碍着这个平台的发展。 j 2 e e 规范下的分布式对象技术通常是指远程方法调用r m i ( r e m o t e m e t h o di n v o e 撕o n ) 和企业级j a v a b e a n ( e n t e r p r i s ej a v a b e a n ,e j b ) 。r m i 提 供了调用远程j a v a 对象的方法的能力,而e j b 框架提供了远程访问、安全、事 务、持久和生命期管理等多种分布对象计算服务。j 2 e e 平台最大的局限性就是 它只支持j a v a 这一种编程语言,它被严格的束缚在j a v a 语言中。目前,j a v a 技 术和c 0 砌 a 技术有融合的趋势。 n e t 平台由m i c r o s o f t 公司开发,由m i c r o s o f t 的w i n d o w sd n a ( w i n d o w sd i s t r i b u t e di n t e r n e ta p p l i e a t i o i la r o h i t e e t u r e ) 平台发展而来,它目前 还在进一步的完善过程中。早在w i n d o w sd n a 平台阶段,就加入了消息通讯 模块m s m q ( m i c r o s o f tm e s s a g eq u e u e ) 和解决事务处理的m t s ( m i c r o s o f t t r a n s a c t i o ns e r v e r ) 等服务,使得w i n d o w sd n a 已经成为了一个比较完整的企 业级开发平台。n e t 平台与w i n d o w s 操作系统结合的非常紧密,效率非常 高。n e t 平台有一系列开发工具的支持,应用开发相对比较简单,最大的缺陷 武汉理工大学硕士学位论文 在于目前只能在w i n d o w s 系列操作系统上运行,跨平台性较差,与l i n u x 等其 他操作系统的结合仍处于研究阶段。 现今,越来越多的人对w e b 服务产生了浓厚的兴趣。这项在h t t p 协议 基础上开发出的一个中间件平台,可以让人们通过w w w 技术,透过 i n t e r a c t ,就能够访问其他企业或应用软件供应商提供在线服务。但是,性能和 安全问题是目前困扰w e b 服务的两个最主要的问题。 2 发展特点和趋势 目前,分布式组件技术的发展呈现出以下几个特点: ( 1 ) 新的组件技术不段涌现 z e r o c 公司的i c e ( i n t e m e tc o m m u n i c a t i o n 8e n g i n e ) 就是一个很好的例子 5 1 。z e r o c 公司针对n e t ,c o r b a ,j 2 e e 均有些这样或那样的不足,z e r o c 公 司开发了i c e 平台,i c e 是一种面向对象的中间件平台。i c e 为构建面向对象 的客户端服务器应用提供了工具、a p i 和库支持,i c e 应用适合在异构环境中 使用。客户和服务器可以用不同的编程语言编写,可以运行在不同的操作系统 和机器架构上,并且可以使用多种网络技术进行通信。无论部署环境如何,这 些应用的源码都是可移植的。 ( 2 ) 各组件平台能够轻易互访 为了令n e t ,j 2 e e ,c o r b a 这三个主流平台之间互相通信,许多公司和 机构推出了许多连接互访方案。 如,开源项目i i o p n e t ,可以令n e t ,j 2 e e ,c o r b a 三个平台无缝连 接。j 2 e e n e t 解决方案,用j a v a 语言实现了n e t 框架,为j 2 e e 和n e t 平台 的互访,提供了很好的支持。还有如i n t r i n s y e 的j a n e t 和来自j n b r i d g ei n c 的 i n b r i d g e p r o 。也能在不同程度上实现j 2 e e 和n e t 平台之间的互访。 ( 3 ) 各组件平台与w e b 服务的互访 n e t 可以直接支持w e b 服务,并可以用n e t 远程处理框架( n e t r e m o t i n g ) 的h r r p 通道高速访问w e b 服务。j 2 e e 支持w e b 服务,支持 x m l r p c ,j a x - r p c 。各c o r b a 服务提供商也都提供了对w e b 服务的支 持,如i o n a 公司的x m l b u s 就是一个很好的例子。总之,各个组件平台都陆续 推出了自己与w e b 服务互连的解决方案。 ( 4 ) c o r b a 和j a v a 的融合之势【q 武汉理工大学硕士学位论文 c o r b a 扩展了j a v a 应用的范围,使其跨越网络、语言、组件边界和操作 系统应用的范围,通过一套丰富的分布式服务( 例如分布式自省、动态发现、 事务、关系、安全性和命名) 对j a v a 进行非常丰富的扩充。而j a v a 语言简化了 大型c o r b a 系统的代码发布,j a v a 字节码使我们可以将对象到处发布,这为 c o r b a 代理开辟一个广阔的新天地。j a v a 可以让c o r b a 对象运行在从主 机,网络计算机甚至移动电话的任何环境中。j a v a 几乎成了编写客户和服务器 c o r b a 对象的最理想的语言。它内置的多线程、垃圾收集和出错管理使得它 更便于编写健壮的网络化对象。 总之,c 0 r b a 负责网络的透明性,而j a v a 则负责实现的透明性。两者都 找到非常好的融合点,两者越来越显出融合之势。 1 3 本论文的研究内容 本文以某国际著名赛马会的帐户管理系统为应用背景,综合运用n e t 平 台下的分布式组件的相关技术,实现了一个典型的适合企业使用的分布式系 统。全文分六个部分,其主要内容安排如下: ( 1 ) 绪论 本章主要介绍了国内外分布式组件技术的发展现状,分析了当前分布式组 件技术的发展特点和趋势。 ( 2 ) 分布式组件技术 本章主要研究了分布式组件技术的工作原理和技术要素,分析比较了现今 主流的三个分布式组件平台:m i c r o s o f t 的n e t 平台,s u n 公司的j 2 e e 规范, 以及o m g 组织的c o r b a 规范。 ( 3 ) n e t r e m o t i n g 技术 本文选择m i c r o s o f t 的n e t 平台作为主要应用平台。本章在介绍了n e t r e m o t i n g 的核心概念之后,着重分析了n e tr e m o t i n g 的体系结构以及n e t r e m o t i n g 与c o m + 和w e b 服务之间的紧密联系。 ( 4 ) 设计实例 本文所述实例遵循r u p 思想和用例驱动的开发方法,严格按照从初始阶 段、细化阶段、构造阶段和交付阶段的过程。通过综合运用n e t 平台下的分布 式组件技术,实现了该帐户管理系统。 武汉理工大学硕士学位论文 ( 5 ) 关键技术 本章就一般系统都非常关心的安全和性能这两方面进行了深入的探讨,并 提出了安全性策略和组件负载平衡策略来解决这两方面的问题。 ( 6 ) 结束语 本章概括全文,得出本文的结论。 武汉理工大学硕士学位论文 第2 章分布式组件技术 分布式组件技术是组件技术和分布式对象技术结合的产物。最初,对象局 限于源代码级别的重用,依赖于特定的编程语言,为了达到基于二进制级别的 重用,就产生了组件技术。而为解决组件对象只能在本地进程地址空间内访问 的问题,分布式对象技术应运而生。分布式对象技术将对象的访问扩展到了跨 进程、跨机器、跨局域网、甚至跨i n t e m e t 范围内。 2 1 分布式组件技术基本原理和技术要素 分布式对象计算技术是面向对象技术和客户服务器模型技术相结合的产 物。分布式系统对象计算是指具有能够调用运行在不同的地址空间、不同机器 或者是不同网络中的其他应用程序功能的程序或应用软件。分布式对象技术允 许在不同机器上的对象相互传递消息,应用程序可以通过网络与其它对象应用 程序互访。客户无需了解服务器对象是用哪种语言编写的、运行在何种操作系 统或硬件平台上,也无需知道它存放在系统的什么地方,只要知道对象的名字 和对象提供的标准接口,便可使用该对象。 图2 1 给出了一般的分布式对象技术的结构图。 图2 1 分布式对象技术结构图 武汉理工大学硕士学位论文 远程方法调用的一般过程为:首先,客户端向客户代理对象发出远程方法 调用请求,客户代理对象将方法名称,参数等列集( m a r s h a l ) 后,发送到网络 上,传送给服务器端的服务存根对象。待服务存根对象从网络上接收到数据, 并散集( u n m a r s h a l ) 出方法调用信息后,服务存根对象才调用服务器上真正的 业务组件的方法。调用执行完成后,结果返回给服务存根对象。服务存根对象 将执行结果列集后通过网络传送给客户代理对象,执行结果到达客户代理对象 后,由客户代理对象散集出执行结果后,返回给客户端。这样,一个远程方法 调用就结束了。图中的监理对象一般是指由分布式组件平台提供的类库或工 具,主要用于协调通讯,包括转发请求,传输结果和异常等功能。调用过程如 图2 - 2 所示: 图2 , 2 分布式对象调用过程 首先,服务器端s e r v e r 启动( s t a r t u p ) 后,需要将所有的服务注册 ( r e g i s t e r _ s e r v i c e ) 到监理b r o k e r 上。客户端c l i e n t 如要想调用远程方法 m e t h o d 。首先,客户代理c f i e n t - s i d ep r o x y 从b r o k e r 上查找服务位置 ( 1 0 c a t e _ s e r v e r ) ,得到服务所在服务器的地址和端口后,列集( m a r s h a l ) 调用 武汉理工大学硕士学位论文 参数,向服务存根s e r v e r - s i d es t u b 发出调用申请( r e c e i v e 。然后,服request) 务存根s e r v e r s i d es t u b 散集( u n m a r s h a l ) 调用参数,调用服务器上的真正业务 方法m e t h o d ,执行完后,将结果r e s u l t 返回给服务存根,服务存根将结果列集 通过网络发送给客户代理。最后由客户代理散集出执行结果,返回给客户端, 这样,一个完整的调用就完成了。 下面我们来分析一下分布式组件技术的技术要素。一个分布式组件技术平 台,需要解决如下几个问题: ( 1 ) 通信机制:由于远程对象根本不在本地进程地址空间上,对象之间 的方法的调用,参数的传递,结果的返回等都需通过网络来传输,所以分布式 组件技术需要一个健壮的,透明的,独立于平台的通信机制。 ( 2 ) 统一的接口:组件不是基于源代码级别的熏用,而是基于二进制级 别的重用,所以要求有一种不依赖于任何编程语言的接口描述方法来统一服务 器组件的接口,便于客户端的调用。 ( 3 ) 生命周期管理:如何发现定位,创建,以及销毁远程组件,这一系 列的过程,需要有一个完整的生命周期管理机制的支持。 ( 4 ) 方法和参数的传递:由于在网络上传输的都是二进制数据,所以需 要将方法名称,参数等信息转换成易于在网络上传输的网络数据格式,这个过 程就是列集( m a r s h a l ) 。相反,从网络数据格式的数据中,提取出对象能够识 别的方法名称,参数等信息的过程就是散集( u n m a r s h a l ) 。 ( 5 ) 高级服务:如安全性,事务处理,负载平衡,持久性,以及发布与 配置等服务。 2 1 1通信机制 对于个分布式组件模型,首先要为模型提供一个独立于协议和平台的健 壮的、透明的、独立于平台的通信机制。通信机制要对网络协议具有很强的适 应能力,要求支持t c p i p 、u d p 等主流网络协议,能够跨越平台的限制,支持 多种操作系统。通信机制不仅要提供进程内的通信,还要提供进程外通信:不 仅要支持同步的通信,还要支持异步的通信。 1 同步通信 同步远程方法调用( s y n c h r o n o u sr e m o t ep r o c e d u r ec a l l ) 是一种同步的、 面向连接的通信机制。客户端发出远程方法调用请求之后,阻塞并等待响应的 武汉理工大学硕士学位论文 返回。经过从客户端、客户代理、服务存根到服务器,然后按原路返回。经过 这样一个流程后,客户端才能得到执行结果,客户端的调用才能往下继续。 在c o m + 中提供了基于远程对象调用的o m c ( o h j e c tr e m o t ep r o c e d u r e c a u ) 协议,该通信协议在d c er p c 基础上建立起来,支持t c p i p 、u d p 、 i p x s p x 以及n e t b i o s 协议,支持w i n d o w s 、a p p l em a c i n t o s h 以及一些u n i x 版本【7 1 。 2 异步通信 在同步通信中,客户每次做出调用时,都要等待服务器组件的响应,这就 要求服务器组件一直处于可用状态。如果远程服务器关闭了,客户无法保证方 法调用成功,客户要么继续重试,要么放弃。而且当客户做出的方法调用越 多,网络越拥挤,应用程序的响应也就越慢。倘若客户等待很长时间,容易误 认为调用失败,这显然不是我们愿意看到的。 异步远程方法调用( a s y n c h r o n o u sr e m o t ep r o c e d u r ec a l l ) 是对同步远程 方法调用的扩展i 羽。客户端发出远程方法调用请求后,并不急于等待响应返回 而阻塞在调用处,而是继续执行客户端的操作。等执行结果正常返回后,自然 会被接收。这种通信机制特别适合于当接受请求方不在线时,且响应无需立即 返回的情况。 在c o m + q b ,m s m q ( m i c r o s o f tm e s s a g eq u e u e ) i e 是为异步通信机制而设 计的 9 1 。据此,我们可以开发能够通过消息实现彼此间异步通信的分布式组 件。m s m q 消息可以包含任何数据,只要发送者和接收者必须保持数据格式一 致,m s m q 消息还可以参与事务处理。c o m + 中,提供了队列组件q c ( q u e u e dc o m p o n e n t ) 服务,这种服务就是使用m s m q 基础机制来支持异步 通信的。 2 1 2接口定义 组件不是源代码级别的重用,而是基于二进制级的重用,所以要求具有一 种不依赖于任何编程语言的接口描述方法来统一服务器组件的接口,便于客户 端的调用。通常的方法是采用接口定义语言i d l ( i n t e r f a c ed e f i n e l a n g u a g e ) ,用它作为组件对象和客户程序之间的共同语言。1 d l 应提供许多 的数据类型、接口和模块,且可以和c + + 或j a v a 等编程语言对应起来。通过针 对某种编程语言的生成工具,可以将i d l 定义转化成该编程语言定义的代码。 武汉理工大学硕士学位论文 一般,编写列集和散集代码非常复杂,为了让客户端不必处理过多的通信细 节,保证通信的准确和高速,所以通常由接口生成工具负责生成客户代理和服 务存根的代码和列集,散集的代码【1 0 】。 c o m 规范中用i d l 来定义接口,并提供了m i d l 工具来生成代码。需要 一提的是,n e t 对象的客户使用n e t 反射( r e f l e c t i o n ) 机制,来获得对象的 方法、属性等功能描述。 2 1 3 生命周期管理 1 组件标识i “1 一般来说,组件的位置对客户应该是透明的,由于要保持接口与实现分 离,大多数的业务组件都是在服务器端实现的。客户端如何才能找到要访问的 组件呢? 通常都是采用目录服务机制来定位组件【1 2 1 。 对象目录是负责存储对象引用和一些与引用相关联的描述性数据。标识组 件是为组件提供一个对象标识符。利用该对象标识符,就能在对象所在的服务 器上唯一确定该对象。当然,在若干服务器上,不同的对象具有相同的对象标 识符也是允许的。所以对一个组件的完整的引用信息,不仅要包括组件的标识 符,而且需要包括组件所在服务器的地址,端口等相关信息。 在c o m 中,采用了1 2 8 位全局唯一标识符q u i d ( g l o b a lu n i q u e i d e n t i f i e r ) ,这是一个随机数,尽管不能绝对保证唯一性,偿发生标识符相熏 的可能性非常小。从理论上讲,如果一台机器每秒产生1 0 0 0 0 0 0 0 个g u i d ,则 可以保证3 2 4 0 年不重复。这些信息都是存储在w i n d o w s 注册表里面的u ”。 c o m + 也提供了两种不同的存储方式来存储组件的所有配置信息。即: w i n d o w s 注册表和c o m + 注册数据库( c o m + r e g i s t r a t i o nd a t a b a s e ,简称 r 雒p b ,也可称为c o m + 目录) 。为了便于配置组件,c o m + 提供了一个名为 目录管理器( c a t a l o gm a n a g e r ) 的组件,专门用于管理和配置这个c o m + 目录 1 4 】。 2 类工厂和远程对象 现在,我们已经有了如何定位组件的方法、组件之间的本地和远程方法调 用模型,但是如何才能创建一个远程组件对象,得到远程对象的引用昵? 这就 要借助予类工厂对象c l a s s f a c t o r y 。 武汉理工大学硕士学位论文 类工厂是一个专门用于创建其他对象的对象。在本机过程调用中,因为新 创建的对象和使用该对象的对象是在同一地址空间,使用操作符n e w 就可以完 成对象的创建。但是到了分布式环境中,新创建的对象和使用该对象的对象是 位于不同的地址空间,常规语言的n e w 操作是行不通的,所以要借助类工厂的 帮忙。首先,客户端通过网络,预先指定类工厂的数据类型,在服务器端创建 好一个类工厂的实例,然后将该类工厂的一个间接弓l 用返回给客户端。客户端 得到该类工厂的引用后,就可以创建任何想要的类对象了。不过,客户端得到 的引用是远程对象的间接引用,而非直接引用。 3 垃圾回收机制 远程对象引用是实际业务组件对象的一个间接引用,所以需要用特殊的方 法来释放对象。 在n e t 中,通常的做法是采用垃圾回收器g c ( g a r b a g ec o l l e c t i o n ) 来完 成。垃圾回收器是n e t 中的内存管理机制。垃圾回收器负责跟踪和回收托管内 存中分配的对象,定期或当不能获得足够的内存来响应分配请求时,垃圾回收 器会进行垃圾回收。n e t 的垃圾回收器把堆逻辑地分成了三代:0 代 ( g e n e r a t i o no ) ,1 代( g e n e r a t i o n1 ) ,2 代( g e n e r a t i o n2 ) 。0 代对象是新 创建的还没有经过1 次垃圾回收循环的对象。1 代对象是经过1 次垃圾回收循 环后保存下来的对象。2 代中的对象已经经过了至少2 次垃圾回收循环,被视 为是最老的对象。垃圾回收过程发生时,垃圾回收器首先查看0 代对象以查找 任何可以清除的无用存储单元。如果垃圾回收器能够从对0 代对象的回收过程 中重新获得足够的空间,就不会向较老的对象回收。当仍没有足够内存来响应 分配请求时,垃圾回收器会工作到0 代、1 代和2 俐”j 。 2 1 4 列集和散集 列集和散集是指客户进程可以透明地调用另一进程中的对象成员函数的一 种参数处理机制。方法名称,参数等信息需要跨越网络,传送到目的地,所有 这些信息需要被转换成网络数据格式的数据,这个过程就是列集。这种网络数 据格式的数据,更易于在网络上传输,他们可以将数据通过一种跨进程的数据 传输方法,如共享内存,甚至是网络协议方式轻松地传送到目的地。 散集是与列集相反的过程。散集能够从网络数据格式的数据中提取出对象 能够识别的方法名称,参数等信息。 武汉理工大学硕士学位论文 在列集和散集的过程中,不同的参数列集处理也是不同的。对于一般的基 本数据类型,如整型、字符型,列集散集过程就比较简单。对于3 2 位的整数, 只要把4 字节的数据顺序地装到数据包中或者从数据包中取出来即可,字符串 或结构体类型的数据列集过程也可以按此方法处理。但对于指针( 引用) ,处 理就要复杂一些。指针本身是一个指向某种数据类型的地址,一个进程内的地 址对于另一进程而言是没有意义的,所以仅仅传递指针本身并没有用,要传递 的是指针所指向的数据。对指针的列集过程是:列集时,把指针所指的数据装 到数据包中,发送出去;散集时,在进程中分配一块内存,把接收到的数据包 中的数据拷贝到新分配的内存中,这块新分配的内存地址就是我们需要的散集 后的地址( 引用) 0 6 。 如果函数的参数中包含了指向接口的指针,则情形要复杂的多。幸好,这 些散集列集的代码的生成,我们都可以交给接口生成工具来完成。 2 1 5 高级服务 1 安全性 几乎所有的企业应用都非常关注安全方丽的问题,分布式组件也不例外。 一般来说,系统必须确保只有被授权的用户角色才能访问系统,这些用户 角色的权限不尽相同,一部分角色比其他角色拥有更高权限,且能控制其他角 色的权限;系统必须能对这些用户进行校验,以确保他们的身份符合访问要 求;当计算机之间需要交流敏感信息时,系统应能够提供密码技术以防止黑客 盗取或破坏信息。 c o m + 提供了一个完整的基于角色的安全性策略模型,它与w i n d o w s 操 作系统的安全策略结合的非常紧密。我们可以通过控制c o m + 目录来配置 c o m + 的安全性设置,既可以通过组件服务控制台工具配置,也可以通过编程 来配置。 2 事务处理 任何事务处理,都具有四个基本的特征:原予性( a t o m i c ) ,一致性 ( c o n s i s t e n t ) ,隔离性( i s o l a t i o n ) ,持久性( d u r a t i o n ) 。原子性:事务处理 代表了一种要么完全成功,要么完全失败的工作单元。一致性:说明事务处理 必须以处于一致状态的数据开始,并且以处于一致性状态的数据结束。隔离 性:说明同时发生的事务处理必须不能相互看到和干涉彼此的工作。持久性: 武汉理工大学硕士学位论文 说明事务处理一旦提交,其数据必须永久保存起来,不怕电源断电等情况发 生。 事务的存在是非常有必要的。在某些情况下,应用系统需要用到几个数据 库管理系统,一次事务处理可能需要更新多个数据库,然而如果某个数据库更 新成功,对另一个数据库的更新却失败的话,系统会进入一个不确定的状态。 为了防止丢失修改、不可重复读和脏读等情况的发生,在c o m + 中加入的 m t s ,为组件提供了非常强大的事务处理功能。组件的事务处理属性既可以在 组件服务控制台工具中设置,也可以通过使用函数s e t c o m p t e t e 或s e t a b o r t 等 编程来设置。事务处理属性可以设置为如下的值: d i s a b l e d :从不运行于c o m + 事务处理内的组件。具有该属性的组件是非 事务处理性的。 n o ts u p p o s e d :这是运行于c o m + 种的组件的缺省值。该属性告诉运行 库此组件不支持事务处理。如果组件通过调用s e t c o m p l e t e 或s e t a b o r t 选择事 务处理,这些选择也不会计入事务处理的结果。具有该属性的组件是非事务处 理性的。 s u p p o r t e d :具有该属性的组件可在客户的事务处理中创建。如果客户未 运行于事务处理中,组件就不会在事务处理中运行。具有该属性的组件是事务 处理性的。 r e q u i r e d :该组件要求运行于事务处理中。如果存在这种组件的话,该组 件运行于调用者的事务处理中。如果调用者未运行于事务处理中,就会创建一 个新的事务处理。 r e q u i r e sn e w :该组件必须总是创建于一个新的事务处理中,而不管其调 用者的事务

温馨提示

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

评论

0/150

提交评论