2011-10-24 125 views
23

我刚刚开始使用SOAP Web服务,并偶然发现了WS-Addressing。什么是WS-Addressing的好处?

我已阅读Wikipedia page,但我很难理解WS-Addressing的含义。

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

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

我会特别感兴趣的是一些真实世界(或多或少)的例子,其中WS-Addressing有帮助。

回答

52

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

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

你需要的是一个通知过程。客户发出请求,但不等待响应。而是通过使用“答复”地址指示服务器在哪里发送响应。一旦响应可用,服务器连接到该地址并发送响应。

And voila ... Web服务之间的异步交互,将通信进​​程的生命周期与HTTP连接的生存期解耦。非常有用...

但是等待...... HTTP连接?我为什么要关心这个?如果我想要将响应发送回另一种类型的协议,该怎么办? (由于它没有绑定到任何协议,所以SOAP提供了这些)。

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

但是,使用WS-Addressing,您并不受此限制。 您可以要求另一种类型的频道的响应。请求以HTTP为例,但您可以指示服务器通过SMTP发回响应,例如。

通过这种方式,WS-Addressing定义了在多个传输中路由消息的标准方式 。由于wiki page是说:

,而不是依赖网络级别的传输传达路由信息, 使用的WS-Addressing可能包含在一个标准化的SOAP头自身的调度元数据的消息。

,并为您的观察:

和服务器可以简单地通过相同的信道

回复......一些什么工作,可能不为别人打工,和其他我们有WS-Addressing:D。

+1

这是最好的解释谢谢#user159088 –