Lists Home |
Date Index |
I started to write this as a reply to Paul's insightful comments on the
difficulties of statefulness in SOAP/WSDL, but realized after a while
that the question's a little simpler.
When I first saw SOAP, I pretty much saw it through the eyes that
XML-RPC had trained - as a more powerful mechanism for accessing APIs
through Remote Procedure Calls (RPC). While I have some fondness for
XML-RPC when used in relatively simple and small environments, I have
deep qualms about using RPC in general on any large scale over any long
period of time. RPC is brittle, breakable, etc. - we've been over that
Now I'm seeing comments like Adam Bosworth's piece in the newly-titled
"XML & Web Services Magazine".
Loose coupling is central to the nature of Web services-based
application integration. That's why it seems to me that the right model
for XML in Web services is a message-oriented, document-based one rather
than one based on remote procedure calls.
Okay, so we agree. But this leaves me asking what exactly SOAP brings to
I have a hard time believing that wrapping envelopes around my content
genuinely blesses it, or that liberal use of xsi:type is that helpful,
or that using elements with unqualified names inside of elements with
qualified names makes the slightest bit of sense. SOAP's restraints on
XML features may make some people shiver slightly less, and maybe
there's a notion of a framework worth discussion, but to be honest, I
can't see any real benefit. A vocabulary for fault codes? (Okay, a
second wave of hype.)
WSDL is, to me, more interesting than SOAP, but not any prettier.
I think that in the end I'm asking whether SOAP has any real added
value, apart from its most frequently disclaimed but still most popular
use: RPC over HTTP.
I read the specs, I look over the examples, and I shake my head. I gave
up arguing on xml-dist-app long ago because no one seemed to be asking
the same kinds of questions. Now I wonder if maybe I should just wait
for the Web Services hype to fade, and hope that XML (with REST, or
something similar) gets a second chance afterward.
Ring around the content, a pocket full of brackets
Errors, errors, all fall down!