简单对象访问协议:SOAP

SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一种轻量的、简单的、基于XML的协议,它被设计成在WEB上交换结构化的和固化的信息。SOAP可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

SOAP是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。SOAP利用XML技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。

SOAP定义了一种方法以便将XML消息从A点传送到B点(参见图1)。

为此,它提供了一种基于XML且具有以下特性的消息处理框架:1)可扩展;2)可通过多种底层网络协议使用;3)独立于编程模型。以下将分别详细讨论这三种特性。

首先,SOAP可扩展性是关键所在。在这个缩写词还代表某些含义时,"S"意味着“简单”。如果我们从Web中学到了一样东西,那就是简单性总是比效率和纯技术更重要,因而互操作性成败的关键,就在于必须绝对要求简单性。简单性仍然是SOAP的主要设计目标之一,这一点的例证就是SOAP缺少分布式系统的很多特性(如安全性、路由和可靠性等)。SOAP定义了一种通信框架,允许以分层扩展的形式随着时间推移而加入这些特性。

其次,SOAP可在任何传输协议(诸如TCP、HTTP、SMTP,甚至是MSMQ)上使用(参见图1)。然而,为了保持互操作性,需要定义一些标准协议绑定以便草拟用于每种环境的规则。SOAP规范提供了一种用于定义任意协议绑定的灵活框架,并且由于HTTP的使用极为广泛,它现已为HTTP提供了一种显式绑定。

第三,SOAP允许任何编程模型,并且不依赖于RPC。大多数开发人员立刻将SOAP与对分布式对象进行的RPC调用等效起来(因为SOAP最初就是关于“访问对象”的),但实际上,基本的SOAP模型更接近于传统的消息处理系统,如MSMQ。SOAP定义了一种模型以便处理个别的单向消息。你可以将多条消息组合成一条整体的消息交换。图1说明了一种简单的单向消息,其中发送方不会收到响应。但是,接收方可以向发送方发回一条响应(参见图2)。

SOAP允许使用任何数量的消息交换模式(MEP),请求/响应只是其中一种。其他示例包括要求/响应(与请求/响应相对)、通知和长期运行的点对点对话等。

开发人员经常将请求/响应与RPC混为一谈,而实际上二者之间的差别很大。RPC使用请求/响应,但请求/响应不一定就是RPC。RPC是一种允许开发人员进行方法调用的编程模型。RPC需要将方法签名转换成SOAP消息。鉴于RPC的广泛应用,SOAP草拟了一项协议,以便将RPC用于SOAP。

具备这三种主要特性,SOAP消息处理框架就促进了在异构环境中交换XML消息,而在这类环境中,互操作性长久以来都是极大的挑战。 SOAP它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底 层协议交换信息。虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。

SOAP消息基本上是从发送端到接收端的单项传输,但它们常常结合起来执行类似请求/应答的模式。所有的SOAP消息都使用XML编码。一条SOAP消息就是一个包含有一个必需的SOAP的封装包,一个可选的SOAP标头和一个必需的SOAP体块的XML文档。把SOAP绑定到HTTP提供了同时利用SOAP的样式和分散的灵活性的特点以及HTTP的丰富的特征库的优点。在HTTP上传送SOAP并不是说SOAP会覆盖现有的HTTP语义,而是HTTP上的SOAP语义会自然的映射到HTTP语义。在使用HTTP作为协议绑定的场合中,RPC请求映射到HTTP请求上,而RPC应答映射到HTTP应答。然而,在RPC上使 用SOAP并不仅限于HTTP协议绑定。

SOAP的两个主要设计目标是简单性和可扩展性。这就意味着有一些传统消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。比如:分布式垃圾收集 (Distributed garbage collection)、成批传送消息(Boxcarring or batching of messages)、对象引用 (Objects-by-reference(which requires distributed garbage collection))、对象激活(Activation(which requires objects-by-reference))。 质将不是SOAP规范的一部分。比如:分布式垃圾收集 (Distributed garbage collection)、成批传送消息(Boxcarring or batching of messages)、对象引用 (Objects-by-reference(which requires distributed garbage collection))、对象激活(Activation(which requires objects-by-reference))。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值