<?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: A Case for WSDL &#8211; Why REST is not the only answer</title>
	<atom:link href="http://chrisdail.com/2009/08/14/a-case-for-wsdl-why-rest-is-not-the-only-answer/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrisdail.com/2009/08/14/a-case-for-wsdl-why-rest-is-not-the-only-answer/</link>
	<description>Writing simple, clear and readable code.</description>
	<lastBuildDate>Mon, 30 Aug 2010 12:22:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Emily</title>
		<link>http://chrisdail.com/2009/08/14/a-case-for-wsdl-why-rest-is-not-the-only-answer/comment-page-1/#comment-802</link>
		<dc:creator>Emily</dc:creator>
		<pubDate>Wed, 02 Jun 2010 21:12:08 +0000</pubDate>
		<guid isPermaLink="false">http://chrisdail.com/?p=61#comment-802</guid>
		<description>You&#039;re quite right that a lot of developers recite other peoples opinions of REST vs SOAP without having any personal experience to back up their uninformed choices. 

Its also interesting that you said WSDL and not SOAP as a whole...  because I think the sweet spot lies in REST which properly strict APIs ala WSDL. 

I&#039;ve been writing a lot of client/server applications in the last 3 years and ofcourse I have always used RESTfull interfaces b/w the two where I had control them, but recently (about 6 months) I&#039;ve had to deal with ASN.1, SOAP, WSDL, CORBA and finally understood what I had been looking for while doing my REST services. I had been looking for an IDL to basically automate my creation of client code.  While REST servers are easy to author, there&#039;s no easy cut dried and pasted way of creating clients that implement the server protocols.

I want to believe any decent developer will reach the same conclusions after developing a little bit too much REST clients against services. Too much typing man.. too much brain dead http calls, json.dumps(), etc

To quickly end this rant ;), I&#039;ll summarize by saying... We tend to throw away the good lessons from the past for the next sparkly new invention/innovation, instead of building on them... ASN.1 was developed a while back and IDL is generally agreed to be advantageous when designing protocols/services. Thought SOAP may be generally bloated and thought REST may be lighter weight and generally easier to develop against, REST still needs something akin to WSDL... an IDL that allows RESTfull services to be easily spec&#039;d and allow clients to automagically generate code for talking to them.

Oh... and a closer look at Thrift and Protocol Buffers also shows that this is a problem worth solving.</description>
		<content:encoded><![CDATA[<p>You&#8217;re quite right that a lot of developers recite other peoples opinions of REST vs SOAP without having any personal experience to back up their uninformed choices. </p>
<p>Its also interesting that you said WSDL and not SOAP as a whole&#8230;  because I think the sweet spot lies in REST which properly strict APIs ala WSDL. </p>
<p>I&#8217;ve been writing a lot of client/server applications in the last 3 years and ofcourse I have always used RESTfull interfaces b/w the two where I had control them, but recently (about 6 months) I&#8217;ve had to deal with ASN.1, SOAP, WSDL, CORBA and finally understood what I had been looking for while doing my REST services. I had been looking for an IDL to basically automate my creation of client code.  While REST servers are easy to author, there&#8217;s no easy cut dried and pasted way of creating clients that implement the server protocols.</p>
<p>I want to believe any decent developer will reach the same conclusions after developing a little bit too much REST clients against services. Too much typing man.. too much brain dead http calls, json.dumps(), etc</p>
<p>To quickly end this rant <img src='http://chrisdail.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , I&#8217;ll summarize by saying&#8230; We tend to throw away the good lessons from the past for the next sparkly new invention/innovation, instead of building on them&#8230; ASN.1 was developed a while back and IDL is generally agreed to be advantageous when designing protocols/services. Thought SOAP may be generally bloated and thought REST may be lighter weight and generally easier to develop against, REST still needs something akin to WSDL&#8230; an IDL that allows RESTfull services to be easily spec&#8217;d and allow clients to automagically generate code for talking to them.</p>
<p>Oh&#8230; and a closer look at Thrift and Protocol Buffers also shows that this is a problem worth solving.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Zurawski</title>
		<link>http://chrisdail.com/2009/08/14/a-case-for-wsdl-why-rest-is-not-the-only-answer/comment-page-1/#comment-446</link>
		<dc:creator>John Zurawski</dc:creator>
		<pubDate>Thu, 20 Aug 2009 13:45:57 +0000</pubDate>
		<guid isPermaLink="false">http://chrisdail.com/?p=61#comment-446</guid>
		<description>I think that SOAP and REST both provide advantages depending on the problem and environment. However, I would like to make a few arguments in favor of why REST has some key features that actually make it &lt;i&gt;more&lt;/i&gt; friendly in the area of &lt;em&gt;Machines Consuming Web Services&lt;/em&gt;.

&lt;em&gt;- Uniform interface --&lt;/em&gt;
If a human or a machine looks at the WSDL interface, how do they tell which methods create the resource, update or delete the resource? You would have to get everyone to use the same naming conventions in order for it to be clear without consulting external documentation, which a machine can&#039;t do and won&#039;t easily be able to understand. With REST it&#039;s very clear what standard HTTP methods you can use in the most common CRUD operations.


&lt;em&gt;- Hyperlinks in resources --&lt;/em&gt;
A well-designed REST API uses hyperlinks in the resources, so you know what else you can do with the resource. This is the HATEOAS feature and is the most often looked aspect of REST. It allows a machine to discover what states are possible for a resource and what are the related resources. That feature built on the uniform interface, in my opinion, actually makes it easier for a machine to determine what it can do when
in encounters a completely new web service. And with the support of AtomPub 
some of these states are more explicit for a machine to understand. With WSDL it&#039;s easier for the machine to parse, but a human user still has to map those operations to their actual meanings before anything useful can be done.


&lt;em&gt;- Known side-effects --&lt;/em&gt;
The caller clearly knows side-effects and which calls are idempotent.  Whether a SOAP method call is going to have side-effects is not known.  With REST it&#039;s known implicitly by the HTTP method being used by the caller. WSDL does not encode what web methods have side effects.


&lt;em&gt;- Standard error codes&lt;/em&gt;
With REST you have a standard set of HTTP error codes.  Sure you have the SOAP fault, but my understanding is the interpretation of that fault is mostly application dependent. There is no standard way  of encoding specific failures related to the operation that a machine can  understand. On the other hand, with REST combined with known side-effects,  a caller can make a more well-informed choice about the repercussions of  re-trying a REST call.</description>
		<content:encoded><![CDATA[<p>I think that SOAP and REST both provide advantages depending on the problem and environment. However, I would like to make a few arguments in favor of why REST has some key features that actually make it <i>more</i> friendly in the area of <em>Machines Consuming Web Services</em>.</p>
<p><em>- Uniform interface &#8211;</em><br />
If a human or a machine looks at the WSDL interface, how do they tell which methods create the resource, update or delete the resource? You would have to get everyone to use the same naming conventions in order for it to be clear without consulting external documentation, which a machine can&#8217;t do and won&#8217;t easily be able to understand. With REST it&#8217;s very clear what standard HTTP methods you can use in the most common CRUD operations.</p>
<p><em>- Hyperlinks in resources &#8211;</em><br />
A well-designed REST API uses hyperlinks in the resources, so you know what else you can do with the resource. This is the HATEOAS feature and is the most often looked aspect of REST. It allows a machine to discover what states are possible for a resource and what are the related resources. That feature built on the uniform interface, in my opinion, actually makes it easier for a machine to determine what it can do when<br />
in encounters a completely new web service. And with the support of AtomPub<br />
some of these states are more explicit for a machine to understand. With WSDL it&#8217;s easier for the machine to parse, but a human user still has to map those operations to their actual meanings before anything useful can be done.</p>
<p><em>- Known side-effects &#8211;</em><br />
The caller clearly knows side-effects and which calls are idempotent.  Whether a SOAP method call is going to have side-effects is not known.  With REST it&#8217;s known implicitly by the HTTP method being used by the caller. WSDL does not encode what web methods have side effects.</p>
<p><em>- Standard error codes</em><br />
With REST you have a standard set of HTTP error codes.  Sure you have the SOAP fault, but my understanding is the interpretation of that fault is mostly application dependent. There is no standard way  of encoding specific failures related to the operation that a machine can  understand. On the other hand, with REST combined with known side-effects,  a caller can make a more well-informed choice about the repercussions of  re-trying a REST call.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Essien Ita Essien</title>
		<link>http://chrisdail.com/2009/08/14/a-case-for-wsdl-why-rest-is-not-the-only-answer/comment-page-1/#comment-444</link>
		<dc:creator>Essien Ita Essien</dc:creator>
		<pubDate>Fri, 14 Aug 2009 16:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://chrisdail.com/?p=61#comment-444</guid>
		<description>You&#039;re quite right that a lot of developers recite other peoples opinions of REST vs SOAP without having any personal experience to back up their uninformed choices. 

Its also interesting that you said WSDL and not SOAP as a whole...  because I think the sweet spot lies in REST which properly strict APIs ala WSDL. 

I&#039;ve been writing a lot of client/server applications in the last 3 years and ofcourse I have always used RESTfull interfaces b/w the two where I had control them, but recently (about 6 months) I&#039;ve had to deal with ASN.1, SOAP, WSDL, CORBA and finally understood what I had been looking for while doing my REST services. I had been looking for an IDL to basically automate my creation of client code.  While REST servers are easy to author, there&#039;s no easy cut dried and pasted way of creating clients that implement the server protocols.

I want to believe any decent developer will reach the same conclusions after developing a little bit too much REST clients against services. Too much typing man.. too much brain dead http calls, json.dumps(), etc

To quickly end this rant ;), I&#039;ll summarize by saying... We tend to throw away the good lessons from the past for the next sparkly new invention/innovation, instead of building on them... ASN.1 was developed a while back and IDL is generally agreed to be advantageous when designing protocols/services. Thought SOAP may be generally bloated and thought REST may be lighter weight and generally easier to develop against, REST still needs something akin to WSDL... an IDL that allows RESTfull services to be easily spec&#039;d and allow clients to automagically generate code for talking to them.

Oh... and a closer look at Thrift and Protocol Buffers also shows that this is a problem worth solving.</description>
		<content:encoded><![CDATA[<p>You&#8217;re quite right that a lot of developers recite other peoples opinions of REST vs SOAP without having any personal experience to back up their uninformed choices. </p>
<p>Its also interesting that you said WSDL and not SOAP as a whole&#8230;  because I think the sweet spot lies in REST which properly strict APIs ala WSDL. </p>
<p>I&#8217;ve been writing a lot of client/server applications in the last 3 years and ofcourse I have always used RESTfull interfaces b/w the two where I had control them, but recently (about 6 months) I&#8217;ve had to deal with ASN.1, SOAP, WSDL, CORBA and finally understood what I had been looking for while doing my REST services. I had been looking for an IDL to basically automate my creation of client code.  While REST servers are easy to author, there&#8217;s no easy cut dried and pasted way of creating clients that implement the server protocols.</p>
<p>I want to believe any decent developer will reach the same conclusions after developing a little bit too much REST clients against services. Too much typing man.. too much brain dead http calls, json.dumps(), etc</p>
<p>To quickly end this rant <img src='http://chrisdail.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , I&#8217;ll summarize by saying&#8230; We tend to throw away the good lessons from the past for the next sparkly new invention/innovation, instead of building on them&#8230; ASN.1 was developed a while back and IDL is generally agreed to be advantageous when designing protocols/services. Thought SOAP may be generally bloated and thought REST may be lighter weight and generally easier to develop against, REST still needs something akin to WSDL&#8230; an IDL that allows RESTfull services to be easily spec&#8217;d and allow clients to automagically generate code for talking to them.</p>
<p>Oh&#8230; and a closer look at Thrift and Protocol Buffers also shows that this is a problem worth solving.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
