<?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: Who is Composing Your App?</title>
	<atom:link href="http://www.subbu.org/blog/2008/11/who-is-composing-your-app/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app</link>
	<description>HTTP, REST and some Cycling</description>
	<lastBuildDate>Fri, 12 Mar 2010 22:08:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-12672</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Thu, 04 Dec 2008 15:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-12672</guid>
		<description>@Tiago

Not necessarily. Suppose a client has implemented functionality to &quot;edit&quot; a resource. That is, it knows how to submit a PUT request to the server. The dynamic part is just about whether the client is able to find an &quot;edit&quot; link or not. If it does not find a link in the representation, it can disable that function.</description>
		<content:encoded><![CDATA[<p>@Tiago</p>
<p>Not necessarily. Suppose a client has implemented functionality to &#8220;edit&#8221; a resource. That is, it knows how to submit a PUT request to the server. The dynamic part is just about whether the client is able to find an &#8220;edit&#8221; link or not. If it does not find a link in the representation, it can disable that function.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiago Brandes</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-12613</link>
		<dc:creator>Tiago Brandes</dc:creator>
		<pubDate>Thu, 04 Dec 2008 01:51:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-12613</guid>
		<description>@subbu

Thanks for the reply, I get it now.. that HATEAOS constraint was never clear to me.

But this makes me think:

&lt;blockquote cite=&quot;subbu&quot;&gt;The client does not make assumptions about this contract.&lt;/blockquote&gt;

In my understanding, this means that a client interface must the generated at runtime based on the contract exposed by the server. But what if I want to (or need to) develop a rich client that indeed makes assumptions about the contract? (for example, by not letting the user edit some input fields). Would this be a violation on the REST principles?

I fell that making the client dependent of this contract at runtime makes the system more tightly coupled. Or maybe I&#039;m missing the point again :).</description>
		<content:encoded><![CDATA[<p>@subbu</p>
<p>Thanks for the reply, I get it now.. that HATEAOS constraint was never clear to me.</p>
<p>But this makes me think:</p>
<blockquote cite="subbu"><p>The client does not make assumptions about this contract.</p></blockquote>
<p>In my understanding, this means that a client interface must the generated at runtime based on the contract exposed by the server. But what if I want to (or need to) develop a rich client that indeed makes assumptions about the contract? (for example, by not letting the user edit some input fields). Would this be a violation on the REST principles?</p>
<p>I fell that making the client dependent of this contract at runtime makes the system more tightly coupled. Or maybe I&#8217;m missing the point again :).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-12577</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Wed, 03 Dec 2008 17:51:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-12577</guid>
		<description>@JJ

You are right that the code is not the same, and my comment to @Jim thick enough layering may shield the differences, but I would not do that.

Regarding your comment about Oslo, I can&#039;t agree more.

Linking is about connectedness, and when applications limit representations to plain data, they are completely ignoring the connected nature.</description>
		<content:encoded><![CDATA[<p>@JJ</p>
<p>You are right that the code is not the same, and my comment to @Jim thick enough layering may shield the differences, but I would not do that.</p>
<p>Regarding your comment about Oslo, I can&#8217;t agree more.</p>
<p>Linking is about connectedness, and when applications limit representations to plain data, they are completely ignoring the connected nature.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-12576</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Wed, 03 Dec 2008 17:38:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-12576</guid>
		<description>@Tiago:

The key point here is to note that a server app can use hypermedia to dynamically tie resources together. If you look at the web, it is precisely this mechanism that is used in HTML. That isn&#039;t a niche area. 

Also note that the &quot;state&quot; in HATEAOS refers to the state of the application, viz., where in the flow the client is, and what possible things it can do. 

Describing data as representation may be good enough in some cases, but such a model assumes two things - (a) that all URIs are prepublished, and (b) a client can submit a request for any resource (at a URI) at any time in a completely stateless manner. But most applications are stateful, and linking lets you capture that state.</description>
		<content:encoded><![CDATA[<p>@Tiago:</p>
<p>The key point here is to note that a server app can use hypermedia to dynamically tie resources together. If you look at the web, it is precisely this mechanism that is used in HTML. That isn&#8217;t a niche area. </p>
<p>Also note that the &#8220;state&#8221; in HATEAOS refers to the state of the application, viz., where in the flow the client is, and what possible things it can do. </p>
<p>Describing data as representation may be good enough in some cases, but such a model assumes two things &#8211; (a) that all URIs are prepublished, and (b) a client can submit a request for any resource (at a URI) at any time in a completely stateless manner. But most applications are stateful, and linking lets you capture that state.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tiago Brandes</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-12515</link>
		<dc:creator>Tiago Brandes</dc:creator>
		<pubDate>Wed, 03 Dec 2008 00:04:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-12515</guid>
		<description>I have little experience with REST, but your approach seems over-designed to me ..

It seems to me that you&#039;re taking the &quot;hypermedia as the engine of application state&quot; a little too far, and it&#039;s looking like &quot;hypermedia as the engine of application workflow and business process&quot;. If I understood well, the resources being exchanged with the server are the workflow descriptions themselves, not just the resources like Products, Baskets, etc. I think an architecture as generic as you describe would be very interesting in some application niches, but not a necessary condition for some system to be considered RESTful. 

I believe the e-commerce basket system described by Alan Dean is already RESTful, since it is based on exchanging resource representations, even tough it doesn&#039;t define the workflow.</description>
		<content:encoded><![CDATA[<p>I have little experience with REST, but your approach seems over-designed to me ..</p>
<p>It seems to me that you&#8217;re taking the &#8220;hypermedia as the engine of application state&#8221; a little too far, and it&#8217;s looking like &#8220;hypermedia as the engine of application workflow and business process&#8221;. If I understood well, the resources being exchanged with the server are the workflow descriptions themselves, not just the resources like Products, Baskets, etc. I think an architecture as generic as you describe would be very interesting in some application niches, but not a necessary condition for some system to be considered RESTful. </p>
<p>I believe the e-commerce basket system described by Alan Dean is already RESTful, since it is based on exchanging resource representations, even tough it doesn&#8217;t define the workflow.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Analytics for Web APIs at subbu.org</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-11231</link>
		<dc:creator>Analytics for Web APIs at subbu.org</dc:creator>
		<pubDate>Tue, 18 Nov 2008 04:41:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-11231</guid>
		<description>[...] linking in RESTful apps can reduce client-server coupling as the server can tweak the workflow at runtime without completely breaking client apps. Here is one more reason to switch from static [...]</description>
		<content:encoded><![CDATA[<p>[...] linking in RESTful apps can reduce client-server coupling as the server can tweak the workflow at runtime without completely breaking client apps. Here is one more reason to switch from static [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Jacques Dubray</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-10246</link>
		<dc:creator>Jean-Jacques Dubray</dc:creator>
		<pubDate>Wed, 12 Nov 2008 18:07:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-10246</guid>
		<description>@Jim and @Subbu:

then what is the point of this whole discussion (REST vs WS-*) if the targeted code is the same? Doesn&#039;t it boil down to a marshaling problem? No Sane developer would keep writing boiler plate code be it REST/HTTP based or WS-* based. 

The question is what are the patterns of interaction of &quot;connected systems&quot;, I contend that this is the real question, this is what developers need. We have concepts such as Service, Resource, Event that seem (and are) relevant to building connected systems. Who can believe that Resource is enough, or Service is enough or Event is enough? 

Look at the Oslo team view of REST: http://www.ebpml.org/blog/149.htm (last figure, the Echo &quot;service&quot;), people are obviously confused about all these concepts, and I mean, even grand pumbas of industry can&#039;t get it right. This is just one example, Roy recently complained about everybody on the planet claiming they are RESTful.

@Jim
&gt;&gt; IMHO The REST/SOAP layers define the public access...
IMHO, this is a mistake to think this way. The problem we have today is that there is a tremendous mismatch between traditional application models and what is required to build &quot;connected systems&quot;. Resource orientation, Service Orientation and Event Orientation are all important and complementary concepts to build connected systems. It is a mistake to think that using SOAP or HTTP to expose traditional application model semantics is going to cut it. You need to rethink the application model and the assembly model (assembly as in connected system). I have written a book about it that can be downloaded for free on InfoQ (Composite Software Construction).</description>
		<content:encoded><![CDATA[<p>@Jim and @Subbu:</p>
<p>then what is the point of this whole discussion (REST vs WS-*) if the targeted code is the same? Doesn&#8217;t it boil down to a marshaling problem? No Sane developer would keep writing boiler plate code be it REST/HTTP based or WS-* based. </p>
<p>The question is what are the patterns of interaction of &#8220;connected systems&#8221;, I contend that this is the real question, this is what developers need. We have concepts such as Service, Resource, Event that seem (and are) relevant to building connected systems. Who can believe that Resource is enough, or Service is enough or Event is enough? </p>
<p>Look at the Oslo team view of REST: <a href="http://www.ebpml.org/blog/149.htm" rel="nofollow">http://www.ebpml.org/blog/149.htm</a> (last figure, the Echo &#8220;service&#8221;), people are obviously confused about all these concepts, and I mean, even grand pumbas of industry can&#8217;t get it right. This is just one example, Roy recently complained about everybody on the planet claiming they are RESTful.</p>
<p>@Jim<br />
&gt;&gt; IMHO The REST/SOAP layers define the public access&#8230;<br />
IMHO, this is a mistake to think this way. The problem we have today is that there is a tremendous mismatch between traditional application models and what is required to build &#8220;connected systems&#8221;. Resource orientation, Service Orientation and Event Orientation are all important and complementary concepts to build connected systems. It is a mistake to think that using SOAP or HTTP to expose traditional application model semantics is going to cut it. You need to rethink the application model and the assembly model (assembly as in connected system). I have written a book about it that can be downloaded for free on InfoQ (Composite Software Construction).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-10166</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Wed, 12 Nov 2008 03:19:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-10166</guid>
		<description>Is there anything that can&apos;t be fixed by layering ;)</description>
		<content:encoded><![CDATA[<p>Is there anything that can&apos;t be fixed by layering ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Alateras</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-9992</link>
		<dc:creator>Jim Alateras</dc:creator>
		<pubDate>Tue, 11 Nov 2008 02:24:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-9992</guid>
		<description>I definitely think you can use the same code base to support both REST and SOAP abstractions. The abstractions would be different (i.e resources vs services) but there is no reason why you can&#039;t define a business layer in your architcture and then layer a thin REST layer to provide a resource-oriented view or a SOAP layer to provide  a service oriented view.  

IMHO The REST/SOAP layers define the public access to your application and map requests/responses to from the business layer.</description>
		<content:encoded><![CDATA[<p>I definitely think you can use the same code base to support both REST and SOAP abstractions. The abstractions would be different (i.e resources vs services) but there is no reason why you can&#8217;t define a business layer in your architcture and then layer a thin REST layer to provide a resource-oriented view or a SOAP layer to provide  a service oriented view.  </p>
<p>IMHO The REST/SOAP layers define the public access to your application and map requests/responses to from the business layer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: subbu</title>
		<link>http://www.subbu.org/blog/2008/11/who-is-composing-your-app/comment-page-1#comment-9962</link>
		<dc:creator>subbu</dc:creator>
		<pubDate>Mon, 10 Nov 2008 20:56:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.subbu.org/?p=621#comment-9962</guid>
		<description>I think I misunderstood your slide. I thought you were referring to using the same code base to do both. Thanks for explaining.</description>
		<content:encoded><![CDATA[<p>I think I misunderstood your slide. I thought you were referring to using the same code base to do both. Thanks for explaining.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
