This post originated from an RSS feed registered with Agile Buzz
by Greg Vaughn.
Original Post: So, What Are Web Services?
Feed Title: Potential Differences
Feed URL: http://gigavolt.net/blog/development/index.rss
Feed Description: Greg Vaughn on Agile methodologies, Java, OS X, whatever piques my interest!
Werner Vogels tells us that Web Services are not Distributed Objects. I was going to comment on his blog, but as I started writing, I began a spiral of asking more and more fundamental questions and thought it would be more appropriate here.
I’m still trying to figure out what web services are. OK, so they’re not distributed objects in general, but how are they different from a well-designed, stateless, message-based distributed object system that uses XML as a serialization mechanism? Are they just a means of talking about good distributed object architecture in a different context?
To address some of Werner’s points:
Just because distributed objects enable stateful interactions,
doesn’t mean that they are inseparable concepts. I prefer stateless
architectures whenever possible, and the experience people have with web
applications have taught them how to work around a stateless protocol
(HTTP) to add state where needed (and even where it’s not needed in many
cases).
Werner’s insistence on the transport agnostic aspect reminds me of Java
servlets. They are not technically tied to HTTP either. I’ve worked on a
servlet system based around SMTP. However, for all practical purposes
servlets and HTTP are inseparable in 99.9% of techologists’ minds. Will it be different for web services?
In my mind the service nature is at the architectural level. Distributed
objects will be the predominant implementation technology. But OO folks
have been doing distributed service based technologies (Jini) and message
oriented systems for years. What sort of productivity gains can web
services supply above these?
I am glad to hear about the reduction in status of XML-RPC. It’s just a
buzzword-induced performance throttle. Even sticking to the message model,
how are web services fundamentally different from a stateless distributed
object with a single processDocument method that accepts a parameter that
is a rich data structure?
It’s still not clear to me that web services are anything other than a
subset of functionality that distributed objects offer, assuming the same
architectural considerations. Their only distinction is that via XML
they get cheap language interoperability at the expense of
performance, which is not the appropriate tradeoff in all situations.
I’m not trying to be harsh. I really do want to understand what sort
of problems web services help me solve that I can’t already do as easily
with existing tools.