文档章节

SOAP消息架构

柳哥
 柳哥
发布于 2014/04/12 12:59
字数 876
阅读 164
收藏 8

从发送者到接收者,SOAP消息的传输过程是单向的,因此可以说,SOAP的基本消息交换模式(MEP)是单向的。基于SOAP的web服务应用通过不同的方式对单向消息模式进行组合,可以很自由地建立多种会话模式。在基于SOAP的web服务中,请求/响应消息交换模式可以看作是一个简短的会话,在这个会话中,以一个请求发起,以一个响应结束。请求/响应和要求/响应消息交换模式可以通过适当的方式,根据需要组合在一起以适合不同的会话模式。

尽管SOAP消息的目标是最终接收者,但是SOAP消息架构允许有多个SOAP中介,这些中介是沿发送者到最终接收者路径中的非端点接收者或节点。每一个消息中介都可能在把收到的SOAP消息以自身特有的方式发送到最终接收者之前,对这些SOAP消息进行检查甚至进行一些特定操作。看下图,描绘了一个SOAP发送者、两个消息中介和一个最终接收者:

回顾前面,一个SOAP信封必须拥有一个内容可能为空的报体(Body),以及一个可选的报头(Header)。消息中介应该只对SOAP报头做检查和处理,不应该对SOAP报体做任何操作和更改。对比之下,说明SOAP报头只包括一些适合于最终接收者和中介的元数据信息。比如,SOAP报头可能包括一个发送者作为凭证的数字签名信息,或者包括一个消息体内容何时失效的时间戳。在SOAP中包括在可选报头部分的XML元素通常称之为SOAP报头块(SOAP header block)。下面示例显示了一个SOAP消息,其中包括一个标签为”uuid“的报头块:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header>
        <uuid xmlns="http://ch03.fib"
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
            SOAP-ENV:actor="http://schemas.xmlsoap.org/soap/actor/next">
            cal2fd33-16e1-4a95-b17e-3ef6744babdc
        </uuid>
    </S:Header>
    <S:Body>
        <ns2:countRabbits xmlns:ns2="http://ch03.fib">
            <arg0>45</arg0>
        </ns2:countRabbits>
    </S:Body>
</S:Envelope>

标签为uuid的报头块包括一个通用唯一标识符(UUID),一个以十六进制格式化的字符串所表示的拥有128位长度的数字。顾名思义,UUID代表一个可以计数的唯一标识符。这个例子中,假定每一个服务请求都拥有一个属于请求本身的UUID,这个UUID可能被记录下来作为后续分析。

上面这个uuid报头块包括一个“SOAP-ENV:actor”属性,属性值以"next"单词结尾。在这个模式中,下一个参与者其实就是在消息发送者到最终接收者之间的路径上的下一个“接收者”,因此,每一个消息中介(包括最终接收者)都扮演着一个向下一个接收者传递消息的角色。每一个参与者都期望通过应用程序本身合适的方式检查SOAP报头块。如果节点不能处理报头块,那么这个节点应该抛出一个报错。在SOAP1.2中,通过将一个报头块的"mustUnderstand"属性设置为"true",表示当一个节点不能够处理报头块时必须抛出一个异常。


© 著作权归作者所有

下一篇: SOAP1.1与SOAP1.2
柳哥
粉丝 207
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
Web 服务编程,REST 与 SOAP

<?xml version="1.0" encoding="UTF-8" standalone="no"?><users><user><name>tester</name><link>http://localhost:8182/v1/users/tester</link></user><user><name>tester1</name><link>ht......

职通网
2011/04/28
467
0
Web Service架构

SOAP协议:简单对象访问协议,技术有助于实现大量异构程序和平台之间的互操作性,根据我有限的了解,SOAP是把成熟的基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了一起。比如我们.NET中的W...

旋转木马-千里马
2016/01/06
41
0
SOAP webserivce 和 RESTful webservice 对比及区别

简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用...

JayPark不作死
2014/08/18
2.4K
0
SOAP webserivce 和 RESTful webservice 对比及区别

简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用...

姚君
2014/04/17
16.2K
0
SOAP webserivce 和 RESTful webservice 对比及区别

摘要: 简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMT...

huojiao2006
2017/02/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
4
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部