1. SOAP简介
1.1应用背景
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
1.2概念定义
SOAP 是基于 XML 的简易协议,是用在分散或分布的环境中交换信息的简单的协议,可使应用程序在 HTTP 之上进行信息交换。或者更简单地说:SOAP 是用于访问网络服务的协议。包括三个部分:封装定义了一个描述消息中包含什么内容以及如何处理它们的框架,编码规则用于表示应用程序定义的数据类型的实例,另外还有一个表示远程过程调用和应答的协定。SOAP被设计为可以与各种其它协议结合使用;这里仅描述如何将SOAP和HTTP及HTTP扩展框架相结合。
SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型化信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。 目前最新版本的SOAP1.2是Sun Microsystems、IBM、BEA、Microsoft和Oracle等供应商领导的W3C XML工作组推出并维护的。
SOAP的两个目标是简单性和可扩展性,这就意味着有一些传统的消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。SOAP是一种分布式计算中的技术,它被有意的设计为轻量级的协议,它的某些功能和其他一些机制(如RMI)共有的,但也存在许多不同的功能,如不支持通过引用传递对象、对象激活、消息批处理等。SOAP也被设计成可扩展的,而简单性和可扩展性意味着SOAP的使用不包含任何特定的编程模式,给定实现的语义是极为灵活的。
SOAP基于XML语言和XSD标准,其定义了一套编码规则,该规则定义如何将数据表示为消息,以及怎样通过HTTP协议来传输SOAP消息,它由以下四部分组成:
> SOAP信封(Envelope):定义了一个框架,该框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理这些消息。
> SOAP编码规则:它定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。
> SOAP RPC表示:它定义了用于表示远程过程调用和应答协定。
> SOAP绑定:它定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。
SOAP消息基本上是从发送端到接收端的单向传输,它们常常结合起来执行类似于请求/应答的模式。不需要吧SOAP消息绑定到特定的协议,SOAP可以运行在任何其他传输协议(HTTP、SMTP、FTP等)上。另外,SOAP提供了标准的RPC方法来调用Web Service以请求/响应模式运行。
注意:
实际上,SOAP在这里有点用词不当:它意味着下面的Web service是以对象的方式表示的,但事实并不一定如此:你完全可以把你的Web service写成一系列的C函数,并仍然使用SOAP进行调用
2. 消息交换模型
2.1SOAP接点
SOAP结点表示SOAP消息路径的逻辑实体,用于进行消息路由或处理。SOAP结点可以是SOAP消息的发送者、接收方、消息中介。
在SOAP消息模型中,中间方为一种SOAP结点,负责提供发送消息的应用程序和接收方间的消息交换和