Commentary

Roger Smith
 

REST Vs. SOAP, Round 2

Damien Katz, who created the innovative document-oriented database CouchDB, recently stirred up a hornet's nest of controversy among RESTful software enthusiasts with his post entitled "REST, I just don't get it."

Damien Katz, who created the innovative document-oriented database CouchDB, recently stirred up a hornet's nest of controversy among RESTful software enthusiasts with his post entitled "REST, I just don't get it."Katz says, "Just because SOAP is a disaster, doesn't somehow make REST the answer. Simpler is better, and REST is generally simpler than SOAP. But there is nothing wrong with a plain old POST as an RPC call." (REST stands for representational state transfer and is a collection of network architecture principles which outline how resources are defined and addressed.)

"I know what is wrong with SOAP, and it has everything to do with unnecessary complexity and solving the same problems twice. But what is the big advantage of making all your calls into GET PUT and DELETE? If POST can handle everything you need, then what's the problem?"


More Software Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

This caught my eye, since I've recently written about both CouchDB and SOAP/REST architectures recently. A few weeks ago, I suggested that Twitter, the popular microblogging site whose servers have gone down repeatedly in the past six months, should consider a document-oriented database like CouchDB to overcome the performance bottleneck caused by Twitter's MySQL relational database. CouchDB has several attractive database features: it's designed for extreme scalability and is easily deployed to multicore or multiserver clusters -- not to mention the fact that it's fault-tolerant with support for incremental replication and bidirectional conflict detection and resolution. Instead of storing data in relational rows and columns, the database manages a collection of JSON (JavaScript Object Notation) documents. Not the least of CouchDB's attractions is that it's schema-free and provides a RESTful HTTP API for reading and updating (add, edit, delete) database documents. Says Katz: "For CouchDB, REST makes absolutely insanely perfect sense. Read a document, edit, put the document back. Beautiful. But for most applications, enterprise or not, I don't see what the big win is."

Katz's post prompted a wide swing of responses that ranged from Dare Obasanjo's history of the SOAP vs. REST debate (highlighting the complexity of SOAP and the incompleteness of REST) to a few insightful comments from Dave Winer and Tim Bray about what RESTful Web services proponents can learn from remote procedure call (RPC) technologies like SOAP and XML-RPC. Joshua Haberman also agrees with Katz's opposition to one-size-fits-all RESTful solutions:

"The more a service looks like a filesystem, the more REST makes sense. The more any of its operations diverge from being dumb filesystem operations, the more REST breaks down, and the worse of a fit it is."

Obasanjo's followup post RESTful JSON: Bringing REST and RPC Closer Together offers some thought-provoking commentary that might help bridge the current gap in the SOAP vs. REST debate, including the following suggestion: "If you put together the notion of service documents with using JSON as the payload format for a service endpoint, you're close to getting the touted programmer friendliness of RPC technologies like XML-RPC & SOAP/WSDL while still building a RESTful service which works with the Web instead of against it."


Related Reading




Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

InformationWeek encourages readers to engage in spirited, healthy debate, including taking us to task. However, InformationWeek moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing/SPAM. InformationWeek further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
T-Shirt Giveaway T-Shirt Giveaway: Each week we're selecting one great comment from our readers. The author of the comment will receive an InformaitonWeek Community t-shirt. So get posting!
Subscribe to RSS

Resource Links