WS-Addressing有什么用处?

29

我刚刚开始学习SOAP web服务,偶然发现了WS-Addressing。

我已经阅读过维基百科页面,但我很难理解WS-Addressing的实际意义。

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

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

我特别感兴趣的是一些真实世界的例子,说明WS-Addressing有何用处。

1个回答

68

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

例如,当您的业务流程涉及“人为干预”时(像WS-HumanTask所针对的那些流程),这种情况可能会发生。您可以在业务前面放置Web服务,但有时候业务需要时间。它可能是必须手动验证的订阅,需要批准的内容等等,但这需要几天的时间。您会一直保持连接打开吗?您会除了等待响应之外什么都不做吗?不!那是低效的。

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

然后就可以实现Web服务之间的异步交互,将通信过程的生命周期与HTTP连接的生命周期分离。非常有用...

等等…… HTTP连接?我为什么要关心它呢?如果我想在另一种协议上发送响应怎么办呢?(SOAP提供了这种方式,因为它不绑定任何协议)。

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

但使用WS-Addressing时,您不必受此限制。您可以要求将响应发送到另一种类型的通道上。例如,请求可以通过HTTP发送,但您可以指示服务器通过SMTP发送响应。

通过这种方式,WS-Addressing定义了通过多种传输路由消息的标准方法。就像维基页面中所说的那样:

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

至于您的观察:

服务器可以简单地通过同一通道回复

......对于一些人有效的方法,可能对其他人无效,而对于其他人,我们有WS-Addressing :D。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接