本文由DotSHow贡献
pdf1。
浅谈SOAP
China
IBM 主页
IBM : developerWorks 中国网站 : XML : 所有的文章
搜索: 只用 + - " " ( )
在
dW 全部内容
| 产品与服务 | 支持与下载 | 个性化服务
浅谈SOAP
内容:
一:为什么需要SOAP?
段智华 (duanzhihua@263.net) 2001 年 8 月 本文对SOAP作了一个初步介绍,?
给出几个简单示例;接着比较CORBA, DCOM/COM与SOAP的联系与区别;然后浅析SOAP?
简单的理解为RPC+HTTP +XML时的运行机制;最后展现SOAP的前景。
二:什么是SOAP? 三:SOAP与CORBA,COM/DCOM的区别? 四:SOAP=RPC+HTTP+?
XML 五.SOAP 的前景 参考资料 作者介绍
一:为什么需要SOAP?
随着计算机技术的不断发展,现代企业面临的环境越来越复杂,其信息系统大多?
数为多平台、多系统的复杂系统。这就要求 今天的企业解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
具有广泛的兼容能力?
,可以支持不同的系统平台、数据格式和多种连接方式,要求在Internet 环境下,实?
现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且要提供对?
Web 应用程序的可靠访问。 随着异种计算环境的不断增加,各种系统间的互操作性就?
愈显得必要,要求系统能够无缝地进行通信和共享数据,从而在 Internet 环境下,?
消除巨大的信息孤岛,实现信息共享、进行数据交换,达到信息的一致性。Web serv?
ices 希望实现不同的 系统之间能够用"软件-软件对话"的方式相互调用,打破了软件?
应用、网站和各种设备之间的格格不入的状态,实现"基于WEB 无缝集成"的目标。 今?
年四月份的时候,W3C联盟召开了第一次 Web 服务专题研讨会,目的为探索 W3C 应向?
哪个方向发展才能实现新兴的 Web 服务架构的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化,期间提出了一个"Web 服务堆?
栈"的构想,如下图,从图中可以看出,SOAP在WEB服务堆栈中作为 用于 XML 消息传?
递的一种非常普遍的协议,发挥着十分重要的作用。
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (1 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
二:什么是SOAP?
SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式?
的环境中交换信息的简单的协议,是一个基于 XML的协议,它包括四个部分:SOAP封?
装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受 ?
并处理它以及如何处理它们的框架;SOAP编码
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
(encoding rules),用于表示应?
用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程?
过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。 虽然这四个?
部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独?
立的。特别的,信封和编码 规则是被定义在不同的XML命名空间(namespace)中,这样?
使得定义更加简单。 SOAP的两个主要设计目标是简单性和可扩展性。这就意味着有一?
些传统消息系统或分布式对象系统中的某些性质将不是 SOAP规范的一部分。比如:分?
布式垃圾收集 (Distributed garbage collection)、成批传送消息(Boxcarring or ?
batching of messages)、对象引用 (Objects-by-reference(which requires dist?
ributed garbage collection))、对象激活 (Activation (which requires objec?
ts-by-reference))。
SOAP消息举例:
1.第一个例子阐明了SOAP中一个简单的通信信息,包括了两个不是SOAP定义而?
page 1
是应用程序定义的元素:头块元素 alertcontrol 和体块元素alert。头块元素包括两?
个参数:priority 和expires。体块元素包括的是实际传送的信息。
(EXAMPLE 1) 2.SOAP通信与底层的不同协议和不同的交换格式有关,下面的?
例子SOAP使用HTTP作为底层通信协议,从而可以很好的使 用request/response机制来?
传送信息。 SOAP/HTTP请求包括一个GetLastTradePrice的块元素,该请求携带一个字?
符串参数 和ticker符号,在SOAP应答中返回一个浮点数。XML名域用来区分SOAP标志?
符和应用程序特定的标志符。
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (2 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
(EXAMPLE 2) 3. 例3 展示的是StockQuote SOAP服务信息,是对例2的请求作?
出的一条应答消息。
(EXAMPLE 3)
三:SOAP与CORBA,COM/DCOM的区别?
在SOAP刚刚提出来的时候,许多人就提出了疑问:SOAP与CORBA和DCOM的区别何?
在? 1. CORBA(Common Object Request Broker Architecture)公共对象请求代理?
体系结构是由OMG组织制订的一种标准 的面向对象应用程序体系规范。由对象请求代?
理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成。其 核心部分是对?
象请求代理ORB(Object Request Broker)。ORB提供了一种机制,通过这种机制,对?
象可以透明的 发出请求和接收响应。分布的、可以互操作的对象可以利用ORB构造可?
以互操作的应用。ORB可看作是在对象之间 建立客户/服务关系的一种中间件。基于O?
RB,客户可以透明的调用服务对象提供的方法,该服务对象可以与客户运 行在同一台?
机器上,也可以运行在其他机器上通过网络与客户进行交互。ORB截取客户发送的请求?
,并负责在该软件 总线上找到实现该请求的服务对象,然后完成参数、方法调用,并?
返回最终结果。CORBA 1.1 由对象管理组织在 1991 年发布。定义了接口定义语言(?
IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (3 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
户/服务器的交互。CORBA 2.0 于 1994 年的 12 月发布定义了如何跨越不同的?
ORB 提供者而进行通讯。 2. COM/DCOM(Component Object Model / Distributed C?
omponent Object Model )是微软公司提出的分布式组件对象模 型标准,支持在局域?
网、广域网甚至Internet上不同计算机的对象之间的通讯。DCOM基于COM的应用程序、?
组件、 工具等的基础之上,处理网络协议的低层次的细节问题,而不必关心太多的网?
络协议细节,从而使用户能够集中精力 解决用户所要求的问题。DCOM位于应用程序的?
组件之间,将组件以不可见的方式胶合在一起组成具有完整功能的应 用程序。 3. S?
OAP 与CORBA,DCOM/COM的比较。 3.1 首先指出的是SOAP不会取代CORBA,COM/DCOM,?
三者的概念有所区别。COM/DCOM是个组件模型标准, CORBA是分布式应用的服务标准?
。CORBA和DCOM为分布式应用程序建立服务,服务对象来执行客户端调用的服 务。而?
SOAP是基于XML和HTTP的分布式对象的通信协议,是COM/DCOM和CORBA对象进行通讯的?
协议。实际 上,利用SOAP的互操作性和CORBA强大的执行能力,两者可以很好的结合?
在一起。 OMG (Object Management Group responsible for the CORBA specifica?
tion)正在关注这方面的发展。 3.2. CORBA应用程序和DCOM应用程序不能实现互操作?
,两者不能在一起协作。因为在ORPC(Object RPC)协议 中,用ObjRef代表了一个正在?
运行对象的引用;在CORBA/IIOP(Internet Inter-Orb Protocol)中,用交换可互操作?
对象 引用IOR(Interoperable Object Reference)代表一个服务器的对象引用。不?
幸的是,IOR 与 ObjRef不能够关联起 来。然而,使用SOAP可以实现在垂直应用层面?
上CORBA ,DCOM技术的水平整合,能够更好的集成CORBA, DCOM为一个整体。 3.3 S?
OAP并没有定义信息的语义,服务质量,基于INTERNET的事务处理。而是采用 XML 进?
行消息编码,正确的处 理需要服务器和客户端本身来执行,理解和执行彼此使用的信?
息格式(ONE-TO-ONE,REQUEST/REPLY, BROADCAST,ETC),应用程序本身在语义解?
析中扮演着十分重要的角色。而CORBA,DCOM表示了传送信息的 语义,对参数和返回?
page 2
值使用二进制编码。可对诸如参数名称或类型的任何元信息都不编码,但使中介很难?
处理消息。 又因为每个系统使用不同的二进制编码,系统间的互操作的很难实现。 ?
3.4 尽管CORBA可以在不同的平台上执行,DCOM可以在微软的各种平台上运行,但是基?
于CORBA和DCOM的解决 方案必须依赖于单一的应用程序。比如说,假如运行的是DCOM?
服务器程序,所有的分布式的客户端不得不运行于微 软的操作平台上。CORBA 虽然可?
以运行于不同的平台,但CORBA的互操作性并没有在更高层的服务上进行扩展, 如安?
全性和事务处理,在这种情况下,许多提供的服务没有得到很好的优化。DCOM和CORB?
A适合于服务器--服务器 间的通讯,但是对于客户端--服务器的通讯十分脆弱,尤其?
当客户程序分布在INTERNET上更是如此。 3.5 SOAP不象DCOM一样试图定义分布式系统?
的所有元素,SOAP没有提供分布式类库,类型安全检查,版本控制等 等,SOAP比它处?
于一个更低的层次,有点类似于IIOP在CORBA的作用,DCOM却提供了一些额外的协议功?
能,是 IIOP 或者SOAP所不具备的。然而,许多. DCOM的额外功能只有在服务器――?
服务器间通信时才会用到,对于客户 端――服务器之间的通信则是多余的。
四:SOAP=RPC+HTTP+XML
SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为?
底层通讯协议;RPC作为一致性的调 用途径,XML作为数据传送的格式,允许服务?
提供者和服务客户经过防火墙在INTERNET进行通讯交互。RPC的描叙可能 不大准确,?
因为SOAP一开始构思就是要实现平台与环境的无关性和独立性,每一个通过网络的远?
程调用都可以通过SOAP封 装起来,包括DCE(Distributed Computing Environment ?
) RPC CALLS,COM/DCOM CALLS, CORBA CALLS, JAVA CALLS,etc。
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (4 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
SOAP 使用 HTTP 传送 XML,尽管HTTP 不是有效率的通讯协议,而且 XML 还需?
要额外的文件解析(parse),两者使得交 易的速度大大低于其它方案。但是XML 是?
一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避免许多关于防火 墙?
的问题,从而使SOAP得到了广泛的应用。但是如果效率对你来说很重要,那么你应该?
多考虑其它的方式,而不要用 SOAP。 为了更好的理解SOAP,HTTP,XML如何工作的,不?
妨先考虑一下COM/DCOM的运行机制,DCOM处理网络协议的低层次的细 节问题,如PRO?
XY/STUB间的通讯,生命周期的管理,对象的标识。在客户端与服务器端进行交互的时?
候,DCOM采用NDR (Network Data Representation)作为数据表示,它是低层次的与?
平台无关的数据表现形式。 DCOM是有效的,灵活的,但也是很复杂的。而SOAP的一个?
主要优点就在于它的简单性,SOAP使用HTTP作为网络通讯协 议,接受和传送数据参数?
时采用XML作为数据格式,从而代替了DCOM中的NDR格式,SOAP和 DCOM执行过程是类似?
的, 如下图,但是用XML取代 NDR作为编码表现形式,提供了更高层次上的抽象,与?
平台和环境无关。
客户端发送请求时,不管客户端是什么平台的,首先把请求转换成XML格式,SO?
AP网关可自动执行这个转换。为了保证传送 时参数,方法名,返回值的唯一性,SOA?
P协议使用了一个私有标记表,从而服务端的SOAP网关可以正确的解析,这有点类 似?
于COM/DCOM 中的桩(STUB)。转化成XML格式后,SOAP终端名(远程调用方法名)及?
其他的一些协议标识信息被封装成HTTP请求, 然后发送给服务器。如果应用程序要求?
,服务器返回一个HTTP应答信息给客户端。与通常对HTML页面的HTTP GET请求不 同的?
是,此请求设置了一些HTTP HEADER,标识着一个SOAP服务激发,和HTTP包一起传送。?
例如:对于一个询问股票价 格的应用程序,服务器端具有组件提供某股票当前的价格?
,组件是COM或CORBA在服务器上建立的。客户端发送一个SOAP 请求给服务器询问股票?
价格。服务器依赖于服务器上的SOAP网关,使用内嵌的HTML对象调用合适的方法, 然?
后把得到的价 格通过SOAP应答传给客户端。
五.SOAP 的前景
W3C于2000年5月8日发表了Simple Object Access Protocol (SOAP) 1.1版本,?
具体规范发布在下列站点上(http://www.w3. org/TR/SOAP/)。又与今年7月9号推出?
了SOAP Version 1.2版本的建议草案,具体规范发布在下列站点上(http://www.w3.?
org/TR/soap12/)。编写SOAP Version 1.1版本的工作小组的成员包括:DevelopMe?
page 3
ntor, International Business Machines Corporation, Lotus Development Corpo?
ration, Microsoft, UserLand Software。
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (5 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
SOAP的推出是令人兴奋的。可以相信,随着网络服务的的不断发展,它将极大的?
改变我们的思考模式和开发模式。现在,已 有许多大公司着手支持SOAP的开发,去年?
IBM公司 和 Microsoft公司都发行了实现 SOAP 的第一批版本。 IBM 公司启动了 A?
pache SOAP 项目
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
,微软最近又推出了SOAPtoolkit2.0的正式版,主要包括如下的?
一些特征:SOAP的高层接口和低层 接口,消息对象接口,完全支持WSDL 1.1标准,支?
持用户自定义类型映射,并且提供了丰富和完整的开发文档以及应用实 例。而且,两?
家公司正在互操作性方面努力研究。可以乐观的估计,不用多久,SOAP 互操作性的时?
代就将来临。
与SOAP相关的一些标准:
1. HTTP 1.0 or greater(http://www.w3.org/Protocols/HTTP/ietf-http-ex?
t) 2. the core W3C XML recommendation(http://www.w3.org/TR/1998/REC-xml-?
19980210) 3. W3C XML namespace recommendation(http://www.w3.org/TR/REC-x?
ml-names). 4. XML Schema(http://www.w3.org/TR/xmlschema-1/)
目前支持SOAP的一些公司产品:
Organization Rogue Wave Iona ObjectSpace Digital Creations UserLand M?
icrosoft Product Nouveau ORB Orbix 2000 Voyager Zope, the Python Applicati?
on Server Frontier groupware product Windows DNA 2000
SOAP是一个协议,与编程语言无关。实际上,许多语言已经开始支持SOAP,如:?
java,c/c++,vb,c#,perl,php.下面列出了在 Java/C++/Perl/ADA/Python环境下SOAP的?
执行工具: 1. Java: Apache SOAP , DevelopMentor's implementation, IdooXoap?
from ZVON 2. Python: PythonWare (client side only) 3. C++: IdooXoap from ?
ZVON 4. Perl: SOAP::Lite 5. ADA: An ADA implementation 6. Microsoft Visual?
Studio: The Microsoft SOAP toolkit.
参考资料
1. http://www.cn.ibm.com/developerWorks/xml/index.shtml(IBM公司) 2.?
http://msdn.microsoft.com/(微软公司) 3. http://www.w3.org/TR/soap12/(W?
3C联盟) 4. http://www.soaprpc.com/
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (6 ?
of 7)2005-1-5 20:12:32
浅谈SOAP
5. http://www.webservices.org 6. http://www.soapwebservices.com 7. ht?
tp://www.xml.org.cn(中国xml联盟) 鉴于SOAP是当前的新技术,国内资料贫乏,主?
要参考了国外的一些资料及IBM和MICROSOFT的相关资料,文章偏颇之处, 请多指教!?
作者介绍
段智华: 高级软件
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
师,对工作流系统有深入研究,曾参与基于XML的SU-PDM?
2.0产品数据管理系统的开发。目前在上海市易方公司从事SOAP/XML的研究。 可通过?
E-mail:duanzhihua@263.net与作者联系。
到页首 您对这篇文章的看法如何?
真棒!(5) 好材料 (4) 一般;尚可 (3) 需提高 (2) 太差! (1)
建议?
提交反馈意见
(c) Copyright IBM Corp. 2001, (c) Copyright IBM China 2001, All Right?
Reserved
关于 IBM | 隐私条约 | 使用条款 | 联系 IBM
http://www-900.ibm.com/developerWorks/cn/xml/x-sisoap/index.shtml (7 ?
of 7)2005-1-5 20:12:32
page 4