Time to balance WS-* and REST

Relative needs

The REST documentation consists of Roy Fielding’s PhD dissertation, Architectural Styles and the Design of Network-based Software Architectures. Now chief scientist at Day Software in Newport Beach, California, Fielding contributed substantially to the standards behind the web, especially URI, HTTP, and HTML. He also cofounded the Apache project.

The Semantic web, one of W3C's most important initiatives, is RESTful through and through because it is an extension to the web. Its key idea is that web content and metadata should be understandable, so to speak, by programs as well as people. Using Resource Description Framework (RDF), Web Ontology Language (OWL), and other tools, the Semantic web may well sweep away all other web service approaches - if it ever succeeds on a commercial scale.

Given that REST is the architectural style of the web, it is clearly well suited to applications that involve explicitly reading and writing chunks of data. Content syndication, the technique most of us use to follow blogs, is exactly such an application, so it is hardly surprising that RSS and Atom, the two dominant syndication feed formats, are also among the most frequently cited REST examples. (Interestingly enough, Atom uses RDF internally - its name originally stood for "RDF Site Summary" although it is now expanded, if at all, as "Really Simple Syndication").

As long ago as 2001 Jeff Bone neatly summarized the arguments for using REST, in a way that has hardly been improved on since. "It turns out that the best argument for REST is this: there are no applications you can think of which cannot be made to fit into the GET/ PUT / POST / resources / representations model of the world!... with a little design thought up-front, it is complete enough and flexible enough to subsume all the application semantics you might want". Bone also drew a fascinating parallel with the Unix design guideline that "everything is a file"; in REST, resources take the place of files, while the URI address space is the equivalent of a filesystem.

By 2004 a voluble body of WS-* critics was emerging. Sun Microsystems' Tim Bray declared himself the "Loyal WS-Opposition" and Mike Gunderloy told us all to "WS-JustSayNo”. Bray, no stranger to big complex software systems, thought the WS-* stack "bloated, opaque, and insanely complex". Moreover, he reflected: "I look at Google and Amazon and eBay and Salesforce and see them doing tens of millions of transactions a day involving pumping XML back and forth over HTTP, and I can't help noticing that they don't seem to need much WS-apparatus".

Others soon added their own caustic comments, such as this.

When Amazon launched its open-to-all consumer web services, it decided to offer parallel SOAP and "REST" (XML/HTTP) APIs and see which was the most popular. Very early on, it turned out that 85 per cent chose the REST API, which was simpler and easier to get started with. Yahoo! provided REST-style services only, while eBay gave a choice. To begin with, Google's API was SOAP-only, but now it too has REST options - even for GWT.

In April 2006, when Tim Anderson interviewed Tim O'Reilly for Reg Developer, it was becoming clear that the WS-* v REST controversy was a result of market confusion as much as anything else. O'Reilly disclosed that Andrew Layman, one of Microsoft's SOAP architects, had once told him: "That it was actually a Microsoft objective to make the standard sufficiently complex that only the tools would read and write this stuff, and not humans". Which raises another vexed question: is it really a good idea to generate web services automatically from existing code?

Sponsored: 10 ways wire data helps conquer IT complexity