WSE2.0变化 自适应网络服务时代到来
改进后的协议文本WS-Addressing
对WS-Routing改进后的WS-Addressing出现在2004年中叶,新的协议中为Web服务寻址提供了传输中立的机制。WS-Addressing使WS-Routing的简化形式化,并且添加了少量其他功能,下面的表1中列出了这些功能。WS-Addressing 正式放弃了与消息路径相关的 WS-Routing 元素(包括 <r:path>、<r:fwd> 和 <r:rev>),并且假定用户将依靠"下一个跃点"方式来解决路由需要。WS-Addressing 定义的大多数元素在语义上等价于最初在 WS-Routing 中定义的元素。
表1 WS-Addressing主要功能一览表
|
名称 |
WS-Routing 祖先 |
类型 |
说明 |
|
wsa:MessageID |
r:path/r:id |
xsd:anyURI |
用于在时间和空间上唯一标识该消息的 URI。 |
|
wsa:RelatesTo |
r:path/r:relatesTo |
xsd:anyURI |
一对值,说明该消息与另一个消息如何相关。关系类型用 QName 来标识。相关的消息由对应于相关消息 MessageID 值的 URI 来标识。答复消息必须包含 wsa:RelatesTo 标头,该标头由 wsa:Reply 和请求消息的消息 ID 属性组成。 |
|
wsa:To |
r:path/r:to |
xsd:anyURI |
该消息的预期接收方的地址。 |
|
wsa:Action |
r:path/r:action |
xsd:anyURI |
标识符,用于唯一地(和不透明地)标识该消息所暗示的语义。 |
|
wsa:From |
r:path/r:from |
endpoint-ref |
对作为消息来源的终结点的引用。 |
|
wsa:ReplyTo |
N/A |
endpoint-ref |
终结点引用,标识答复该消息的预期接收方。如果期望得到答复,则消息必须包含 wsa:ReplyTo 标头。发送方必须使用 wsa:ReplyTo 标头的内容来表示答复消息。如果没有 wsa:ReplyTo 标头,则可能使用 wsa:From 标头的内容来编制到来源的消息。如果消息无有意义的答复,则可能不存在该属性。如果有该属性,则 wsa:MessageID 标头是 REQUIRED。 |
|
wsa:FaultTo |
N/A |
endpoint-ref |
终结点引用,用于标识接收与该消息相关的错误的预期接收方。表示错误消息时,发送方必须使用该引用的内容来表示错误消息。如果没有该引用,发送方可能使用 wsa:ReplyTo 的内容来表示错误消息。如果该引用和 wsa:ReplyTo 都不存在,则发送方可能使用 wsa:From 的内容来表示错误消息。如果有该属性,则 [message id] 属性是 REQUIRED。 |
其中,<wsa:To>用来指定消息的目标,<wsa:Action>用来定义操作,<wsa:MessageID>用来为消息指定唯一的ID。在答复消息时,使用<wsa:RelatesTo>标头和它的RelationshipType属性表示答复消息与请求消息之间的关系。WS-Addressing中,请求消息时只有<wsa:To>和<wsa:Action>是必需的(其他元素是可选的),支持WS-Addressing的SOAP基础结构应当基于这两个值来调度消息。在中间路由节点,可以将<wsa:To>视为逻辑地址,并提供到物理地址的简单转换。
在 WS-Routing 中,<r:from> 只是 URI。在 WS-Addressing 中,<wsa:From> 元素的类型是终结点引用。终结点引用使得将其他终结点元数据与地址一起传递成为可能。理想情况下,终结点引用将包含足够的信息,以便客户能够自动协商交互方式。为了完成这个操作,终结点引用必须将地址与用来发现合约详细信息和策略的其他属性包含在一起。这些其他属性可能包括服务名称、端口名称、端口类型以及用来描述服务的要求、功能和首选项的 WS-Policy 语句。引用还应当能够包含所需数量的应用程序特有的属性。