<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-11558121.post115159019387595347..comments</id><updated>2008-05-22T08:07:45.762-04:00</updated><title type='text'>Comments on The View From The Bow: A Flash of Enlightenment in the SOAP vs REST Debat...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://atmanes.blogspot.com/feeds/115159019387595347/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html'/><author><name>Anne Thomas Manes</name><uri>http://www.blogger.com/profile/12283197990602675422</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11558121.post-115169962151690212</id><published>2006-06-30T16:33:00.000-04:00</published><updated>2006-06-30T16:33:00.000-04:00</updated><title type='text'>I definitely need to look more closely, but I beli...</title><content type='html'>I definitely need to look more closely, but I believe that Indigo will support REST, but not that it will allow you deploy a single unit of code and present both a RESTful and SOAPy interface.&lt;BR/&gt;&lt;BR/&gt;Axis2 does indeed provide this functionality, but I'm dubious.  There are two fundamental tenents to REST (mapping to HTTP assumed):&lt;BR/&gt;&lt;BR/&gt;1. A limited number of verbs.  GET and POST are the minimum.  PUT and DELETE are nice to haves.   Retrieving a resource has no side-effects.&lt;BR/&gt;&lt;BR/&gt;2. Everything is a resource that's URL accessible.&lt;BR/&gt;&lt;BR/&gt;Also, HTTP is to be fully leveraged.&lt;BR/&gt;&lt;BR/&gt;Axis2 and (probably) Indigo seem to forget about the 2nd point and the importance of HTTP as an application protocol and not just a transport (that also has a GET).&lt;BR/&gt;&lt;BR/&gt;For instance, here's a description of a simplistic "Employee" SOAP service (in pseudo-code):&lt;BR/&gt;&lt;BR/&gt;service employee&lt;BR/&gt; - operation emp get_employee(id)&lt;BR/&gt; - operation emp[] get_all_employees()&lt;BR/&gt; - operation bool new_employee(emp)&lt;BR/&gt; - operation update_employee(id)&lt;BR/&gt; - operation delete_employee(id)&lt;BR/&gt;&lt;BR/&gt;In SOAP land this is deployed to an endpoint (http://company.com/employee_service).  And, depending on messaging style, the operation name is provided to the service.&lt;BR/&gt;&lt;BR/&gt;But in the REST world an employee is mapped to a URL&lt;BR/&gt;&lt;BR/&gt;http://company.com/employees/123&lt;BR/&gt;&lt;BR/&gt;So, questions:&lt;BR/&gt;&lt;BR/&gt;- Is Indigo or Axis going to know how to, or allow me to, map this URL to employee.get_employee("123")?&lt;BR/&gt;&lt;BR/&gt;- Are they going to map /employees to get_all_employees()?  &lt;BR/&gt;&lt;BR/&gt;- What if I want to map /employees to code that returns a "description" of all employees (e.g. num_employees=100, avg_salary=50000, etc.)?  &lt;BR/&gt;&lt;BR/&gt;- What if I want GET /employees to return a list of employee names with a link to their URL, like this:&lt;BR/&gt;&lt;BR/&gt;&amp;lt;employees&amp;gt;&lt;BR/&gt; &amp;lt;emp_name&amp;gt; xlink:href="http://company.com/employees/123"&gt;John Smith&amp;lt;/emp_name&amp;gt;&lt;BR/&gt;  ...&lt;BR/&gt;&amp;lt;/employees&amp;gt;&lt;BR/&gt;&lt;BR/&gt;Is that even possible?&lt;BR/&gt;&lt;BR/&gt;- Will it know that a POST to /employee/123 is a call to update_employee("123)?  &lt;BR/&gt;&lt;BR/&gt;- If there is no employee numbered 123, will it know to call new_employee instead?  &lt;BR/&gt;&lt;BR/&gt;- Will it return an HTTP response code of 200 or a 201 when an employee is successfully added?&lt;BR/&gt;&lt;BR/&gt;- Since both of these tools only support GET and POST right now, how will they formulate the delete call? POST /employees/123&amp;action="delete" ?  &lt;BR/&gt;&lt;BR/&gt;- What if I want to inform the user-agent, web server, or proxy server about the caching characteritics of my service, can I do that?  &lt;BR/&gt;&lt;BR/&gt;- What if I want to switch URLs, will it return a 301?  &lt;BR/&gt;&lt;BR/&gt;&lt;BR/&gt;All of the above is to say that REST is &lt;I&gt;not&lt;/I&gt; an implementation detail.&lt;BR/&gt;&lt;BR/&gt;Pete</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115169962151690212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115169962151690212'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html?showComment=1151699580000#c115169962151690212' title=''/><author><name>Pete Lacey</name><uri>http://www.blogger.com/profile/04731835854338584589</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html' ref='tag:blogger.com,1999:blog-11558121.post-115159019387595347' source='http://www.blogger.com/feeds/11558121/posts/default/115159019387595347' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-11558121.post-115166986529497882</id><published>2006-06-30T08:17:00.000-04:00</published><updated>2006-06-30T08:17:00.000-04:00</updated><title type='text'>A definition for paradigm for you:  A set of assum...</title><content type='html'>A definition for paradigm for you:  A set of assumptions, concepts, values, and practices that constitutes a way of viewing reality for the community that shares them, especially in an intellectual discipline.&lt;BR/&gt;&lt;BR/&gt;From the simplest perspective, REST views the 'world' of as a set of resources to interact with, using a well-defined set of verbs.  Assuming a uniform implementation, there are, conceivably, fewer side-effects when interacting with a resource using those semantics (e.g. a delete just deletes the resource).  Note that I'm not saying no side effects, just fewer with a correct design.&lt;BR/&gt;&lt;BR/&gt;Soap tends to view the 'world' as exposing API methods, RPC-like, with plenty of potential side effects.  Just like accessing any other method.&lt;BR/&gt;&lt;BR/&gt;So if that's not a paradigm shift, then I don't know what is.&lt;BR/&gt;&lt;BR/&gt;Drinking the Kool Aid?  I'm freakin bathin in it, baby!!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115166986529497882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115166986529497882'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html?showComment=1151669820000#c115166986529497882' title=''/><author><name>Jason R Briggs</name><uri>http://www.blogger.com/profile/08773832531725529893</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html' ref='tag:blogger.com,1999:blog-11558121.post-115159019387595347' source='http://www.blogger.com/feeds/11558121/posts/default/115159019387595347' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-11558121.post-115162604660958655</id><published>2006-06-29T20:07:00.000-04:00</published><updated>2006-06-29T20:07:00.000-04:00</updated><title type='text'>I agree with Steve that REST is not a paradigm shi...</title><content type='html'>I agree with Steve that REST is not a paradigm shift. But REST does have an impact on the interface design. &lt;BR/&gt;&lt;BR/&gt;In other words, if you want to design a service that can support both RESTful and SOAPy interfaces, the service design has to be at least somewhat RESTful. But as long as you design a document-oriented, loosely coupled interface, the service should be able to support any type of interface.&lt;BR/&gt;&lt;BR/&gt;And btw -- both Microsoft Windows Communication Foundation (aka "Indigo") and Apache Axis2 can automatically generate both RESTful and SOAPy interfaces for any service. These frameworks do in fact hide the type of interface as just another "implementation detail".</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115162604660958655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115162604660958655'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html?showComment=1151626020000#c115162604660958655' title=''/><author><name>Anne Thomas Manes</name><uri>http://www.blogger.com/profile/12283197990602675422</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='18343058720738097332'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html' ref='tag:blogger.com,1999:blog-11558121.post-115159019387595347' source='http://www.blogger.com/feeds/11558121/posts/default/115159019387595347' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-11558121.post-115161991142494854</id><published>2006-06-29T18:25:00.000-04:00</published><updated>2006-06-29T18:25:00.000-04:00</updated><title type='text'>Sorry but anyone who thinks that REST is a "paradi...</title><content type='html'>Sorry but anyone who thinks that REST is a "paradigm shift" has been drinking far too much of the Kool Aid.  REST shifts bytes from A to B, SOAP shifts bytes from A to B, so does CORBA, MQSeries, RMI, DCOM, ftp, telnet, rcp, CSV to a socket or carrier pigeon.  The value in the interaction is from the perspective of A and B &lt;I&gt;neither&lt;/I&gt;  of which care about how its done.&lt;BR/&gt;&lt;BR/&gt;The "paradigm shift" will come when IT starts concentrating on the value of the interaction, not on building yet another way to implement the execution context.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115161991142494854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115161991142494854'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html?showComment=1151619900000#c115161991142494854' title=''/><author><name>Steve Jones</name><uri>http://www.blogger.com/profile/18324989580856894788</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html' ref='tag:blogger.com,1999:blog-11558121.post-115159019387595347' source='http://www.blogger.com/feeds/11558121/posts/default/115159019387595347' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-11558121.post-115161608207433404</id><published>2006-06-29T17:21:00.000-04:00</published><updated>2006-06-29T17:21:00.000-04:00</updated><title type='text'>That's a nice management view of the argument from...</title><content type='html'>That's a nice management view of the argument from up in the boxes, but it completely misses the point of what's happening on the field.&lt;BR/&gt;&lt;BR/&gt;The differences between designing REST and Soap/WS systems are nothing less than a paradigm shift in thinking.  You simply cannot ignore that fact, or hide it away as an "implementation detail".</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115161608207433404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11558121/115159019387595347/comments/default/115161608207433404'/><link rel='alternate' type='text/html' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html?showComment=1151616060000#c115161608207433404' title=''/><author><name>Jason R Briggs</name><uri>http://www.blogger.com/profile/08773832531725529893</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://atmanes.blogspot.com/2006/06/flash-of-enlightenment-in-soap-vs-rest.html' ref='tag:blogger.com,1999:blog-11558121.post-115159019387595347' source='http://www.blogger.com/feeds/11558121/posts/default/115159019387595347' type='text/html'/></entry></feed>