<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Enterprise Geeks Podcast &#8211; SOAP vs. REST</title>
	<atom:link href="http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/feed/" rel="self" type="application/rss+xml" />
	<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/</link>
	<description></description>
	<lastBuildDate>Fri, 11 May 2012 19:30:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Raúl Mosquera</title>
		<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/comment-page-1/#comment-1331</link>
		<dc:creator>Raúl Mosquera</dc:creator>
		<pubDate>Tue, 08 Sep 2009 01:47:43 +0000</pubDate>
		<guid isPermaLink="false">http://enterprisegeeks.com/blog/?p=1410#comment-1331</guid>
		<description>Cool podcast, very interesting and funny n_n.</description>
		<content:encoded><![CDATA[<p>Cool podcast, very interesting and funny n_n.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DJ Adams</title>
		<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/comment-page-1/#comment-1329</link>
		<dc:creator>DJ Adams</dc:creator>
		<pubDate>Sat, 05 Sep 2009 19:56:50 +0000</pubDate>
		<guid isPermaLink="false">http://enterprisegeeks.com/blog/?p=1410#comment-1329</guid>
		<description>(Great comments, Murray, by the way)

Thomas, also great comments, but I&#039;d like to address the &#039;limited to GET, POST...&#039; angle. You pretty much nailed it when you described how it changes your thinking about the architecture. So in that way, don&#039;t see the HTTP verbs as being limited, see the interface as being uniform, consistent, and predictable. You can have as many nouns -- resources, URLs, *things* -- as you desire, and the way you manipulate those things is the same no matter what. This approach gives many advantages, not least in being able to properly use application firewalls to see what the intent of an incoming call is.

Contrast this with SOAP, where there is no consistency, no uniformity. With REST you get the verb, and the intention, in the header; you don&#039;t need to look into the body. And that verb predictable. With SOAP, you not only have to look into the body to find the method name, but also have to figure out what it&#039;s going to do (Only read? Update? Create? etc). The inconsistency can even be seen in your example list of SOAP calls (I know it&#039;s only an example, but nonetheless...).

Anyway, I totally agree with the fact that your perception changes.

dj</description>
		<content:encoded><![CDATA[<p>(Great comments, Murray, by the way)</p>
<p>Thomas, also great comments, but I&#8217;d like to address the &#8216;limited to GET, POST&#8230;&#8217; angle. You pretty much nailed it when you described how it changes your thinking about the architecture. So in that way, don&#8217;t see the HTTP verbs as being limited, see the interface as being uniform, consistent, and predictable. You can have as many nouns &#8212; resources, URLs, *things* &#8212; as you desire, and the way you manipulate those things is the same no matter what. This approach gives many advantages, not least in being able to properly use application firewalls to see what the intent of an incoming call is.</p>
<p>Contrast this with SOAP, where there is no consistency, no uniformity. With REST you get the verb, and the intention, in the header; you don&#8217;t need to look into the body. And that verb predictable. With SOAP, you not only have to look into the body to find the method name, but also have to figure out what it&#8217;s going to do (Only read? Update? Create? etc). The inconsistency can even be seen in your example list of SOAP calls (I know it&#8217;s only an example, but nonetheless&#8230;).</p>
<p>Anyway, I totally agree with the fact that your perception changes.</p>
<p>dj</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas</title>
		<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/comment-page-1/#comment-1328</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Sat, 05 Sep 2009 16:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://enterprisegeeks.com/blog/?p=1410#comment-1328</guid>
		<description>Thanks for the podcast was fun listening to it. Here are my 2 cents concerning REST vs. SOAP based on my experience working with REST in my current project.

1) SOAP is pretty slow compared to REST. So if you want to build a client server application and need really fast response times I would recommend REST since the SOAP stack is quite heavy.

2) For me the biggest thing about REST vs. SOAP is how it changes my thinking about the architecture of the application. I like to call it Verbs (SOAP) vs. Nouns (REST). In REST the set of verbs are fixed. If you decide to use REST via http you are limited to GET, POST, PUT and DELETE. Every resource which you expose via REST only has those set of verbs. SOAP on the other side offers the flexibility to bundle a couple of verbs. Let me give an example. Consider a scenario in which a user has to log into an application.

A possible REST solution would have one resource called session. You can then map the http verbs to the resource:

- GET /session -&gt; Return whether the user is logged in or not
- POST /session -&gt; Creates a new session for a given user
- DELETE /session -&gt; Logs out the user
- PUT /session -&gt; Update the session with some new information

A possible SOAP solution could be a bundle of services:

- LogInUser()
- LogOutUser()
- IsUserLoggedIn()
- UpdateUserInformation

It is quite interesting how your perception of a domain changes once you move from verbs to nouns.</description>
		<content:encoded><![CDATA[<p>Thanks for the podcast was fun listening to it. Here are my 2 cents concerning REST vs. SOAP based on my experience working with REST in my current project.</p>
<p>1) SOAP is pretty slow compared to REST. So if you want to build a client server application and need really fast response times I would recommend REST since the SOAP stack is quite heavy.</p>
<p>2) For me the biggest thing about REST vs. SOAP is how it changes my thinking about the architecture of the application. I like to call it Verbs (SOAP) vs. Nouns (REST). In REST the set of verbs are fixed. If you decide to use REST via http you are limited to GET, POST, PUT and DELETE. Every resource which you expose via REST only has those set of verbs. SOAP on the other side offers the flexibility to bundle a couple of verbs. Let me give an example. Consider a scenario in which a user has to log into an application.</p>
<p>A possible REST solution would have one resource called session. You can then map the http verbs to the resource:</p>
<p>- GET /session -&gt; Return whether the user is logged in or not<br />
- POST /session -&gt; Creates a new session for a given user<br />
- DELETE /session -&gt; Logs out the user<br />
- PUT /session -&gt; Update the session with some new information</p>
<p>A possible SOAP solution could be a bundle of services:</p>
<p>- LogInUser()<br />
- LogOutUser()<br />
- IsUserLoggedIn()<br />
- UpdateUserInformation</p>
<p>It is quite interesting how your perception of a domain changes once you move from verbs to nouns.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Murray Spork</title>
		<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/comment-page-1/#comment-1261</link>
		<dc:creator>Murray Spork</dc:creator>
		<pubDate>Fri, 04 Sep 2009 23:20:25 +0000</pubDate>
		<guid isPermaLink="false">http://enterprisegeeks.com/blog/?p=1410#comment-1261</guid>
		<description>I would like to elaborate on DJ&#039;s comment about mime types:  One of the many misunderstandings about REST is that it implies &quot;contract free&quot;. In reality, the combination of HTTP and HTML gives a very explicit contract - actually a much richer contract than any WSDL could ever give. 

The confusion comes because people think of HTTP as a transport protocol - when in fact it is an application level protocol. By itself, HTTP is not sufficient; as DJ already implied - you also need an associated &quot;media type&quot; (such as text/html).

The challenge for those who want to use HTTP for server-to-server communication in a true RESTful manner, is that you need to find the appropriate media-type to play the same role that HTML does for browser-to-server communication.  Protocols like Atom and Atompub get you some of the way. But even a combination of HTTP + Atom + Atompub is not sufficient. Of course, most of us don&#039;t want to have to define our own media type for every single application we want to expose this way. The way Google handle this with their GData APIs may be a reasonable compromise (is not strictly RESTful - but it&#039;s probably close enough to still capture most of the benefits of REST).   

BTW - Dan&#039;s explanation of the extreme late binding nature of RESTful services was great. Fielding called this &quot;Hypertext as the engine of application state&quot;. This can be a difficult thing for developers, who are more used to RPC style integration, to get their heads around. If you find people describing their Web APIs as &quot;REST based&quot; - but you find no (or very few) URLs are returned in any response body - then please dismiss the &quot;REST&quot; label in this case as pure marketing.</description>
		<content:encoded><![CDATA[<p>I would like to elaborate on DJ&#8217;s comment about mime types:  One of the many misunderstandings about REST is that it implies &#8220;contract free&#8221;. In reality, the combination of HTTP and HTML gives a very explicit contract &#8211; actually a much richer contract than any WSDL could ever give. </p>
<p>The confusion comes because people think of HTTP as a transport protocol &#8211; when in fact it is an application level protocol. By itself, HTTP is not sufficient; as DJ already implied &#8211; you also need an associated &#8220;media type&#8221; (such as text/html).</p>
<p>The challenge for those who want to use HTTP for server-to-server communication in a true RESTful manner, is that you need to find the appropriate media-type to play the same role that HTML does for browser-to-server communication.  Protocols like Atom and Atompub get you some of the way. But even a combination of HTTP + Atom + Atompub is not sufficient. Of course, most of us don&#8217;t want to have to define our own media type for every single application we want to expose this way. The way Google handle this with their GData APIs may be a reasonable compromise (is not strictly RESTful &#8211; but it&#8217;s probably close enough to still capture most of the benefits of REST).   </p>
<p>BTW &#8211; Dan&#8217;s explanation of the extreme late binding nature of RESTful services was great. Fielding called this &#8220;Hypertext as the engine of application state&#8221;. This can be a difficult thing for developers, who are more used to RPC style integration, to get their heads around. If you find people describing their Web APIs as &#8220;REST based&#8221; &#8211; but you find no (or very few) URLs are returned in any response body &#8211; then please dismiss the &#8220;REST&#8221; label in this case as pure marketing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: KK Ramamoorthy</title>
		<link>http://enterprisegeeks.com/blog/2009/08/27/egeeks-podcast-episode-27/comment-page-1/#comment-1260</link>
		<dc:creator>KK Ramamoorthy</dc:creator>
		<pubDate>Fri, 04 Sep 2009 16:05:50 +0000</pubDate>
		<guid isPermaLink="false">http://enterprisegeeks.com/blog/?p=1410#comment-1260</guid>
		<description>@DJ, thanks for your comment. Regarding more than 2 parties, I meant integration scenarios that are serial in nature where the message makes multiple hops. If the message is persisted all the way through and if you want to maintain single sign on, SOAP has options like SAML, not sure if REST APIs have options? 
Thanks
KK</description>
		<content:encoded><![CDATA[<p>@DJ, thanks for your comment. Regarding more than 2 parties, I meant integration scenarios that are serial in nature where the message makes multiple hops. If the message is persisted all the way through and if you want to maintain single sign on, SOAP has options like SAML, not sure if REST APIs have options?<br />
Thanks<br />
KK</p>
]]></content:encoded>
	</item>
</channel>
</rss>

