动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

 SOAP Version 1.2中文手冊(2)

作者:许佑骏, Arthor Xu (Deal 来源:程序员大本营 
阅读 6856 人次 , 2002-5-16 

1. 引言



SOAP
v1.2为在一个松散的、分布的环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单且轻量级的机制。SOAP本身并不定义任何应用语义,如编程模型或特定语义实现,它只是定义了一种简单的机制,通过一个模块化的包装模型和对模块中特定格式编码的数据的重编码机制来表示应用语义。SOAP的这项能力使得它可被很多类型的系统用于从消息系统到RPC(Remote
Procedure Call)的延伸。
SOAP由四部分组成:



  1. SOAP envelop (SOAP信封,参阅 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383494">section
    4
    ),它构造定义了一个整体的表示框架,可用于表示在消息(message)中的是什么应当处理它,以及这是可选
    还是强制的。



  2. SOAP encoding rules (SOAP编码规则,参阅 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383512">section
    5
    ),定义了一个编序机制用于交换应用程序定义的数据类型的实例。



  3. SOAP RPC representation (SOAP RPC表示,参阅 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383532">section
    7
    ),定义了一个用于表示远端过程调用和响应的约定。


  4. SOAP binding (SOAP绑定,参阅 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383526">section
    6
    ) 定义了一个使用底层传输协议来完成在结点间交换SOAP信封的约定。

为了简化本规范,这四部分在功能上是正交的。特别的,信封和编码规则是被定义在不同的命名空间(namespace)中,这样有利于通过模块化获得简明性。

本规范还定义了两种SOAP绑定(binding),用于描述SOAP消息(message)如何通过带或不带HTTP扩展框架 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#RFC2774">[6](HTTP
Extension Framework)的HTTP href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#RFC2616">[5]消息(message)进行传输。

1.1 设计目标



SOAP的主要设计目标是简明性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的特性将不包含在SOAP的核心规范中。这些特性包括:




  • 分布式垃圾收集 (distributed garbage collection);



  • 批量消息传输/处理 (boxcarring or batching of messages);



  • 对象引用 (objects-by-reference, 需要分布式垃圾收集的支持);



  • 对象激活 (activation, 需要对象引用的支持)。

1.2 符号约定



本文中的关键词“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”,
“OPTIONAL”的语义应当参阅RFC-2119 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#RFC2119">[2]。在本中文版规范中被翻译成:“必须”、“必须不”,“需要的”,“将”,“将不”,“应该”,“应该不”,“被推荐的”,“可以”,“可选的”。


本文中使用的命名空间前缀“env”和“enc”等关联的SOAP命名空间分别位于以下位置:" href="http://www.w3.org/2001/06/soap-envelope">http://www.w3.org/2001/06/soap-envelope"
和" href="http://www.w3.org/2001/06/soap-encoding">http://www.w3.org/2001/06/soap-encoding"。


在本文的全部内容中,命名空间前缀"xs"和"xsi"总假定是与" href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema"
和" href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance"相关联的,这是由XML
Schemas规范[ href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#XMLS1">10, href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#XMLS2">11]所定义的。


值得注意的是其他的对命名空间前缀的使用都是比较随意的而并没有显著语义的约束的。


若命名空间的URI使用"http://example.org/..."或"http://example.com/..."的形式,表明这是一些应用依赖或上下文依赖的URI href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#RFC2396">[4]


本规范使用扩充BNF(Backus-Naur Form)作为构造语言,可参阅RFC-2612 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#RFC2616">[5]


编辑的注解将使用黄色背景标识(也许无法在所有的媒介上显示),并使用前缀"Ednote"。

1.3 SOAP消息示例



第一个例子展示了一个使用SOAP表示的简单的通知消息。该消息包含了一个消息头"alertcontrol"和消息体"alert",这两部分都是由应用程序定义的,而而并不是由SOAP定义的。消息头包含了两个参数"priority"和"expires",用于消息传输中介和消息接受者对消息的处理。而消息体中则包含是实际传送的消息。



 


1
2001-06-22T14:00:00-05:00




Pick up Mary at school at 2pm



Sample SOAP Message containing a header
block and a body block


SOAP消息能够与不同的底层协议进行绑定,同时可以在很多种消息传输模式中使用。下面的例子则展示了SOAP是如何在HTTP的连接中使用的,其中充分使用了HTTP提供的请求/相应机制(参阅
href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383526">section
6
)。


Example 1和Example
2展示了一个SOAP/HTTP请求的例子和一个SOAP/HTTP响应的例子。SOAP/HTTP请求包含了一个获取最后交易价格(GetLastTradePrice)的信息块,其中包含了一个简单的参数,指明需要报价的股票代号。同样,与先前的例子相似,GetLastTradePrice这个XML元素也并不是由SOAP自身定义的。该请求的服务响应也包含了一个简单的参数,股票的价格。SOAP信封元素是表示SOAP消息的XML文档的顶级元素。XML命名空间则用来消除SOAP标识符与应用定义的标识符之间可能存在的歧义。



POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://example.org/2001/06/quotes"



env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
DIS



Sample SOAP Message embedded in an HTTP
Request


Example 2展示了StockQuote服务响应由 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Ref477488396">Example
1
描述的请求消息而返回的SOAP消息。



HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn



env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
34.5



Sample SOAP Message embedded in an HTTP
Response


href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383539">Appendix
A
中提供了更多的例子。

1.4 SOAP术语


1.4.1 协议概念



SOAP


关于 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息的格式和 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#_Toc478383605">处理规则、为沿着 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径交换信息而需要的不同应用程序之间 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g110">生成 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g120">接收SOAP消息的交互过程的简单控制机制等的一整套规范和约定。

SOAP绑定


为传输的需要而将SOAP消息在另一个底层协议之上或之内传输的一整套规范和规则。典型的SOAP绑定包括在HTTP消息中传送SOAP消息或在TCP之上传送SOAP消息等。

SOAP结点


SOAP结点根据 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g330">SOAP定义的整套规范来处理 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息。SOAP结点有责任遵守SOAP消息交换的规则以及提供通过依赖底层协议的SOAP绑定来访问的服务。任何不符合SOAP约定的情况都将导致SOAP结点产生一个 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g230">SOAP错误(可参阅 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g120">SOAP接受者 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g110">SOAP发送者)。

1.4.2 数据封装概念



SOAP消息


SOAP消息(message)是在对等SOAP结点( href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP
nodes
)间通讯的基本单位。

SOAP信封


SOAP信封(envelope)是 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g330">SOAP规范中定义的SOAP消息( href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP
message
)在句法上的最外层结构。在句法上,它包含了所有其他的元素。

SOAP条目


SOAP条目是一个句法上的结构,它用于包含一个逻辑上的单一元素,这一元素是需要被 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP结点处理的。一个SOAP条目是由该条目最外层元素的完整修饰名所标识的,这个完整修饰名是由一个局部名和一个命名空间URI组成的。封装在 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g210">SOAP
header
中的SOAP条目成为Header条目,而封装在 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g200">SOAP
body
中的SOAP条目为Body条目。

SOAP header


能够被 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径中任意的SOAP接受者处理的一组 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g400">SOAP条目(0个或多个)。

SOAP body


能够被 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径中的 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g130">最终SOAP接受者处理的一组 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g400">SOAP条目(0个或多个)。

SOAP fault


href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP结点产生的用于包含错误信息的特殊的 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g400">SOAP条目


以下的图表演示了一个SOAP消息是如何组成的。

Figure 1: Encapsulation model illustrating the
parts of a SOAP message

SOAP message model

1.4.3 消息发送者和接收者概念



SOAP发送者


SOAP发送者是发出SOAP消息的 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP结点

SOAP接收者


SOAP接收者是接受SOAP消息的 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP结点

SOAP消息路径


为传送一个简单的 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息而要经过的一组 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g110">SOAP发送者 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g120">SOAP接受者。其中包含了 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g340">初始SOAP发送者、零个或多个 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g140">SOAP中介以及 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g130">最终SOAP接受者

初始SOAP发送者


href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息的最初产生者,同时也是 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径的第一个结点。

SOAP中介


SOAP中介即是 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g120">SOAP接收者也是 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g110">SOAP发送者,是 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息可到达的某一个应用程序。当 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息沿着 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径传输时,SOAP中介将处理一组确定的SOAP条目,然后它将消息转发给消息路径的下一个SOAP结点,直至传送到 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g130">最终SOAP接收者

最终SOAP接收者


href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g340">初始SOAP发送者指定的通过 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径传送 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息的最终 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g120">SOAP接收者。如果在 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g100">SOAP消息路径中有 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g105">SOAP结点产生了 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g230">SOAP错误,那么 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息将不会到达最终接收者。

1.4.4 数据编码概念



SOAP数据模型


一组抽象的构造约定,用于描述通用的数据类型和数据中的链接关系。

SOAP数据编码


href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g170">SOAP消息中使用一个或多个SOAP条目,按照 href="file:///F:/Documents%20and%20Settings/Fennivel/My%20Documents/tWork.Web.Service/2-SOAP/SOAP%20Version%201_2.htm#g270">SOAP数据模型完成句法上的数据表示。

  

 本文Tagssoap  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:SOAP Version 1.2中文手冊(3)
· 下一篇:SOAP Version 1.2中文手冊(1)
· bean里面如何打印到html页面
· 创建移动Web应用程序(7)
· 10天学会ASP.net之第六天
· 在.NET中实现彩色光标和自定义光标
· 如何把存储在数据库中的图片根据自己的需要的大小显示出来


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077