日期:2003-03

适用于:全局XML Web 服务架构(GXA)

远程过程调用(RPC)

SOAP 1.1 SOAP 1.2 规范

传输协议:TCP, HTTP, SMTP, 和 MSMQ

Microsoft® .NET Web Services Enhancements 1.0 SP1

XML Schema

摘要

SOAP在分布异构环境中提供一种简单,可扩展,和丰富的XML消息框架(messaging framework), 对定义高层的应用协议提供更强的互操作性(interoperability).

内容

介绍

SOAP 版本

消息框架

扩展性

处理模型

协议绑定

HTTP 绑定

RPC 与编码

SOAP 样式

总结

介绍

 

在昨天SOAP好像只不过是一种清洁产品。现在大多数开发者无法理解没有尖括号的信息(can't hear the word without seeing angle brackets.译注:我理解成现在数据大多以XML表现)。SOAP最初代表" 简单对象访问协议"。如果你几年以前问人询问SOAP的意思,他们会或许说“在internet上与DCOM 和 Corba (如 RPC 调用)做类似工作”。它的原作者们承认他们集中于“对象访问”然后返回,随着时间发展,使SOAP服务于更广泛的应用变得合乎需要。因此,规范的焦点迅速从对象移向通用XML消息框架。

焦点的变化在缩写词SOAP的字母’O’上产生了一个细微的问题。有趣的是,SOAP1.2工作组仍保留(迄今) SOAP这个名字(它太应用的太普遍,很难改变它), 但是决定依靠(against)清楚地说明来避免误解开发者。最新的SOAP1.2规范中正式的SOAP定义,甚至没有涉及对象:

SOAP是一种在分散,分布环境中用来交换结构化信息的轻量级协议。SOAP使用XML 技术来定义一个可扩展的消息框架,这个消息框架提供了一个能在多种下层(underlying)协议上进行交换的消息构造。框架被设计成独立于任何特定的编程模型和其他实现的具体语义。

现在,这个定义真正的描叙了SOAP的实质。SOAP定义了一个方法来将XML消息从A点传送到B点(见图1)。这是靠SOAP提供了一个基于XML的消息框架,它有以下几个特点:

①     可扩展(extensible)

②     能使用多种下层网络协议

③     独立于编程模型

现在来依次讨论这三个特点的更多细节。

图1.简单SOAP消息

首先,SOAP的关键是可扩展性(extensibility)。当SOAP代表一些东西的时候,“S”意为“简单(Simple)”。如果有一件事我们能从web上学到,那就是简单(Simplicity)总能争取(wins over)效率或工业纯度(technical purity)。而且当互操作性处于得失攸关(at stake)时,简单就是绝对的需要。SOAP缺乏多种分布式系统的特点,如安全、路径选择和命名一些可靠性,印证了SOAP保持了最初设计目标――简单。SOAP定义了一个通信框架来允许这些特点作为分层扩展加进来(to be added down the road as layered extensions)。Microsoft 、IBM 和其他软件商正积极着手于一套通用的SOAP扩展, 它将增加大多数开发者期望的一些特点。初始阶段作为全局XML Web 服务架构(GXA)而涉及。Microsoft已经发布一个GXA规范的参考实现, 并称为Microsoft® .NET Web Services Enhancements 1.0 SP1。

其次,SOAP能够基于任何传送协议使用,例如TCP,HTTP,SMTP甚至MSMQ(参阅图1)。不过,为了保持互操作性需要定义标准协议绑定来略述(outline)适合每个环境的规定(rule)。SOAP规范提供一个灵活的框架来定义任意的协议绑定,而且,因为HTTP协议已被广泛使用,现在已经明确定义了一个HTTP协议的绑定。

第三,SOAP允许任何编程模型并且并不依赖RPC。实际上,大多数开发者直接将SOAP等同于在分布式对象上使用RPC调用(因为最初SOAP是关于“访问对象”),基本的SOAP模型象MSMQ一样更近似于传统消息系统。SOAP定义了一个单独处理的单向消息模型。你可以将多条消息合并成一个整体信息进行交换。图1 说明了一条简单的发送者接收不到response的单向消息,不过,接收者可以把response发回给发送人(参阅图2)。SOAP允许任意数量的消息交换模式(message exchange patterns -MEPs), 每个消息交换模式的request/response仅仅只有一个。其他例子包括solicit/reponse( 和request/reponse相反),通知,和长时间运行的点对点会话(peer-to-peer conversations)。

图2. Request/response 消息交换模式

开发者经常将request/response与RPC相混淆,而实际上它们非常不同。RPC使用请求/反应,但是请求/反应不一定是RPC必需的。RPC是允许开发者与方法调用合作的一种编程模型。RPC需要一个方法签名到SOAP消息的转换。由于RPC的普及性,SOAP略述了一个以SOAP来使用RPC的协定(见下文的RPC 和编码这一部分)。

有了这三大特征,SOAP消息框架就能在异构的环境中方便的发送XML消息了,而互操作性在这些异构的环境中早就是一个挑战了。

SOAP 版本

      从最初发布SOAP规范对今天的广泛实现的SOAP1.1,很多东西已经改变,从小的细节到主要的思想变化。SOAP1.1被提交到W3C,并在2000年5月返回作为备忘录(note)发布。 "W3C 备忘录(Note)"状态使得 SOAP 1.1 仅仅是一个好的想法,因为它还没有通过W3C的严格程序,在这个程序中它会最终达到实现的“建议书(Recommendation)”状态 。虽然如此,现在在如此广泛的大或小的应用提供商支持下,SOAP1.1仍然被认为为实际上的标准。

W3C使用SOAP1.1建议书作为原本(seed)来让一个新的XML 协议工作组负责生成下一个SOAP版本, 目前命名为SOAP1.2。在目前,SOAP1.2是"候选建议书",这表明它在实现阶段内而且离完成不远。 一旦SOAP1.2 成为"建议书" ,它可能会迅速得到应用提供商的支持。

在SOAP1.2 实现之后,应用提供商会为向后兼容而继续支持SOAP1.1。SOAP版本化(versioning)是基于XML 命名空间。SOAP 1.1对应于http://schemas.xmlsoap.org/soap/envelope 命名空间,而SOAP 1.2对应于http://www.w3.org/2002/12/soap-envelope 命名空间(尽管在它成为建议书时会有改变)。

参阅表格1来快速参考每个命名空间的名字和规范的位置。在整个余下的文章中,我们将覆盖SOAP中最重要的地方。在两个版本的广泛的变更列表中检查当前的SOAP 1.2规范。

表1.SOAP版本信息

SOAP 1.1

 

命名空间名字

http://schemas.xmlsoap.org/soap/envelope/

规范位置

http://www.w3.org/TR/SOAP/

SOAP 1.2

 

命名空间名字

http://www.w3.org/2002/12/soap-envelope

规范位置

http://www.w3.org/TR/soap12-part0/ (原始)

http://www.w3.org/TR/soap12-part1/

http://www.w3.org/TR/soap12-part2/

理解SOAP (一)介绍、SOAP 版本、相关推荐

  1. SOAP协议规范介绍

    SOAP协议规范 1. 简介 SOAP以XML形式提供了一个简单.轻量的用于在分散或分布环境中交换结构化和类型信息的机制.SOAP本身并没有定义任何应用程序语义,如编程模型或特定语义的实现:实际上它通 ...

  2. 【java SOAP】对SOAP的一个个人印象

    开这个坑源于我现在做的一个项目用到了SOAP.关于SOAP的知识我就不做详细介绍了.我也没有开发过SOAP服务端, 只是要用到客户端. 作为一个意识流选手,我大概说一下我工作过程中对SOAP的印象. ...

  3. Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    Python:Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3)).安装.学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略 ...

  4. Matlab软件有哪些版本,matlab软件功能简要介绍及版本描述

    <matlab软件功能简要介绍及版本描述>由会员分享,可在线阅读,更多相关<matlab软件功能简要介绍及版本描述(2页珍藏版)>请在人人文库网上搜索. 1.MATLAB功能简 ...

  5. endnote按照apa6th格式复制_APA格式介绍-全面版本

    APA格式介绍-全面版本 APA (American Psychological Association) style is most commonly used to cite sources wi ...

  6. java soap axis,使用SOAP开发java web服务 Axis开发方案

    使用SOAP开发java web服务 Axis开发方案 本文的预定读者首先要对j2ee有所了解,熟悉xml,tomcat等基本内容,本文主要是简单介绍一下web服务的基本内容,怎样在java web开 ...

  7. ebpf深入理解和应用介绍

    1. ebpf概述 1.1 ebpf发展历史 BPF,及伯克利包过滤器Berkeley Packet Filter,最初构想提出于 1992 年,其目的是为了提供一种过滤包的方法,并且要避免从内核空间 ...

  8. python soap服务_Python SOAP服务器/客户端

    我在使用Python和SOAP时遇到问题. 我需要在Python中基于SOAP创建一个Web服务. 我读到可以使用soaplib,suds和ZSI之类的库. 我使用soaplib创建了一个Hello ...

  9. Python语言的简介(语言特点/pyc介绍/Python版本语言兼容问题(python2 VS Python3))、安装、学习路线(数据分析/机器学习/网页爬等编程案例分析)之详细攻略

    目录 Python语言的简介 1.Python的应用领域 2.Python语言特点.对比其它语言 2.1.Python语言特点 2.2.Python语言对比其它语言 3.Python版本语言兼容问题( ...

最新文章

  1. 这套Java调优方案太顶了!同时支撑10个618大促都不是问题
  2. 创建预留mb21添加附加字段的增强
  3. 《windows程序设计》第二章学习心得
  4. MySQL 的索引是什么?怎么优化?
  5. 印度首富之女大婚,贫穷限制了我的想象……
  6. python numpy Quickstart tutorial之ndarray创建
  7. 线性回归实现——梯度下降
  8. 01-maven build项目
  9. 如何在 Linux 中使用 AppImage
  10. JavaScript小数运算出现多位的解决办法
  11. 服务器版本虚拟打印机,虚拟打印机(ImagePrinter)
  12. QPSK调制解调原理(IQ调制)
  13. C语言测量平差课程设计,测量平差课程设计-20210419024415.docx-原创力文档
  14. Deepin-WPS输出PDF文件过大的终极解决办法
  15. 3年间 女子称遭邻居报复放了上千条虫子
  16. python 炒股公式_计算股票公式
  17. 网络安全职业规划(笔记)
  18. 批量安装当前文件夹下的exe文件
  19. idea java新建项目详细步骤
  20. 使用spring的DelegatingFilterProxy 写xss filter

热门文章

  1. 动环监控4大优势,你知道几个?
  2. 硬盘U.2 M.2 SATA SAS区别
  3. CodeForces - 1082B Vova and Trophies
  4. 中大轻纺城源代码Android,中大最全找面料攻略
  5. 课外知识计算机方面,单元一 计算机基础相关知识.pptx
  6. js获取页面光标坐标(x轴y轴)
  7. 微服务-API网关-身份验证
  8. 数据结构实验一(C语言):停车场管理系统
  9. Fragment切换的方式介绍和一些问题的解决
  10. matlab股票分析系统,基于MATLAB的股票行情软件