博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SOAP消息架构
阅读量:6847 次
发布时间:2019-06-26

本文共 1314 字,大约阅读时间需要 4 分钟。

  hot3.png

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

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

131329_yLH9_168814.jpg

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

    
        
            cal2fd33-16e1-4a95-b17e-3ef6744babdc            
    
        
            
45
            

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

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

转载于:https://my.oschina.net/fhd/blog/221338

你可能感兴趣的文章
TNS-12535 TNS-00505的处理方法
查看>>
线段树
查看>>
常用应用软软件
查看>>
UTF-8 带签名和不带签名的区别
查看>>
php错误级别的设置方法
查看>>
C# WinForm开发系列学习 地址 很详细
查看>>
WIN10常用快捷键
查看>>
详细理解servlet实现的几种方式和生命周期
查看>>
黄聪:C#带cookie模拟登录百度
查看>>
JavaScript——HashMap实现
查看>>
maven 检查依赖冲突和版本冲突
查看>>
待解决问题
查看>>
使用icon替换你的网页图标(转)
查看>>
Android权限管理之Android 6.0运行时权限及解决办法
查看>>
图片像素与大小
查看>>
linux磁盘读写性能优化
查看>>
android webview
查看>>
masscan
查看>>
html5--1.5 文本元素
查看>>
oracle 正则表达式
查看>>