什么是WS-Addressing有用?

时间:2011-10-24 11:48:03

标签: web-services soap ws-addressing

我刚刚开始使用SOAP Web服务,偶然发现了WS-Addressing。

我已阅读Wikipedia page,但我很难理解WS-Addressing的重点是什么。

根据维基百科和网络上的各种来源,WS-Addressing允许将“寻址信息”或“路由信息”放入SOAP请求的标头中。

为什么这有用?如果我通过HTTP(或甚至通过SMTP或UDP)发送请求,那么我发送到的地址是将处理我的请求的服务器的地址,并且服务器可以简单地通过相同的通道进行回复。那么为什么需要寻址/路由信息?

我对一些真实世界(或多或少)WS-Addressing有用的例子特别感兴趣。

1 个答案:

答案 0 :(得分:62)

我发现WS-Addressing在无法立即提供SOAP响应的情况下特别有用。要么形成响应的资源不能立即使用,要么结果本身需要很长时间才能生成。

当您的业务流程涉及“人性化”时(例如WS-HumanTask正在定位的流程),就会发生这种情况。您可以在业务前坚持使用Web服务,但有时业务需要时间。它可能是一个必须手动验证的订阅,需要批准的东西,无论如何,但它需要数天才能完成。你打算一直打开连接吗?除了等待回复,你还会做什么吗?没有!这是低效的。

您需要的是通知流程。客户端发出请求但不等待响应。它通过使用“回复”地址指示服务器在何处发送响应。响应可用后,服务器将连接到该地址并发送响应。

瞧...... Web服务之间的异步交互,将通信进​​程的生命周期与HTTP连接的生命周期分离开来。非常有用......

但等等...... HTTP连接?我为什么要关心这个?如果我希望将响应发送回另一种类型的协议怎么办? (由于它不依赖于任何协议,因此SOAP提供了这种方式)。

对于正常的请求/响应流,响应与请求在同一个通道上,因为它是一个你知道的连接....例如,你有一个HTTP连接......这意味着HTTP输入和HTTP输出。

但是使用WS-Addressing你并不依赖于此。 您可以在其他类型的频道上要求回复。例如,请求来自HTTP,但您可以指示服务器通过SMTP发回响应。

通过这种方式,WS-Addressing定义了标准方式 通过多个传输路由消息。正如wiki page所说:

  

而不是依靠网络级传输来传递路由信息,   利用WS-Addressing的消息可以在标准化的SOAP头中包含自己的调度元数据。

至于你的观察:

  

并且服务器可以简单地通过相同的频道回复

......对某些人有用,对其他人有用,对于其他人我们有WS-Addressing:D。