(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf_第1页
(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf_第2页
(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf_第3页
(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf_第4页
(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机软件与理论专业论文)基于soap的分布式对象调用机制的研究.pdf.pdf 免费下载

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

文档简介

海交通 学硕:1 :学位论文 基于s o a p 的分布式对象调用机制的研究 摘要 1 分布式对象系统的应用范围已经扩展到i n t e m e t 之上,企业之 间现肴的软件构件需要实现相互通信。d c o m 和c o r b a 是两种最 常用的分布式对象系统,它们在局域网内工作良好,当扩展到i n t e m a 时,会出现防火墙不友好、过分依赖环境等缺陷。同时由于两种不同 系统的接口标记、网络数据表示格式等都不相同,所以这两种系统相 互之间很难实现互操作,而互操作的核心问题就是如何传递远程过程 调用消息。 x m l 和s o a p 技术的产生和发展使i n t e m e t 上分布式对象之间 的互操作成为可能。x m l 是一种标记语言,可以通过定义标记达到 数据的标准化、结构化表示。s o a p 以x m l 语言的形式提供了一个 简单、轻量的用于在分散或分布环境中交换结构化和类型化信息的机 制。s o a p 消息与h t t p 协议绑定后,可以成为i n t e m e t 上分布式对 象之间的远程过程调用协议,从而达到不同系统之间互操作的目标j - 上一“ 本文首先详细描述了如何用x m l 语言描述分布式对象的接口 以及如何将对象发出的远程过程调用请求和请求应答消息转换为 s o a p 消息格式,并给出了s o a p 消息与h t t p 协议绑定后h t t p 包 的具体格式。接着,本文设计了一个基于s o a p 的分布式对象互操作 系统f s b r i d g e 中间件系统。s b r i d g e 采用s o a p 作为传输协议,x m l 作为数据表示格式,有效解决了现存的两种分布式对象系统之间的不 兼容。s - b 蓼i d g e 中间件系统的功能主要是传递对象发出的远程过程调 用消息。y 本文从传统分布式对象系统间远程过程调用流程入手,分析 了当请求调用消息以s o a p 消息格式在i n t e m e t 上传输时,中间件系 统应该考虑的问题。本文详细描述了s - b r i d g e 中间件系统的设计目 标、体系结构、工作原理和工作模式。f s b r i d g e 中间件系统采用了同 步通信模型、模块化设计方案、针对不问的对象类型开发不同的对象 诲交姐人学硕j :学位论文 适配层,当开发出足够多类型的对象适配模块后,s - b r i d g e 中间件系 统将能获得真正的互操作性。s - b r i d g e 中间件系统提供了a p i 函数供 客户程序调用,使用s - b r i d g e 后,分布式对象客户端程序需要做出修 改,但是服务器端对象不用作任何改动。此外,s - b r i d g e 中间件系统 要求消息能够在i n t e m e t 上可靠的传输,而h t t p 协议并不能提供这 种控制,) 本文提出了一种在应用层保证可靠传输的机制,即在s o a p 消息中携带可靠传输控制信息。最后,本文将s - b r i d g e 中间件系统与 d c o m c o r b a 分布式对象系统、其他分布式对象互操作系统以及新 的w e bs e r v i c e 架构作了简单的比较。( 比较结果显示,s - b r i d g e 中间 件系统可以作为分布式对象系统互操作解决方案。厂y 一 关键词:x m l ,s o a p ,s - b r i d g e 中间件系统,远程过程调用 上海交通大学硬l 学位论文 r e s e a r c ho i ls o a p b a s e d r e m o t ep r o c e d u r ec a l lm e c h a n i s mo fd i s t r i b u t e d0 b j e c t s a b s t r a c t w i t ht h ed e v e l o p m e n to fi n t e m e tt e c h n o l o g y , t h ee x i s t i n gs o f t w a r e c o m p o n e n t s i n e n t e r p r i s e s s h o u l dc o m m u n i c a t ew i t he a c ho t h e rv i a i n t e m e t d c o ma n dc o r b aa r et w o p o p u l a r d i s t r i b u t e do b j e c tm o d e l s t h e yw o r kw e l li ni n t r a n e t ,b u tw h e ne x t e n d e dt oi n t e r n e t ,t h e r ew i l lb e s o m e p r o b l e m s s u c ha sf i r e w a l l u n f r i e n d l y , m o r ed e p e n d e n c e o n e n v i r o n m e n ta n ds oo n t h ei n t e r f a c ei d e n t i f i e ra n d 也en e t w o r kd a t a r e p r e s e n t a t i o nf o r m a t o fd c o ma n dc o r b aa l en o tt h es a m e t h u st h e t w o t y p e so f d i s t r i b u t e do b j e c tm o d e l sc a nh a r d l yi n t e r - o p r e a t ew i t he a c h o t h e r a n dt h em a i np r o b l e mo fi n t e r o p e m b i l i t yi sh o wt ot r a n s f e rt h e r p cc a l l s w i t ht h ee m e r g e n c eo fx m la n ds o a p t e c h n o l o g y , i ti sp o s s i b l et o g e ti n t e r o p e r a b i l i t yo fd i s t r i b u t e do b j e c t s x m li s am a r k u pl a n g u a g e , a n dw ec a nd e f i n eo u ro w n t a g st os t a n d a r d i z ea n ds t r u c t u r i z et h ed a t a r e p r e s e n t a t i o n s o a p i sa l i g h t w e i g h tp r o t o c o l f o r e x c h a n g e o f i n f o r m a t i o ni nad i s t r i b u t e de n v i r o n m e n ta n di ti sa nx m lb a s e d p r o t o c 0 1 u s i n gs o a p h t t p b i n d i n g c a ne n c a p s u l a t ea n d e x c h a n g er p c c a l l sv i a i n t e r n e t t h i st h e s i sf i r s td e s c d b e s r e p r e s e n t a t i o n o f 也ei n t e r f a c eo f d i s t r i b u t e do b j c o t s ,c o n v e r s i o no fr p cc a l l st os o a p m e s s a g e ,a n dt h e f o r m a to fs o a ph t i p b i n d i n g t h e n t h i st h e s i sd e s i g n sas o a p b a s e d m i d d l e w a r es y s t e mn a m e ds - b r i d g e w h i e hc a nt r a n s f e rr p cc a l l so f d i s t r i b u t e do b j e c t s s b r i d g eu s e ss o a p a st m n s f e r p r o t o c o la n d x m l 髂 d a t ar e p r e s e n t a t i o nf o r m a t t b em a i nf u n c t i o no fs - b r i d g ei st ot r a n s f e r r p cc a l i so fd i s t r i b u t e do b j e c t s t h i st h e s i sd e s c r i b e st h ed e s i g ng o a l , a r c h i t e c t u r e p r i n c i p l ea n dw o r k i n g m o d eo f s - b r i d g ei nd e t a i l s - b r i d g e m i d d l e w a r es y s t e mi sas y n c h m n o u ss y s t e m p a r t i c u l a r l y , i no r d e r t o i :海交通大学砸:i :学位论文 a c h i e v et h eb e s ti n t e r o p e r a b i l i t y , i td e v e l o p so b j e c ta d a p t e rf o re a c h t y p e o fo b j e c t m e nm o r ea n dm o r et y p e so f o b j e c ta d a p t e r sa r ed e v e l o p e d s b r i d g e c a l lb eu s e dj nd i f f e r e n t o p e r a t i n gs y s t e m sa n di n d i f f e r e n t d i s t r i b u t e d o b j e c tm o d e l s s b r i d g ep r o v i d e s s o m ea p i sf o rc l i e n t p r o g r a m s o n l yt h ec l i e n tp r o g r a m sn e e ds o m em o d i f i c a t i o n sw h i l et h e e x i s t i n go b j e c t s i nt h es e r v e rs i d ed o n tn e e dw h e nu s i n g s - b r i d g e f u r t h e rm o r e w ep r o p o s e sam e c h a n i s mf o rr e l i a b l et r a n s f e ro nh t t p p r o t o c o lw h i c hp r i n c i p l ei st oc a r r yr e l i a b l ec o n u o ii n f o r m a t i o ni ns o a p m e s s a g e a tl a s t t h i st h e s i sc o n t r a s t ss b d d g em i d d l e w a r es y s t e mw i t h d c o m c o r b ad i s t r i b u t e do b j e c tm o d e l s o t h e ri n t e r - o p e r a t es y s t e m s a n dw 曲s e r v i c ea r c h i t e c t u r e t h er e s u l ts h o w st h a ts b r i d g em i d d l e w a r e s y s t e m i san e ws o l u t i o nf o ri n t e r - o p e r a t i o no fd i s t r i b u t e do b j e c t s k e y w o r d s :x m l ,s o a p ,s - b r i d g e m i d d l e w a r e s y s t e m ,r p c c a l l s 上海变通大学预:f :学位论文 第一章概述 在企业内部的h t r a n e t 上,存在着大量的软件构件。人们使用软件构件的目的 是为了充分利用已有的软件,达到快速构造应用程序的目的,以节省时间和经费, 提高工作效率,并且产生更加规范、更加可靠的应用软件。它们主要的有以下两种 模型:c o r b a 和d c o m 。这些软件构件即为本文中讨论的分布式对象。 1 1 分布式对象模型简介 1 1 1c o r b a c o r b a 的体系结构由下到上分为四个主要层次:1 ) 对象请求代理( o b j m r e q u e s tb r o k e r ,简称o r b ) 定义了对象总线,是c o r b a 的最底层。2 ) 通用对象 服务( c 0 m m o n 0 b j e c ts e r v i c e ,简称c o s ) 定义了系统级的框架,用以扩展对象总 线。3 ) 通用设备,定义了水平和垂直的对象框架,他们直接被商用对象所使用。4 ) 应用对象是指商业对象和应用程序,它们是c o r b a 下层建筑的最终使用者。 一个c o r b a 构件采用i d l 语言进行描述。c o r b a 提供了i d l 到c 、c + + 、 j a v a 、c o b o l 等语言的映射机制一i d l 编译器。i d l 编译器可以生成s e r v e r 方的 s k e l e t o n 和c l i e n t 方的s t u b 代码,通过分别与客户端和服务端程序进行联编,即可 得到s e r v e r 和c l i e n t 程序。 o r b 是c o r b a 体系的核心。它处于c o r b a 的最底层。o r b 的最主要的功 能是提供面向对象的远程调用:当上层的某个对象调用了另一个对象的方法,o r b 将调用的参数打包,通过网络传送,找到被调用对象,并执行应答的方法然后将 结果数据打包,返回给调用者。这样x t 9 2 _ 间的调用可以在完全对网络透明的环 境中进行。 c o r b a 是一种语言中性的软件构件模型,它绘出的是接口规范,而不是具体 实现。 互联网上c o r b a 的通信标准是h o p ( i n t e r a c ti n t e r - o r bp r o t o c 0 1 ) ,不同厂商 的o r b 只要支持i i o p 就能相互通信 o m g2 0 0 0 。 ! :塑皇磐叁堂型! ! :堂竺堕竺 d c o m 是m i c r o s o f t 与其他业界厂商合作提出的一种分布式构件对象模型 ( d i s t r i b u t e d c o m p o n e n t o b j e c t m o d e l ) 。d c o m 起源于动念数据交换( d d e ) 技术 通过剪切,粘贴( c u t p a s t e ) 实现两个应用程序之间共享数据的动态交换。对象连接 与嵌入o l e 就是从d d e 引伸而来的。 随后,m i c r o s o f t 引入了构件对象模型c o m ,形成了c o l d 对象之问实现互操 作的二进制标准。c o m 规定了对象模型和编程要求使c o m 对象可以与其他对象 相互操作。c o m 使得对象之自j 的通信能够以一种完全透明的方式进行,它截取从 客户进程来的调用并将其传送给另一进程中的组件。这些对象可以用不同的语言实 现,其结构也可以不同。 当客户进程和组件位于不同的机器时,d c o m 用网络协议来代替本地进程之问 的通信【汪2 0 0 0 】。 从c o r b a 的观点来看,我们可以孝h 略地说,c o m 组件与d c o m 的关系相当 于c o r b a 构件与o r b 的关系。在公共服务方面,微软提出了自己的事务服务器 m t s ( m i c r o s o rt r a n s a c t i o ns e w e r ) 和消息队列服务器m s m q ( m i c r o s o f lm e s s a g e q u e u es e r v e r ) 。前者与c o r b a 对象事务服务目标类似,后者则是为了保证应用之 间进行可靠的消息通讯和管理。 1 2 分布式对象调用机制和存在的问题 1 2 1 分布式对象调用机制 分布式对象之间的调用方式主要有两种:r p c :允许应用象调用本地进程一样 来调用远程过程;o r b :允许应用象调用本地对象一样来调用远程对象提供的服务。 在本文中,对这两种调用方式将不作区别,统一称为远程过程调用( r p cc a l l s ) 。 在九十年代产生的面向对象r p c ( o r p c ) 1 办议把面向对象和网络协议联系起 来。o r p c 和r p c 协议的主要不同是o r p c 优化了从通信端点到对象的映射。在 每个o r p c 请求的头中都有一个定位信息,服务器端的程序能用它来定位在服务器 进程中的目标对象。 目前两个主要的o p r c 协议是d c o m 和c o r b a 的i n t e m e ti n t e r - o r b p r o t o c o l ( h o p ) ( 将来j a v ab e a n 的r m i 体系将建立在h o p 之上) 。d c o m 和 i i o p g i o p 的请求格式非常相似。两个协议都用一个对象端点d 柬确定目标对象 用方法标识符来决定调用哪个方法。这两个协议主要有两点不同:主要的一点不同 是采用i i o p g i o p 时,接口标识符是隐含的,因为一个给定的c o i 璩a 对象只实现 2 海交通人学i i i i j 学位论文 一个接口( o m g 当前正在进行每个对象有多个接口支持的标准化工作) 。d c o m 与 i o p g i o p 请求的另一个差别是在传输体中参数值的格式。在d c o m 中,传输体用 网络数据表示( n d r ) 的格式来写,在i i o p g i o p 中传输体用公共数据表示( c d r ) 的格式来写。n d r 和c d r 分别处理在各种平台上的不同的数据表达。但是在这两 种格式之间有一些小的差别,这使它们相互之间并不兼容。 在o r p c 与r 】) c 协议之间的另一个重要的不同是通信端点的命名方式。在 o r p c 协议中对于o r p c 端点的一些可传递的表达方式被要求在网络之问传递对 象引用。在c o r b a i i o p ,这个表达方式被称为可交互的对象引用( i o r ) 。i o r s 包含用紧凑格式表达的寻址信息,使用了它任何c o r b a 产品都可以决定一个对象 端点。在d c o m 中,这种表达方式被称为o b j r e f ,它组合了分布的引用计算和端 点,对象标识。c o r b a 和d c o m 都提供了在网络上寻找对象端点的高级机制,但 最终这些机制都映射回到了1 0 黜或o b j r e f s 【1 9 】。 1 2 2d c o m i i o p 在i n t e r n e t 上使用时存在的问题 分布式对象领域事实上已经分为两大阵营m i e r o s o r 的d c 0 m 以及m i c r o s o f t 之外的c o r b a 或j a v ar m i 。他们都使用自己的r p c 协议。这两大对立阵营的系 统之间的交互是很困难的,虽然有公司开发了d c o m c o r b a 桥,但是在实际部署 和实施时会耗费大量的人力和财力。 d c o m 的运行平台有很大的限制,在m a c o s n t 3 5 1 ,v a n i l l a w i n 9 5 ,w i n c e 2 及其以下版本中无法使用和配置d c o m ,在u n i x ,m v s ,v m s 等系统中需要安装 特别的而且价格昂贵的模块以支持d c o m 。而运行i i o p 需要o r b 的支持而o r b 的价格往往是根昂贵的。 d c o m 和c o r b a i i o p 都是依赖于单个厂商的解决方案来最大优势地使用协 议。尽管两个协议都在各种平台和产品上被实现了,但现实是选定的发布需要采用 单一厂商的实现。在d c o m 的情况下,这意味着每个机器要运行w i n d o w sn t 。在 c o r b a 的情况下,这意味着每个机器要运行同样的o r b 产品。让两个c o r b a 产 品用h o p 相互调用是有可能的但是许多高级的服务( 如安全和事务) 此时通常不 是可交互的。而且,任何专门厂商为同样的机器的通信所作的优化很难起作用除 非所有的应用披建立在同一个o r b 产品上。 d c o m 和c o r b a i i o p 都依赖于周密管理的环境。两台任意的计算机使得 d c o m 或h o p 在环境之外被成功调用的几率是根低的。特别是在考虑安全性的时 候尤其是这样。 卅变通人学顺l j 学位沦史 d c o m 和c o r b a i l o p 都依赖于相当高技术的运行环境。这两个协议都有相 当多的复杂的规则柬处理数据排列、类型信息和位操作。这增加了移植到其他平台 时的难度。 最后,更重要的一点是:通常情况下,d c o i v l i i o p 在有防火墙的情况下无法 工作。d c o m i i o p 投有采用固定的t c p 或u i ) p 端口,他们在运行的时候给每个客 户动态的赋予一个t c p 端口和一个u d p 端口。这种动态端口分配的方法给程序员 提供了很大的自由度,并且也免除了管理员配置应用程序端口和解决多个应用程序 竞争一个端口的麻烦。但是因为在缺省的情况下是在1 0 2 4 6 5 5 3 5 之问随机选择端口 给应用程序的,如果把这个范围的端口都放丌的话,那么就存在着严重的安全漏洞。 所以绝大多数防火墙都选择拒绝随机丌放端口,就导致d c o m i i o p 在有防火墙的 情况下无法工作。 12 3c o m c o r b a 互操作规范以及存在的问题 以上介绍的是在分布式系统中d c o m 和c o r b ar p c 机制和存在的问题。同 时,由于c o m 和c o r b a 两大阵营存在的事实,o m g 定义了c o m ,c o i 国a 互操 作规范试图解决c o r b a 对象和c o m 对象之自j 的通信问题。 c o m ,c o i u 执互操作体系结构是规定了c o r b a 对象与c o m 对象之间进行双 向通信的机制,即使来自一个对象模型中的对象能够被看作好像存在于另一个对象 模型之中。 c o m c o r b a 互操作规范定义了c o m 和c o r b a 间数据类型、接口的映射。 但是,要允许c o r b a 访问那些与c o m 服务器处于不同位置的c o r b a 视图, 或允许d c o m 去访问c o r b a 服务器的远程视图会带来严重的性能问题 o m g 2 0 0 0 】。 问题的关键在于互操作规范没有对异种对象的标识( i d e n t i f i e r ) 和绑定( b i n d i n g ) 作详细定义( 出于产品的多样性,也无法作出详细定义) ,这样不同的互操作产品很 可能使用不同的对象标识和绑定机制。显然,对象标识及其绑定机制的不一致妨碍 了互操作产品的可移植性。此外,规范中c o r b a 视图和c o m 对象的绑定机制不 利于以通用方式实现c o m ,c o r b a 互操作。 o m g 和文献( 兑1 9 9 9 a 兑1 9 9 9 b 】【兑2 0 0 0 中都提出了改进c o m c o r b a 互操作的方案但是这些方案或者是从传统r p c 体系而来,或者解决方案的适用范 围过小,所以必须要提出新的能被广为接受的方法。 4 - - i - _ _ _ - - l - _ _ _ _ _ 1 。r - 一一 坶交通大学删i 学位沦史 1 3 s o a p 作为o r p c 协议 传统的d c o m i i o p 在h l t e m c t 上使用时产生了种种问题。由于x m l 技术的 发展使消除分布式对象之自j 的界限成为可能。 1 3 1x m l 简介 x m l ( e x t e n s i b l e m a r k u p l a n g u a g e ) 是s g m l 的一个子集,定义了结构化表达数 据的标准格式。x m l 主要有三个要素:d t d ( d o c u m e n tt y p ed e c l a r a t i o n ,文挡类型 声明) 或x m l 模式( s c h e m a ) 、x s l ( e x t e r l s i b l es t y l e s h e e tl a n g u a g e ,可扩展样式语 言) 和x l i n k ( e x t e n s i b l el i n kla n g u a g e ,可扩展链按语言) 。d t d 和x m ls c h e m a 规定了x m l 文件的逻辑结构,定义了x m l 文件中的元素、元素的属性以及元素 和元素的属性之间的关系;x s l 是用于规定x m l 文档样式的语言:x l i n k 将进一 步扩展目前w e b 上已有的简单链按。对x m l 文档的处理有统一的a p i 一种是基 于文档树的d o m 标准,一种是基于事件的s a x 而从另外一个角度来看x s l t 也 提供了强大的转换功能,可以对x m l 文档进行方便的处理。 x m l 语吉有以下几个显著的优点: 1 良好的可扩展性。x m l 允许各个不同的行业根据自己独特的需要制定自己 的一套标记,同时,它并不要求所有浏览器都能处理这成千上万个标记,同样也不 要求x m l 语言能够适合各个行业各个领域的应用这种具体问题具体分析的方法 更有助于x m l 语言的发展。 2 内容与形式的分离。正如前面所说,x m l 中信息的显示方式已经从信息本 身中抽取出来,放在了”样式单”中。这样做便于信息表现方式的修改,便于数据的 搜索,也使得x m l 具有良好的自描述性能够描述信息本身的含义甚至它们之间 的关系。 3 遵循严格的语法要求。x m l 不但要求标记配对、嵌套,而且还要求,m 格遵 守d t d 的规定。这大大增加了x m l 文档的可读性和可维护性。 4 便于不同系统之间信息的传输。不同企业、不同部门中往往存在着许多不同 的系统,x m l 可以用作各种不同系统之间的交流媒介,是一种非常理想的网际语 舂。 x m l 作为新一代的强大的标记语言,讵在成为下一个大型的w e b 主导技术。 将订l 应用到数据交换和软件构件相互通信领域,可以提供更加灵活的应用,满 足i n t e r n e t 上不同实体间信息交换和共享的各种复杂的需求。 s 1 - i 一一 ! :塑窒塑叁堂塑! ! 兰笪堡兰 1 3 2m 盯p 作为o r p c 传输协议 x m l 可以作为r p c 调用时数掘序列化的格式,除此之外,还需要其他的一些 信息。例如需要定义传输请求,应答消息的机制,端点地址的表示方式,远程对象的 激活方式,连接的建立和维持等等。也就是说需要一种r p c 的传输协议。 h t t p 协议目前已经成为i n t e r n e t 协议的事实标准几乎在所有的平台上都可以 实现,并且它满足成为一个r p c 协议的所有要求,u r l 可以表示端点的地址1 1 t p 客户端软件可以完成数据的封装,请求应答的同步等等。此外,h t t p 协议是一种 较为简单的协议,对环境的依赖性很小,几乎不需要运行期的支持。h 订p 协议是 一种无状念协议,也不是面向连接的。建立和维持一个h t t p 会话只需要交换很少 量的数据包。在i n t e m e t 上传输的电子商务数据需要很高的可靠性和安全性,事实 证明通过m 1 p 认证和s s l 可以很好的获得安全性,另外对h t t p 协议作一定的 扩展,也将获得很高的可靠性。这种简单而且高效的实现可靠性和安全性的方法无 需依赖复杂的运行环境。最后h r r p 协议使用固定端口,这使得h t t p 协议可以 方便的穿过防火墙。 所以,与d c o m i i o p 相比h r r p 更适合作为i n t e r n e t 上的r p c 传输协议。 1 3 3s o a p 规范简介 s o a p ( s i m p l eo b j e c t a c c e s sp r o t o c o l 简单对象访问协议) 是由m i c r o s o f t ,m m 等公司共同提出的规范,目的是实现大量异构程序和平台之间的互操作性,从而使 存在的应用程序能够被广泛的用户所访问。s o a p 是把成熟的基于h t t p 的w e b 技术与x m l 的灵活性和可扩展性组合在了一起。2 0 0 0 年5 月w 3 e ( w o r l d w i d ew e b c o n s t i t u t i o n ) 正式推出了s o a p l 1 规范的草稿,得到了各大公司的支持。 s o a p 是基于文本的协议,具有以下特性:简单性,灵活性以及与平台无关性。 s o a p 用x m l 语言表示消息用h i t p 作为传输协议。 s o a p 以x m l 形式提供了一个简单、轻量的用于在分散或分御环境中交换 结构化和类型化信息的机制。s o a p 本身并没有定义任何应用程序语义,如编程 模型或特定语义的实现;它通过提供一个有标准组件的包模型和在模块中编码数 据的机制,定义了一个简单的表示应用程序语义的机韦4 。这使s o a p 能够被用于 从消息传递到r p c 的各种系统。 s o a p 包括三个部分: s o a p 封装结构定义了一个整体框架用来表示消息中包含什么内容,谁 6 海交通人学颂i 学位论义 来处理这些内容以及这些内容是可选的或是必需的。 s o a p 编码规则定义了用以交换应用程序定义的数据类型的实例的一系 列机制。 s o a p r p c 表示定义了一个用柬表示远程过程调用和应答的协定f 1 7 1 。 设计s o a p 的目的之一就是利用x m l 的扩展性和灵活性来封装和交换r p c 调用。在本质上,s o a p 是用x m l 的格式来表示r p c 调用时的序列化规则,我们 可以将这种表示方式称为x d r ( 与n d r 和c d r 对应) 。由于x m l 表示数据时的 “中立性”,如果能使人们在数据的序列化规则上取得一致,就可以获得跨平台性。 由于s o a p 建立在h t t p 层之上,在底层,依然可以采用原有的软件构件模型。 与d c o m 或c o r b a 的r p c 调用中的n d r 或c d r 格式相比,s o a p 消息有 显著的增大。而且解析x m l 文档也需要一定的处理时问。但是这里的性能损失与 i n t e r a c t 上文档传输所需的时间延迟相比是微不足道的。不过,在企业内部,特别在 s e r v e r - t o s e r v e r 的通信中,d c o m c o r b a m o p 依然是酋选的协议。 1 4 本文的组织 本课题的研究目的是研究在i n t e r n e t 上传递对象之间远程过程调用消息的机制。 本文的主要工作在于: 1 建立请求调用和应答消息以及对象接口的x m l 语言表示。 2 创建一个能传递远程过程调用消息的系统。 3 研究在h t t p 协议之上消息可靠传输的机制。 本文的其余几章是这样组织的:第二章描述了对象接口和请求消息的x m l 表 示并给出了消息与i f r 碍协议绑定的具体细节:第三章介绍了作者l 丌发的中问件 系统s - b r i d g e 的详细情况;第四章提出了一种在i n t e m e t 上保证数据可靠传输的机 制:第五章将s - b r i d g e 中间件系统与其他系统作了简单的比较。最后,本文讨论了 s - b r i d g e 中间件系统的存在的一些不足。 上海交通大学硕| :学位论文 第二章用x m l 语言表示远程过程调用消息 要正确执行一个远程过程调用,我们至少需要了解以下几个基本的内容:目标 对象的地址;目标对象提供的服务,调用这个服务所需要的参数以及参数类型;本 地过程调用的方法名以及方法的参数和参数的类型等等。 对于分布式对象而言,它提供的接口即为它可咀提供的服务。为了调用一个分 布式对象的操作,客户机必须了解由这个对象所提供的接口。一个对象的接口是由 它所支持的操作和能够来回传输给这些操作的数据类型所组成的。客户机也需要知 道调用这些操作的功能和语义的知识,以便发出正确的调用请求。在分布式对象系 统中,一般用1 d l 语言来定义对象的接口。 d c o m 和c o r b a 分别定义了数据在网络上传输时的格式,以方便远程调用消 息在网络上的传输。d c o m 遵从d e cr p c 定义的标准数据表示方式:n d r ( n e t w o r k d a t ar e p r e s e n t a t i o n ) ,用来组装和反组装远程过程调用消息。c o r b a 同样也定义了 公共数据表示c d r ( c o m m o nd a t ar e p r e s e n t a t i o n ) 来做同样的工作。这两种格式相 互之间是不兼容的。 我们的目标是建立一个跨平台的分布式对象互操作平台,而互操作的核心问题 即为如何传递远程过程调用消息。用x m l 语言定义对象的接口,用x d r ( x m l d a t a r e p r e s e n t a t i o n ) 代替n d r 或c d r 作为数据在网络传输的格式。有了这两者,就可 以在i n t e r n e t 上传递远程过程调用消息,从而构建基于s o a p 的分布式对象互操作 系统。 2 1 用x m l 语言定义对象的接口 在c o r b a 中,对象接口是按o m g 接口定义语言( d l ) 来定义的。i d l 是一 种描述性语言,不是一种编程语言,所以对象和应用程序不能用i d l 来实现。i d l 的目的是允许对象接口以与任何具体的编程语言无关的形式来定义这些接口。 o m gi d l 支持内置的简单类型,比如有符号和无符号整型类、字符类、布尔 型、字符串,以及结构化数据结构类型包括枚举、结构、联合、向量和异常。这些 数据结构类型用来定义参数的类型和操作的返回类型。i d l 还提供用于名字作用域 的模块结构。i d l 操作的参数还包括流向说明,以便o r b 知道这些数据是从客户 机发送给目标对象,还是反之,还是两者都有。 8 一! :塑奎塑叁兰塑! :堂丝堡竺 在d c o m 中用m i c r o s o f t 的m i d l 是来拙述对象调用的客户方和服务方之问的 接e l 。m i d l 与o m g i d l 形式上有所不同,但是表达的内容相同。 o m g i d l 和m i d l 都遵从一定的语法规则是a n s ic + + 标准的子集,另外, 增加了一些语法以支持i d l 特有的操作调用机制。所以用x m l 形式表示i d l 是可 能的 j a c o b s e n2 0 0 0 z h a n g2 0 0 1 1 。 从i d l 到x m l 的映射分为两种:( 1 ) 数据类型映射( 2 ) 操作映射,( 3 ) 异常映射。 下面分别描述这三种映射。 2 1 ,1 数据类型映射 “x m l s c h e m a p a r t 2 :d a t a t y p e s ”规范中定义了x l v l l 中的基本数掘类型,包括整 型、浮点型、字符串等等。s o a p 对此进行了扩充,使之能够支持结构数组,枚 举等复杂类型,这样就能够用x m l 表示o m gi d l 和m i d l 中的数据类型。 举例:字符串映射 t o m gi d l t y p e d e f s i r i n gs i r 朋m i c r o s o f td l t y p e d c f c h a r + s i r 脓m ls c h e m a 2 1 2 操作映射 操作包含操作名可能的参数值和返回值。x m l 是一种描述性语言,本身没 有操作的概念,可以通过自定义一系列有语义的标记,来描述操作的各个要素。 一个表示操作的x m l 文档的根元素为m e t h o d 。它有一个子元素为 m e t h o d n a m e 包含了所调用的方法名。m e t h o d 还有一个子元素p a r a m s ,包含了传 递给这个方法的参数。每个p a r a r n s 元素包括0 个或多个p a r a m 子元素。p a r a r n 子元 素有一个属性值t y p e ,表示这个参数是访参数还是o u t 参数。p a r a r n 子元素还包括 一个v a l u e 子元素。元素v a l u e 包括一个子元素来表示参数的类型这个子元素的值 即为实际传输的参数值,用a s c i i 字符串表示。所用的类型可能有s t r i n g ,i n t b o o l e a n , a r r a y ,s t r u c t 等等 2 0 1 。 舸交通人学删l j 学位论史 可以用一个d t d 来校验这个x l v i l 文档 d t d : ! e l e m e n t p a r a m s( p a m m + ) ) ( ! e l e m e n t s t r a e t ( m e m b e r + ) 在d t d 中,有一些内容不能表示如i n t 类型的范围等等。我们用下面这个 s c h e m a 来更为准确的定义表示操作的x m l 文档。 操作的s c h

温馨提示

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

评论

0/150

提交评论