我发现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。
这是最好的解释谢谢#user159088 –