WS-Addressing and SOAP bindings

Finally, an interesting blogosphere discussion with the Web/REST folks, like the old days. This time the culprit is WS-Addressing and its SOAP binding. Mark sees a potential problem with WS-Addressing and the SOAP/HTTP binding. Jim added his thoughts and here are mine…

I think that Mark misses an important aspect of WS-Addressing and its SOAP binding. When we populate a SOAP envelope with WS-Addressing header elements we don’t necessarily dictate the transport mechanism that is going to be used; in fact, more than one transport may be used for the transfer of one message from its sender to its ultimate receiver.

I believe that when the WG defined the WS-Addressing to SOAP binding, they didn’t assume that the underlying transport would be HTTP. In fact, just because the content of a wsa:To header is an HTTP URL, as it is in Mark‘s example, it doesn’t mean that the SOAP envelope would be transferred via HTTP. There may be any number of intermediaries on the way using arbitrary, unknown to the original sender, transports. Mark‘s SOAP message could be given to a Web Services platform, like Indigo, which would decide that it’d be faster to send that same message via its ‘SOAP over TCP‘ binding rather over HTTP. Obviously a registry or another mechanism to determine the transport-specific address from the wsa:To header would have to exist. Furthermore, the contents of wsa:To could be a non-transport-specific IRI (e.g. urn:services:guid:1234-1234-1234-1234).

The WS-Addressing defines the [destination] abstract property as “an absolute IRI representing the address of the endpoint”. Nowhere it is suggested that the delivery of the message to the identified endpoint must take place through a specific transport. Obviously, most of the implementations would use that information for their transport-specific needs. However, I maintain that WS-Addressing is a SOAP-level addressing mechanism.

I think all the above relate to the “WS-Addressing and protocol independence” discussion we all had some time ago (Stefan has some links).

One response to “WS-Addressing and SOAP bindings”

  1. “we don’t necessarily dictate the transport mechanism that is going to be used”. I get that. In fact, it’s the cause of the problem. I’m trying to get the WS-Addressing folks to do a SOAP/HTTP binding instead of a SOAP binding, because a SOAP binding is necessarily “protocol independent”.

    Also, I understand that using an http URI doesn’t imply HTTP be used for transfer.

    I’m all for multi-protocol support, I just don’t want it done with a lowest common denominator approach of treating application protocols as transport protocols.