什么是WS-Addressing有用?

sle*_*ske 28 soap web-services ws-addressing

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

我已阅读维基百科页面,但我很难理解WS-Addressing的重点.

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

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

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

小智 67

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

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

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

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

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

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

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

通过这种方式,WS-Addressing定义了通过多个传输路由消息的标准方法.正如维基页面所说:

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

至于你的观察:

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

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