Potential Differences

Thu, 04 Sep 2003

So, What Are Web Services?

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.

potential differences [/development] permalink