没有合适的资源?快使用搜索试试~ 我知道了~
首页SOAP协议规范中文版
SOAP协议规范中文版
5星 · 超过95%的资源 需积分: 12 61 下载量 169 浏览量
更新于2023-07-20
评论
收藏 134KB DOC 举报
SOAP协议规范中文版,供大家参考! SOAP以XML形式提供了一个简单、轻量的用于在分散或分布环境中交换结构化和类型信息的机制。SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数据的机制,定义了一个简单的表示应用程序语义的机制。这使SOAP能够被用于从消息传递到RPC的各种系统。
资源详情
资源评论
资源推荐
SOAP 协议规范
1. 简介
SOAP 以 XML 形式提供了一个简单、轻量的用于在分散或分布环境中交换结构
化和类型信息的机制。SOAP 本身并没有定义任何应用程序语义,如编程模型
或特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编
码数据的机制,定义了一个简单的表示应用程序语义的机制。这使 SOAP 能够
被用于从消息传递到 RPC 的各种系统。
SOAP 包括三个部分
SOAP 封装(见第 4 节)结构定义了一个整体框架用来表示消息中包含
什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。
SOAP 编码规则(见第 5 节)定义了用以交换应用程序定义的数据类型
的实例的一系列机制。
SOAP RPC 表示(见第 7 节)定义了一个用来表示远程过程调用和应答
的协定。
虽然这三个部分都作为 SOAP 的一部分一起描述,但它们在功能上是相交的。
特别的,封装和编码规则是在不同的名域中定义的,这种模块性的定义方法增
加了简单性在 SOAP 封装,SOAP 编码规则和 SOAPRPC 协定之外,这个规范
还定义了两个协议的绑定,描述了在有或没有 HTTP 扩展框架[6]的情况下,
SOAP 消息如何包含在 HTTP 消息[5]中被传送。
1.1 设计目标
SOAP 的主要设计目标是简单性和可扩展性,这意味着传统的消息系统和分布
对象系统的某些性质不是 SOAP 规范的一部分。这些性质包括:
分布式碎片收集
成批传送消息
对象引用(要求分布式碎片收集)
激活机制(要求对象引用)
1.2 符号约定
这篇文章中的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALL NOT","SHOULD", "SHOULD NOT", "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.3 SOAP 消息举例
在这个例子中,GetLastTradePrice SOAP 请求被发往 StockQuote 服务。
这个请求携带一个字符串参数和 ticker 符号,在 SOAP 应答中返回一个浮点数。
XML 名域用来区分 SOAP 标志符和应用程序特定的标志符。这个例子说明了在
第 6 节中定义的 HTTP 绑定。如果 SOAP 中管理 XML 负载的规则完全独立于
HTTP 是没有意义的,因为事实上该负载是由 HTTP 携带的。在 Appendix A
中有更多的例子。
例 1 在 HTTP 请求中嵌入 SOAP 消息
POST /StockQuote HTTP/1.1
Host:
www.stockquoteserver.com
Content-Type: text/xml;
charset="utf-8"
Content-Length: nnnn
SOAPAction:
"Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encodi
ng/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
下面是一条应答消息,包括 HTTP 消息,SOAP 消息是其具体内容 :
例 2 在 HTTP 应答中嵌入 SOAP 消息
HTTP/1.1 200 OK
Content-Type: text/xml;
charset="utf-8"
Content-Length:
nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encodi
ng/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2. SOAP 消息交换模型
SOAP 消息从发送方到接收方是单向传送,但正如上面显示的,SOAP 消息经
常以请求/应答的方式实现。SOAP 实现可以通过开发特定网络系统的特性来优
化。例如,HTTP 绑定(见第 6 节)使 SOAP 应答消息以 HTTP 应答的方式传
输,并使用同一个连接返回请求。不管 SOAP 被绑定到哪个协议,SOAP 消息
采用所谓的”消息路径“发送,这使在终节点之外的中间节点可以处理消息。一
个接收 SOAP 消息的 SOAP 应用程序必须按顺序执行以下的动作来处理消息:
识别应用程序想要的 SOAP 消息的所有部分 (见 4.2.2 节)检验应用程序是否
支持第一步中识别的消息中所有必需部分并处理它。如果不支持,则丢弃消息
(见 4.4 节)。在不影响处理结果的情况下,处理器可能忽略第一步中识别出
的可选部分。如果这个 SOAP 应用程序不是这个消息的最终目的地,则在转发
消息之前删除第一步中识别出来的所有部分。为了正确处理一条消息或者消息
的一部分,SOAP 处理器需要理解:所用的交换方式(单向,请求/应答,多路
发送等等),这种方式下接收者的任务,RPC 机制(如果有的话)的使用(如
第 7 节中所述),数据的表现方法或编码,还有其它必需的语义。尽管属性
(比如 SOAP encodingstyle,见 4.1.1 节)可以用于描述一个消息的某些方
面,但这个规范并不 强制所有的接收方也必须有同样的属性并取同样的属性值。
举个例子,某一特定的应用可能知道一个元素表示一条遵循第 7 节约定的 RPC
请求,但是另外一些应用可能认为指向该元素的所有消息都用单向传输,而不
是类似第 7 节的请求应答模式。
(译者注:交互双方的 SOAP 消息并不一定要遵循同样的格式设定,而只需要
以一种双方可理解的格式交换信息就可以了)
3. 与 XML 的关系
所有的 SOAP 消息都使用 XML 形式编码(更多有关 XML 的信息请见[7])一个
SOAP 应用程序产生的消息中,所有由 SOAP 定义的元素和属性中必须包括正
确的名域。SOAP 应用程序必须能够处理它接收到的消息中的 SOAP 名域(见
4.4 节),并且它可以处理没有 SOAP 名域的 SOAP 消息,就象它们有正确的
名域一样。SOAP 定义了两个名域(更多有关 XML 名域的信息请见[8])
SOAP 封装的名域标志符是"http://schemas.xmlsoap.org/soap/
envelope/"
SOAP 的编码规则的名域标志符是"http://schemas.xmlsoap.org/
soap/encoding/"
SOAP 消息中不能包含文档类型声明,也不能包括消息处理指令。[7] SOAP 使
用"ID"类型"id"属性来指定一个元素的唯一的标志符,同时该属性是局部的和
无需校验的。SOAP 使用"uri-reference"类型的"href"属性指定对这个值的引
用,同时该属性是局部的和无需校验的。这样就遵从了 XML 规范
[7],XMLSchema 规范[11]和 XML 连接语言规范[9]的风格。除了 SOAP
mustUnderstand 属性(见 4.2.3 节)和 SOAPactor 属性(见 4.2.2 节)之外,
一般允许属性和它们的值出现在 XML 文档实例或 Schema 中(两者效果相
同)。也就是说,在 DTD 或 Schema 中声明一个缺省值或固定值和在 XML 文
档实例中设置它的值在语义上相同。
4. SOAP 封装
SOAP 消息是一个 XML 文档,包括一个必需的 SOAP 封装,一个可选的 SOAP
头和一个必需的 SOAP 体。在这篇规范剩余部分中,提到 SOAP 消息时就是指
这个 XML 文档。这一节中定义的元素和属性的名域标志符为:
"http://schemas.xmlsoap.org/soap/envelope/" 。一个 SOAP 消息包括以
下部分:1.在表示这个消息的 XML 文档中,封装是顶层元素。2.应用 SOAP 交
换信息的各方是分散的且没有预先协定,SOAP 头提供了向 SOAP 消息中添加
关于这条 SOAP 消息的某些要素(feature)的机制。SOAP 定义了少量的属性用
来表明这项要素(feature)是否可选以及由谁来处理。(见 4.2 节)3.SOAP
体是包含消息的最终接收者想要的信息的容器(见 4.3 节)。SOAP 为 SOAP
体定义了一个 Fault 元素用来报告错误信息。语法规则如下所示:
封装
1. 元素名是 "Envelope"
2. 在 SOAP 消息中必须出现。
3. 可以包含名域声明和附加属性。如果包含附加属性,这些属性必须限定
名域。类似的,"Envelope"可以包含附加子元素,这些也必须限定名域
且跟在 SOAP 体元素之后。
SOAP 头 (见 4.2 节)
1. 元素名是"Header"
2. 在 SOAP 消息中可能出现。如果出现的话,必须是 SOAP 封装元素的第
一个直接子元素。
3. SOAP 头可以包含多个条目,每个都是 SOAP 头元素的直接子元素。所
有 SOAP 头的直接子元素都必须限定名域。
SOAP 体 (见 4.3 节)
1. 元素名是"Body"
2. 在 SOAP 消息中必须出现且必须是 SOAP 封装元素的直接子元素。它必
须直接跟在 SOAP 头元素(如果有)之后。否则它必须是 SOAP 封装元
素的第一个直接子元素。
3. SOAP 体可以包括多个条目,每个条目必须是 SOAP 体元素的直接子元
素。SOAP 体元素的直接子元素可以限定名域。SOAP 定义了
SOAPFault 元素来表示错误信息。
4.1.1 SOAP encodingStyle 属性
EncodingStyle 全局属性用来表示 SOAP 消息的序列化规则。这个属性可以在
任何元素中出现,作用范围与名域声明的作用范围很相似,为这个元素的内容
和它的所有没有重载此属性的子元素。SOAP 消息没有定义缺省编码。属性值
是一个或多个 URI 的顺序列表,每个 URI 确定了一种或多种序列化规则,用来
不同程度反序列化 SOAP 消息,举例如下:
"http://schemas.xmlsoap.org/soap/encoding/"
"http://my.host/encoding/restricted http://my.host/encoding/"
""
第 5 节中定义的序列化规则由 URI"http://schemas.xmlsoap.org/soap/
encoding/" 确定。使用这个特定序列化规则的消息应该用 encodingStyle 属
性说明这一点。另外,所有以"http://schemas.xmlsoap.org/soap/
encoding/"开头的 URI 中的序列化规则与第 5 节中定义的 SOAP 编码规则相
一致。一个零长度的 URI("")明确显示所含元素没有任何编码形式。这可以
用来取消上一级元素的所有编码声明。
4.1.2 封装版本模型
SOAP 没有定义常规的基于主版本号和辅版本号的版本形式。SOAP 消息必须
有一个封装元素与名域"http://schemas.xmlsoap.org/soap/envelope/"关
联。如果 SOAP 应用程序接收到的 SOAP 消息中的 SOAP 封装元素与其他的名
域关联,则视为版本错误,应用程序必须丢弃这个消息。如果消息是通过
HTTP 之类的请求/应答协议收到的,应用程序必须回答一个 SOAP
VersionMismatch 错误信息(见 4.4 节)。
4.2 SOAP 头
SOAP 为相互通信的团体之间提供了一种很灵活的机制:在无须预先协定的情
况下,以分散但标准的方式扩展消息。可以在 SOAP 头中添加条目实现这种扩
展,典型的例子有认证,事务管理,支付等等。头元素编码为 SOAP 封装元素
剩余30页未读,继续阅读
sxgshenlin
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2