Don't hate soap use it for its standards
I tried commenting on Udi Dahan's blog on his article "I hate wsdl" but it if failed so I respond from my blog.
Udi Dahan is ranting on soap after Ted Neward article. Ted says:
WSDL creates tightly-coupled endpoints precisely where loose coupling is necessary, WSDL encourages schema definitions that are inflexible and unevolvable, and WSDL intrinsically assumes a synchronous client-server invocation model that doesn’t really meet the scalability or feature needs of the modern enterprise. And that’s just for starters.
Udi's opinion is that soap prevents a few one-way messaging patterns where you have one request and multiple responsed.
I disagree with his opinion. First of all, soap *does* support one-way messages. Soap works good in fire and forget designs and the behavior is standardized. For an example in his one request multiple responses. This is the exact behaviour that you have with upnp routers with over udp.
The good thing of soap is that it is transport neutral and that it has *standard* ways in the messages level to add reliable messaging, routing, authentication and encryption. Ignoring these powerful attributes is just plain dumb! Soap is meant to lower communication between systems based on contracts including architectural decisions and all in transport neutral context! Loose coupling to the max without sacrifice's in data *and* transport contract because the 'transport' doesn't support certain requirements.
I'm not a soap advocate and I don't promote it at all. Lots of situations where you don't need all this complexity but these are often the scenarios where you don't need to think about a 'service bus' solution at all. And if you do need it than I am a fan of a full soap aware servicebus. Too bad there are none on the market that comply to soap standards but it isn't that difficult to write a soap broker for a few situations in a couple of days.
The only reason I hate soap is that there are several communication styles in the form of rpc/document format, the interoperability issues between frameworks and often the soap framework flexibility to easily add custom/pluggable behavior to influence all soap messages.
Tim's comments of soap indicate two things. The first is his inexperience with soap and the second is his assumptions that interfaces should be flexible (quote: "WSDL encourages schema definitions that are inflexible and unevolvable"). I always learned "interfaces once defined cast in stone". If you want to change the interface then you need to define a new interface based on the original interface and change it. I surely hope Udi doesnt share Tim's opinion on this as that would result in an immediate deletion of his blog in my feed reader!