如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
1.简介SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。soap包括三个部分soap封装(见第4节)结构定义了一个整体框架用来表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。SOAP编码规则(见第5节)定义了用以交换应用程序定义的数据类型的实例的一系列机制。SOAPRPC表示(见第7节)定义了一个用来表示远程过程调用和应答的协定。虽然这三个部分都作为SOAP的一部分一起描述,但它们在功能上是相交的。特别的,封装和编码规则是在不同的名域中定义的,这种模块性的定义方法增加了简单性在SOAP封装,SOAP编码规则和SOAPRPC协定之外,这个规范还定义了两个协议的绑定,描述了在有或没有HTTP扩展框架[6]的情况下,SOAP消息如何包含在HTTP消息[5]中被传送。1.1设计目标SOAP的主要设计目标是简单性和可扩展性,这意味着传统的消息系统和分布对象系统的某些性质不是SOAP规范的一部分。这些性质包括:分布式碎片收集成批传送消息对象引用(要求分布式碎片收集)激活机制(要求对象引用)1.2符号约定这篇文章中的关键字"MUST","MUSTNOT","REQUIRED","SHALL","SHALLNOT","SHOULD","SHOULDNOT","RECOMMENDED","MAY",和"OPTIONAL"的解释在RFC-2119[2]中。这篇文章中用到的名域前缀"SOAP-ENV"和"SOAP-ENC"分别与"http://schemas.xmlsoap.org/soap/envelope/";和"http://schemas.xmlsoap.org/soap/encoding/";关联。整篇文档中,名域前缀“xsi”被假定为与URI"http://www.w3.org/1999/XMLSchema-instance“(在XMLSchema规范[11]定义)相连。类似的,名域前缀”xsd“被假定为与URI"http://www.w3.org/1999/XMLSchema";(在[10]中定义)相连。名域前缀”tns“用来表示任意名域。所有其它的名域前缀都只是例子。名域URI的基本形式”some-URI“表示某些依赖于应用程序或上下文的URI[4]。这个规范用扩展BNF(在RFC-2616[5]描述)描述某些结构。1.3soap消息举例在这个例子中,GetLastTradePriceSOAP请求被发往StockQuote服务。这个请求携带一个字符串参数和ticker符号,在SOAP应答中返回一个浮点数。XML名域用来区分SOAP标志符和应用程序特定的标志符。这个例子说明了在第6节中定义的HTTP绑定。如果SOAP中管理XML负载的规则完全独立于HTTP是没有意义的,因为事实上该负载是由HTTP携带的。在AppendixA中有更多的例子。例1在http请求中嵌入soap消息post/stockquotehttp/1.1Host:www.stockquoteserver.comContent-Type:text/xml;charset="utf-8"Content-Length:nnnnSOAPAction:"Some-URI"http://schemas.xmlsoap.org/soap/envelope/";SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";>DIS下面是一条应答消息,包括http消息,soap消息是其具体内容:例2在http应答中嵌入soap消息http/1.1200okContent-Type:text/xml;charset="utf-8"Content-Length:nnnnhttp://schemas.xmlsoap.org/soap/envelope/";SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";/>34.52.soa