XML News from Thursday, March 23, 2006

The W3C Web Services Addressing Working Group has posted the proposed recommendations of Web Services Addressing 1.0 Core and Web Services Addressing - SOAP Binding. As expected, the working group pretty much ignored all the comments that warned them they were driving the wrong way down the highway (and on the wrong side of the road) and instead focused on the comments about which radio stations to play along the way to inevitable disaster. I don't really care if WS crashes and burns. I just hope they don't run into anybody else's car driving the other way down the road when they do it.

The core spec defines abstract generic extensions to the Infoset for endpoint references and message addressing properties. The binding spec describes how the abstract properties defined in the core spec is implemented in SOAP. The problem is that there already is an addressing system for the Web. It's called the URI, and web services addressing just adds complexity to that for no special benefit. In fact, it's pretty clear that it doesn't do anything except add complexity.

Here's the problem. Web Services Addressing "efines two constructs, message addressing properties and endpoint references, that normalize the information typically provided by transport protocols and messaging systems in a way that is independent of any particular transport or messaging system." In other words this is another example of the excessive genericity problem, just like DOM, and remember how well that worked. One of the big fundamental problems with DOM was that the W3C tried to develop an architecture that could work for all conceivable programming languages; but developers didn't want and didn't need an API for all programming languages. they wanted an API that was tailored to their own programming language. This is why language-specific libraries like XOM and Amara are so much easier to use and more productive than DOM.

Web Services Addressing is trying to define an addressing scheme that can work over HTTP, SMTP, FTP, and any other protocol you can imagine. However, each of these protocols already have their own addressing systems. Developers working with these protocols don't want and don't need a different addressing system that's marginally more compatible with some protocol they're not using in exchange for substantially less compatibility with the protocol they are using. Besides nobody's actually doing web services over anything except HTTP anyway. Doesn't it just make more sense to use the well understood, already implemented debugged HTTP architecture for this instead of inventing something new?