您的位置:首页 > 其它

Analysis and comparability of SOAP, CORBA and DCOM

2014-10-28 10:15 357 查看
随着计算机技术的不断发展,现代企业面临的环境越来越复杂,对于分布式系统的需求日益增加。分布式系统可以有效的进行系统的负载均衡处理,利用多处理器的协作同时进行复杂的商业运算,并且在某台机器崩溃时不致使整个系统瘫痪,因此分布式系统对于现代企业的业务计算与维持系统的健壮性与安全性都提供了良好的保证。在对SOAP,CORBA及DCOM这三种分布式协议进行了全面论述的基础上,详细分析了它们之间的联系与区别,并且论述了它们的使用范围与技术实现.

Abstract: Modern companies are in face of environment that is becoming more complex because the computer technology is developing quickly, so they require distributed systems. Distributed systems can manage the load effectively and execute complex business operation in the same time using the cooperation of multiprocessor. The whole system will not break when one of the computers break, so distributed systems provide assurance for the business operation of modern companies and robust and security of systems. Based on the discussion of distributed protocol of SOAP, CORBA and DCOM, I analyze the relationship and difference between them and discuss the scope and technology realization of them.

1.引言
随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求系统能够无缝的进行通信和共享数据,从而在Internet环境下,消除巨大的信息孤岛,实现信息共享、进行数据交换,达到信息的一致性。在这个大背景下,分布式系统能够发挥出其强大的优势,满足现代企业日益复杂的商业运算要求。

2. SOAP概述
2.1 SOAP组成
SOAP(Simple Object Access Protocol)即简单对象访问协议。它是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,封装和编码规则是被定义在不同的XML命名空间(namespace)中,这样使得定义更加简单。SOAP的两个
主要设计目标是简单性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。
SOAP=RPC+HTTP+XML:即采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。
2.2 SOAP消息举例
该例阐明了SOAP中一个简单的通信信息,包括了两个不是SOAP定义而是应用程序定义的元素:头块元素control和体块元素alert。头块元素包括两个参数:priority 和expires。体块元素包括的是实际传送的信息。
<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope">
<env:Header>
<n:control xmlns:n="http://sample.com/sample">
<n:priority>2</n:priority>
<n:expires>2006-12-31</n:expires>
</n:control>
</env:Header>
<env:Body>
<m:alert xmlns:m="http://sample.com/alert">
<m:message>hello world</m:message>
</m:alert>
</env:Body>
</env:Envelope>

3. CORBA概述
3.1 CORBA组成
CORBA(Common Object Request Broker Architecture)即公共对象请求代理体系结构。它是由OMG (Object Management Group)即对象管理组织制订的一种标准的面向对象应用程序体系规范。由对象请求代理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成。其核心部分是对象请求代理ORB(Object Request Broker)。ORB提供了一种机制,通过这种机制,对象可以透明的发出请求和接收响应。分布的、可互操作的对象可以利用ORB构造可以互操作的应用。ORB可看作是在对象之间建立客户/服务关系的一种中间件。基于ORB,客户可以透明的调用服务对象提供的方法,该服务对象可以与客户运行在同一台机器上,也可以运行在其他机器上通过网络与客户进行交互。ORB截取客户发送的请求,并负责在该软件总线上找到实现该请求的服务对象,然后完成参数、方法调用,并返回最终结果。CORBA 1.1 由对象管理组织在1991年发布。定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。CORBA 2.0于1994年12月发布,定义了如何跨越不同的 ORB 提供者而进行通讯。
3.2 CORBA工作流程
首先使用IDL定义对象和方法,然后Client调用定义的对象方法,该调用被ORB传递到Server,接着Server真正调用该方法,最后结果沿原路返回。
3.2.1 Server启动,等待来自Client的请求
Server启动后,它首先生成一个POA(potable object adapter)。然后告诉POA他所能提供的服务,即Servant(Server按照IDL定义所实现的每个对象)。Server从POA处得到每个Servant的引用OR(Object Reference)。Server把自己提供的服务公布出来,这里有两个方法:将OR转换为一个字符串并输出;将这个OR绑定到一个简单易理解的名字上,这通过Naming Service完成。
3.2.2 Client调用定义的对象方法
Client通过Naming Service查询获得要访问的对象的引用OR(object reference),或通过一个字符串获得;Client通过这个引用调用对象的方法,因为OR中有足够的信息来定位一个对象,然后这个调用被传递给ORB。

4. DCOM概述
4.1 DCOM总揽
COM/DCOM(Component Object Model / Distributed Component Object Model )是微软公司提出的分布式组件对象模型标准,支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯。DCOM基于COM的应用程序、组件、工具等的基础之上,处理网络协议的低层次的细节问题,从而使用户能够集中精力解决用户所要求的问题。DCOM位于应用程序的组件之间,将组件以不可见的方式胶合在一起组成具有完整功能的应用程序。
4.2 COM/DCOM特点
COM/DCOM 技术具有以下特点: 语言无关性。 COM 规范的定义不依赖于特定语言,它采用的是一种二进制代码级的标准,而不是源代码级的标准。 可重用性。 COM 重用性是建立在组件对象的行为方式上的,它指示了 COM 对象如何重用已有的 COM 对象功能。有两种途径:包容和聚合。位置透明性。组件从一台计算机转移到另一台计算机仅涉及到重新配置的问题,不涉及到一个大的开发项目。

5. SOAP 与CORBA,COM/ DCOM的比较
COM/DCOM是个组件模型标准,CORBA是分布式应用的服务标准。CORBA和DCOM为分布式应用程序建立服务,服务对象来执行客户端调用的服务。而SOAP是基于XML和HTTP的分布式对象的通信协议,是COM/DCOM和CORBA对象进行通讯的协议。实际上,利用SOAP的互操作性和CORBA强大的执行能力,两者可以很好的结合在一起。
CORBA应用程序和DCOM应用程序不能实现互操作,两者不能在一起协作。因为在ORPC(Object RPC)协议中,用ObjRef代表了一个正在运行对象的引用;在CORBA/IIOP(Internet Inter-Orb Protocol)中,用交换可互操作对象引用IOR(Interoperable Object Reference)代表一个服务器的对象引用。不幸的是,IOR 与 ObjRef不能够关联起来。然而,使用SOAP可以实现在垂直应用层面上CORBA ,DCOM技术的水平整合,能够更好的集成CORBA,DCOM为一个整体
SOAP并没有定义信息的语义,服务质量,基于INTERNET的事务处理。而是采用 XML 进行消息编码,正确的处理需要服务器和客户端本身,理解和执行彼此使用的信息格式(ONE-TO-ONE,REQUEST/RESPONSE,BROADCAST等),应用程序本身在语义解析中扮演着十分重要的角色。而CORBA,DCOM表示了传送信息的语义,对参数和返回值使用二进制编码。可对诸如参数名称或类型的任何元信息都不编码,但使中介很难处理消息。因为每个系统使用不同的二进制编码,系统间的互操作的很难实现。
尽管CORBA可以在不同的平台上执行,DCOM可以在微软的各种平台上运行,但是基于CORBA和DCOM的解决方案必须依赖于单一的应用程序。比如说,假如运行的是DCOM服务器程序,所有的分布式的客户端不得不运行于微软的操作平台上。CORBA 虽然可以运行于不同的平台,但CORBA的互操作性并没有在更高层的服务上进行扩展,如安全性和事务处理,在这种情况下,许多提供的服务没有得到很好的优化。DCOM和CORBA适合于服务器--服务器间的通讯,但是对于客户端--服务器的通讯十分脆弱,尤其当客户程序分布在INTERNET上更是如此。
SOAP不象DCOM一样试图定义分布式系统的所有元素,SOAP没有提供分布式类库,类型安全检查,版本控制等等,SOAP比它处于一个更低的层次,有点类似于IIOP在CORBA的作用,DCOM却提供了一些额外的协议功能,是IIOP 或者SOAP所不具备的。
DCOM是有效的,灵活的,但也是很复杂的。而SOAP的一个主要优点就在于它的简单性,SOAP使用HTTP作为网络通讯协议,接受和传送数据参数时采用XML作为数据格式,从而代替了DCOM中的NDR格式,SOAP和 DCOM执行过程是类似的。

北京圣思园教育科技有限公司版权所有 (All Rights Reserved)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  COM DCOM SOAP
相关文章推荐