<?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: Service oriented REST architecture is an oxymoron</title>
	<atom:link href="http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/</link>
	<description>Dhananjay Nene's opinions on software programming, design, architecture and the internet</description>
	<lastBuildDate>Sun, 28 Feb 2010 03:58:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: SOA needs Services and Resources :: Andrej Koelewijn</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9186</link>
		<dc:creator>SOA needs Services and Resources :: Andrej Koelewijn</dc:creator>
		<pubDate>Sat, 24 Oct 2009 20:37:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9186</guid>
		<description>[...] for achieving SOA goals. One of the reactions he got on a previous post on this topic states that REST and SOA are incompatible, as REST is not about services but about resources or documents (with a standardized [...]</description>
		<content:encoded><![CDATA[<p>[...] for achieving SOA goals. One of the reactions he got on a previous post on this topic states that REST and SOA are incompatible, as REST is not about services but about resources or documents (with a standardized [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Martinez</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9162</link>
		<dc:creator>William Martinez</dc:creator>
		<pubDate>Thu, 01 Oct 2009 20:50:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9162</guid>
		<description>Hello guys.
One think I learned long, long ago is nobody is totally right or wrong. 
I do agree partially with Dhananjay (still disagree with the CRUD vision), and also partially with Jean-Jacques.

For instance, one of my opinions in SOA is that it is a myth that BPM is the natural couple of SOA. It treats SOA as a component that supports BPM. This is also converting SOA into an artifact that has no much value on its own if not used to support BPM. Furthermore, many BPM implementations are so focused on the IT part that forget BPM is all about business. 
(This and other myths about SOA I presented in a short video in the Architecture Journal from Microsoft, in case you wonder)

So, getting back to the discussion of contracts, it is clear to me that there should be a shared knowledge, implicit understanding of concepts, a glossary (think IANA as a repository). As a user reads a login form and understands what to do, so an agent should be able to get a content type and know how to read it. It is like playing a chess game: not two games are equal, but you can play since you know how to move the pieces.

REST is extremely difficult to catch. HATEOAS is the least understood. That is what the goal is, at least to me: discuss until everybody is in the same page.

One thing is clear, and both of you got it right: SOA is not REST, and Services are not Resources. Now, SOA and REST are not aimed to the same goal either. 
REST is a networked, hypermedia oriented style.
SOA is a business, message oriented one. 
I would not have much problem to choose one of them
And If I need BPM, I would think first how is my solution architected. I would never replace BPM with REST, that makes no sense to me!

Cheers!</description>
		<content:encoded><![CDATA[<p>Hello guys.<br />
One think I learned long, long ago is nobody is totally right or wrong.<br />
I do agree partially with Dhananjay (still disagree with the CRUD vision), and also partially with Jean-Jacques.</p>
<p>For instance, one of my opinions in SOA is that it is a myth that BPM is the natural couple of SOA. It treats SOA as a component that supports BPM. This is also converting SOA into an artifact that has no much value on its own if not used to support BPM. Furthermore, many BPM implementations are so focused on the IT part that forget BPM is all about business.<br />
(This and other myths about SOA I presented in a short video in the Architecture Journal from Microsoft, in case you wonder)</p>
<p>So, getting back to the discussion of contracts, it is clear to me that there should be a shared knowledge, implicit understanding of concepts, a glossary (think IANA as a repository). As a user reads a login form and understands what to do, so an agent should be able to get a content type and know how to read it. It is like playing a chess game: not two games are equal, but you can play since you know how to move the pieces.</p>
<p>REST is extremely difficult to catch. HATEOAS is the least understood. That is what the goal is, at least to me: discuss until everybody is in the same page.</p>
<p>One thing is clear, and both of you got it right: SOA is not REST, and Services are not Resources. Now, SOA and REST are not aimed to the same goal either.<br />
REST is a networked, hypermedia oriented style.<br />
SOA is a business, message oriented one.<br />
I would not have much problem to choose one of them<br />
And If I need BPM, I would think first how is my solution architected. I would never replace BPM with REST, that makes no sense to me!</p>
<p>Cheers!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill de hÓra</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9161</link>
		<dc:creator>Bill de hÓra</dc:creator>
		<pubDate>Thu, 01 Oct 2009 19:14:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9161</guid>
		<description>&quot;This is what -ALL- the RESTafarians are claiming.&quot;

Not me. That&#039;s why I worked on RDF, which has an actual formal semantics. It happens to use URIs for identifiers but that&#039;s not critical to the model theory. So given that mistake, the rest of your post doesn&#039;t need refuting.

By the way, does the BPM family have semantics, or is it still scripting hooks doing the real orchestration work? That&#039;s no more or less lala that saying a client can transition application state by traversing links.</description>
		<content:encoded><![CDATA[<p>&#8220;This is what -ALL- the RESTafarians are claiming.&#8221;</p>
<p>Not me. That&#8217;s why I worked on RDF, which has an actual formal semantics. It happens to use URIs for identifiers but that&#8217;s not critical to the model theory. So given that mistake, the rest of your post doesn&#8217;t need refuting.</p>
<p>By the way, does the BPM family have semantics, or is it still scripting hooks doing the real orchestration work? That&#8217;s no more or less lala that saying a client can transition application state by traversing links.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Jacques Dubray</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9160</link>
		<dc:creator>Jean-Jacques Dubray</dc:creator>
		<pubDate>Thu, 01 Oct 2009 16:07:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9160</guid>
		<description>You are probably not reading the scriptures of Tim Bray, Steve Vinosky, Stefan Tilkov, Bill deHora, Bill Burke and so many others.

&gt;&gt; REST precludes mandatory aprioriness (eg. as required by WSDL), it does not preclude aprioriness per se. 

We agree violently again.  So why don&#039;t we make all that very clear and you ask/convince your RESTafarians colleagues to stop making these lala claims that metadata automagically flows and HATEOAS can be used serendipitously in server-to-server scenarios.

&gt;&gt; it does not preclude aprioriness per se. 
What is the point of using &quot;documents&quot; when you can have a machine readable artifacts? You think that &quot;hand coding&quot; is better than tool generation?

&gt;&gt;  CRUD is not only good for, but is the only consistent way to build REST over HTTP.
CRUD is the worst coupling you can establish between two software agents, even between a human and software agent.</description>
		<content:encoded><![CDATA[<p>You are probably not reading the scriptures of Tim Bray, Steve Vinosky, Stefan Tilkov, Bill deHora, Bill Burke and so many others.</p>
<p>&gt;&gt; REST precludes mandatory aprioriness (eg. as required by WSDL), it does not preclude aprioriness per se. </p>
<p>We agree violently again.  So why don&#8217;t we make all that very clear and you ask/convince your RESTafarians colleagues to stop making these lala claims that metadata automagically flows and HATEOAS can be used serendipitously in server-to-server scenarios.</p>
<p>&gt;&gt; it does not preclude aprioriness per se.<br />
What is the point of using &#8220;documents&#8221; when you can have a machine readable artifacts? You think that &#8220;hand coding&#8221; is better than tool generation?</p>
<p>&gt;&gt;  CRUD is not only good for, but is the only consistent way to build REST over HTTP.<br />
CRUD is the worst coupling you can establish between two software agents, even between a human and software agent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9159</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Thu, 01 Oct 2009 12:36:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9159</guid>
		<description>Jean-Jacques,

Great to start off with an agreement on the fact that resource orientation and service orientation are two very different ways of approaching a problem, and REST does not emphasise service orientation.  However this agreement quickly fades when we get to the remainder of your comment.

&lt;blockquote&gt;and that’s the major lalaland argument of RESTafarians, the exchange of arbitrary metadata between two software agents without an a priori agreed upon meaning of this metadata is at best dangerous if not plain stupid&lt;/blockquote&gt;

I cannot recall any single reasonably formal documentation about REST which asserts what you state above. What REST recommends is that you ship in band information so that apriori meaning of data is not mandatory - which is entirely different than saying that it precludes any apriori agreement. The tolerance to lack of apriori information is a function of the client agent sophistication - and we shall see agents with a variety of sophistication levels. I cannot imagine in the short run,  sites offering REST APIs without offering documentation on the resource metadata. Thats why many sites which to offer REST / REST like API offer documentation wikis which break down that information about media types in some level of detail. REST precludes mandatory aprioriness (eg. as required by WSDL), it does not preclude aprioriness per se. Such apriori communication is really outside the scope of the agents and usually through simple wiki pages today. In the context of HATEOAS, there again is required some apriori information on the link types and media types. The apriori information that is not required is the URIs themselves. If you really look at it carefully - the aprioriness exists here too, its just been driven higher by one level of abstraction. Thus when agents can be built to a sophisticated level of capabilities, REST allows a mechanism of in band metadata communication that is not supported by WS-*. Thats the real difference. I think the danger and stupidity you state is a result of a misunderstanding that should be corrected.

&lt;blockquote&gt;As soon as you understand this point you realize all that is missing in REST to make it useful for anything as you build an Enterprise Solution, and frankly it is the main reason why RESTful examples are limited to simple, often CRUDish data access APIs because these don’t require much metadata exchanges.&lt;/blockquote&gt;

Thats inconsistent with my understanding. REST examples are CRUDish because of the uniform interface imposed by HTTP. In fact I dwell in a fair detail on the topic in my earlier post &lt;a href=&quot;http://blog.dhananjaynene.com/2009/08/crud-is-not-only-good-for-but-is-the-only-consistent-way-to-build-rest-over-http/&quot; rel=&quot;nofollow&quot;&gt;CRUD is not only good for, but is the only consistent way to build REST over HTTP&lt;/a&gt;. Just like I made the distinction between service orientation vs. resource orientation, I would like to make another distinction between using CRUD for data access (as conventionally understood) and CRUD for resource access (as usually used in REST). The apparent simplicity of the CRUDish APIs is actually a strength when you view CRUD from a resource orientation perspective.</description>
		<content:encoded><![CDATA[<p>Jean-Jacques,</p>
<p>Great to start off with an agreement on the fact that resource orientation and service orientation are two very different ways of approaching a problem, and REST does not emphasise service orientation.  However this agreement quickly fades when we get to the remainder of your comment.</p>
<blockquote><p>and that’s the major lalaland argument of RESTafarians, the exchange of arbitrary metadata between two software agents without an a priori agreed upon meaning of this metadata is at best dangerous if not plain stupid</p></blockquote>
<p>I cannot recall any single reasonably formal documentation about REST which asserts what you state above. What REST recommends is that you ship in band information so that apriori meaning of data is not mandatory &#8211; which is entirely different than saying that it precludes any apriori agreement. The tolerance to lack of apriori information is a function of the client agent sophistication &#8211; and we shall see agents with a variety of sophistication levels. I cannot imagine in the short run,  sites offering REST APIs without offering documentation on the resource metadata. Thats why many sites which to offer REST / REST like API offer documentation wikis which break down that information about media types in some level of detail. REST precludes mandatory aprioriness (eg. as required by WSDL), it does not preclude aprioriness per se. Such apriori communication is really outside the scope of the agents and usually through simple wiki pages today. In the context of HATEOAS, there again is required some apriori information on the link types and media types. The apriori information that is not required is the URIs themselves. If you really look at it carefully &#8211; the aprioriness exists here too, its just been driven higher by one level of abstraction. Thus when agents can be built to a sophisticated level of capabilities, REST allows a mechanism of in band metadata communication that is not supported by WS-*. Thats the real difference. I think the danger and stupidity you state is a result of a misunderstanding that should be corrected.</p>
<blockquote><p>As soon as you understand this point you realize all that is missing in REST to make it useful for anything as you build an Enterprise Solution, and frankly it is the main reason why RESTful examples are limited to simple, often CRUDish data access APIs because these don’t require much metadata exchanges.</p></blockquote>
<p>Thats inconsistent with my understanding. REST examples are CRUDish because of the uniform interface imposed by HTTP. In fact I dwell in a fair detail on the topic in my earlier post <a href="http://blog.dhananjaynene.com/2009/08/crud-is-not-only-good-for-but-is-the-only-consistent-way-to-build-rest-over-http/" rel="nofollow">CRUD is not only good for, but is the only consistent way to build REST over HTTP</a>. Just like I made the distinction between service orientation vs. resource orientation, I would like to make another distinction between using CRUD for data access (as conventionally understood) and CRUD for resource access (as usually used in REST). The apparent simplicity of the CRUDish APIs is actually a strength when you view CRUD from a resource orientation perspective.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Jacques Dubray</title>
		<link>http://blog.dhananjaynene.com/2009/10/service-oriented-rest-architecture-is-an-oxymoron/comment-page-1/#comment-9158</link>
		<dc:creator>Jean-Jacques Dubray</dc:creator>
		<pubDate>Thu, 01 Oct 2009 11:22:11 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dhananjaynene.com/?p=835#comment-9158</guid>
		<description>Dhananjay,

thank you for your response. I am glad we are in agreement that REST is not service oriented, and it is not because REST IS-A Service (not sure everyone would agree with that) you can build service oriented solutions from it. 

As you may know the relationship between BPM and SOA is one of my dearest topic and the main reason for expressing so much negativity about REST.  BPM has been crippled by extremely naive visions of what a business process is and unfortunately REST is pushing BPM further back. I have written an article explaining the relationship between BPM, resources and service orientation. I have even created a concept called WSPER to support it. Here is a link to the article: www.infoq.com/articles/seven-fallacies-of-bpm

When you describe a process in REST
&gt;&gt; The focus here is the tasks being done and the protocol for the task instructions. ...

I am not sure you ever wrote one using the REST principles you describe. In case you have not noticed, and that&#039;s the major lalaland argument of RESTafarians, the exchange of arbitrary metadata between two software agents without an a priori agreed upon meaning of this metadata is at best dangerous if not plain stupid. You either need a shared taxonomy or you need an out of band negotiation of the meaning of &quot;data structures, actions,...&quot; saying &quot;I just ship metadata from A to B and automagically B understands what to do&quot; does not make any sense. This is what -ALL- the RESTafarians are claiming. It (kind of) works when B is a human using a browser, it always works for sure when REST is limited to be the &quot;Web Page CRUD Service&quot; for which it was originally designed, but it is criminal to drive scores of people to believe that metadata can be exchanged without any a priori agreement.

As soon as you understand this point you realize all that is missing in REST to make it useful for anything as you build an Enterprise Solution, and frankly it is the main reason why RESTful examples are limited to simple, often CRUDish data access APIs because these don&#039;t require much metadata exchanges.</description>
		<content:encoded><![CDATA[<p>Dhananjay,</p>
<p>thank you for your response. I am glad we are in agreement that REST is not service oriented, and it is not because REST IS-A Service (not sure everyone would agree with that) you can build service oriented solutions from it. </p>
<p>As you may know the relationship between BPM and SOA is one of my dearest topic and the main reason for expressing so much negativity about REST.  BPM has been crippled by extremely naive visions of what a business process is and unfortunately REST is pushing BPM further back. I have written an article explaining the relationship between BPM, resources and service orientation. I have even created a concept called WSPER to support it. Here is a link to the article: <a href="http://www.infoq.com/articles/seven-fallacies-of-bpm" rel="nofollow">http://www.infoq.com/articles/seven-fallacies-of-bpm</a></p>
<p>When you describe a process in REST<br />
&gt;&gt; The focus here is the tasks being done and the protocol for the task instructions. &#8230;</p>
<p>I am not sure you ever wrote one using the REST principles you describe. In case you have not noticed, and that&#8217;s the major lalaland argument of RESTafarians, the exchange of arbitrary metadata between two software agents without an a priori agreed upon meaning of this metadata is at best dangerous if not plain stupid. You either need a shared taxonomy or you need an out of band negotiation of the meaning of &#8220;data structures, actions,&#8230;&#8221; saying &#8220;I just ship metadata from A to B and automagically B understands what to do&#8221; does not make any sense. This is what -ALL- the RESTafarians are claiming. It (kind of) works when B is a human using a browser, it always works for sure when REST is limited to be the &#8220;Web Page CRUD Service&#8221; for which it was originally designed, but it is criminal to drive scores of people to believe that metadata can be exchanged without any a priori agreement.</p>
<p>As soon as you understand this point you realize all that is missing in REST to make it useful for anything as you build an Enterprise Solution, and frankly it is the main reason why RESTful examples are limited to simple, often CRUDish data access APIs because these don&#8217;t require much metadata exchanges.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.009 seconds -->
