<?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: No Choreography for REST &#8211; Take Two</title>
	<atom:link href="http://www.subbu.org/blog/2007/11/no-choreography-for-rest-take-two/feed" rel="self" type="application/rss+xml" />
	<link>http://www.subbu.org/blog/2007/11/no-choreography-for-rest-take-two</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 05:16:45 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Steve Ross-Talbot</title>
		<link>http://www.subbu.org/blog/2007/11/no-choreography-for-rest-take-two/comment-page-1#comment-173150</link>
		<dc:creator>Steve Ross-Talbot</dc:creator>
		<pubDate>Fri, 07 Oct 2011 14:29:34 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2007/11/no-choreography-for-rest-take-two/#comment-173150</guid>
		<description>Can we have a single formalism to describe interactions? I think the answer here lies in a revised question about the expressiveness needed to describe interactions and in the definition of interaction.

If the definition of interaction is a send and receive pair as a minimum (so no sending without some receiving going on) then CDL can describe all possible implementable interactions. It is based formally on pi-calculus and pi is turing complete. pi does allow a send with not receive but CDL does not. 

Only 4 years late in responding......</description>
		<content:encoded><![CDATA[<p>Can we have a single formalism to describe interactions? I think the answer here lies in a revised question about the expressiveness needed to describe interactions and in the definition of interaction.</p>
<p>If the definition of interaction is a send and receive pair as a minimum (so no sending without some receiving going on) then CDL can describe all possible implementable interactions. It is based formally on pi-calculus and pi is turing complete. pi does allow a send with not receive but CDL does not. </p>
<p>Only 4 years late in responding&#8230;&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Subbu Allamaraju</title>
		<link>http://www.subbu.org/blog/2007/11/no-choreography-for-rest-take-two/comment-page-1#comment-170</link>
		<dc:creator>Subbu Allamaraju</dc:creator>
		<pubDate>Tue, 18 Dec 2007 14:20:53 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2007/11/no-choreography-for-rest-take-two/#comment-170</guid>
		<description>&quot;I think most of the toolkits opt for the &quot;Framework-level&quot; proxy instead of the &quot;network-level&quot; proxy to insert CDL policy. Or, in other words, they&#039;re not building an ESB, they&#039;re building an Axis-wrapper.&quot;

Right. Of course, some ESBs may be able to do well in this area, possibly tying this with governance.

Just like there is no single distributed programming model/protocol, I would argue that there won&#039;t/can&#039;t be a single formal description language to describe interactions between systems. WS-CDL can only do so much. Just like UML did not fix all the modeling problems!

&quot;So, it seems a RESTful CDL would
- describe the ordering constraints of a particular media type&#039;s anchors
- provide a language to help a user agent track long-lived client-side variables as it crawls across representations.
- handle more than XML-based interaction&quot;

Possibly. If someone claims to have a universal description/orchestration language, they better include resource-oriented systems, or whatever we come up with in future as well. IMO, that is going to be a limitation with most service composition-level specifications. They can only formalize certain aspects of certain distributed systems, but unfortunately claims don&#039;t stop there. Instead of saying that &quot;okay, we understand what you are doing with REST, but sorry our technology does not deal with your systems&quot;, they say &quot;your approach is incomplete, and so use our approach for everything&quot; (quotes mine).

Thanks for your thoughtful comments.

Subbu
</description>
		<content:encoded><![CDATA[<p>&#8220;I think most of the toolkits opt for the &#8220;Framework-level&#8221; proxy instead of the &#8220;network-level&#8221; proxy to insert CDL policy. Or, in other words, they&#8217;re not building an ESB, they&#8217;re building an Axis-wrapper.&#8221;</p>
<p>Right. Of course, some ESBs may be able to do well in this area, possibly tying this with governance.</p>
<p>Just like there is no single distributed programming model/protocol, I would argue that there won&#8217;t/can&#8217;t be a single formal description language to describe interactions between systems. WS-CDL can only do so much. Just like UML did not fix all the modeling problems!</p>
<p>&#8220;So, it seems a RESTful CDL would<br />
- describe the ordering constraints of a particular media type&#8217;s anchors<br />
- provide a language to help a user agent track long-lived client-side variables as it crawls across representations.<br />
- handle more than XML-based interaction&#8221;</p>
<p>Possibly. If someone claims to have a universal description/orchestration language, they better include resource-oriented systems, or whatever we come up with in future as well. IMO, that is going to be a limitation with most service composition-level specifications. They can only formalize certain aspects of certain distributed systems, but unfortunately claims don&#8217;t stop there. Instead of saying that &#8220;okay, we understand what you are doing with REST, but sorry our technology does not deal with your systems&#8221;, they say &#8220;your approach is incomplete, and so use our approach for everything&#8221; (quotes mine).</p>
<p>Thanks for your thoughtful comments.</p>
<p>Subbu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stu</title>
		<link>http://www.subbu.org/blog/2007/11/no-choreography-for-rest-take-two/comment-page-1#comment-169</link>
		<dc:creator>Stu</dc:creator>
		<pubDate>Mon, 10 Dec 2007 12:10:53 +0000</pubDate>
		<guid isPermaLink="false">http://wp.subbu.org/2007/11/no-choreography-for-rest-take-two/#comment-169</guid>
		<description>My understanding of it is limited, but the question is:  how is a CDL tool or framework able to actually monitor and/or enforce a choreography description?

A number of ways for monitor and/or enforce
- An application-layer network intermediary , particularly for CDL-enabling legacy services, like an ESB.
- A framework that augments intercepts calls at the framework level (i.e. inside Axis)
- Some code generation, taking it a bit further than WSDL already does
- A framework that will help pick &quot;next possible steps&quot; in the choreography, track variables, channels, etc. for you
- A framework that hooks into your WS stack to watch what you&#039;re doing, perform correlation, etc.
- One also needs to ensure the services are &quot;CDL-aware&quot;, in that they need to pass channel references around, as a URI, or WS-Addressing, EPR, etc., and if they&#039;re not already doing so with some kind of unique Message ID, this could be automated by a CDL framework.

I think most of the toolkits opt for the &quot;Framework-level&quot; proxy instead of the &quot;network-level&quot; proxy to insert CDL policy.  Or, in other words, they&#039;re not building an ESB, they&#039;re building an Axis-wrapper.

During the standards process, I recall there was contention about the necessity of BPEL vs. CDL because it is hard to see the difference at a high level when &quot;enforcing&quot; a CDL:  they&#039;re both supported by implementation-level frameworks, and they&#039;re both talking about describing business processes.   People didn&#039;t really get CDL&#039;s nuance, hence why BPEL has taken off.

The difference, as I see it, is subtle:

- BPEL is really an *execution language* on a single node.   The endpoints that BPEL talks to don&#039;t need to know that the parent was implemented in Java, .NET, Ruby, or BPEL.

- Whereas CDL is not something executed, it&#039;s more of a spec of control flow that is shared across all of the systems that interact with one another; while it can also indicate what &quot;next steps&quot; are required, like BPEL, it also has a declarative way to specify the detection of errors &amp; throwing of exceptions to who isn&#039;t playing by the rules *without* requiring a centralized orchestrator.

So you could think of CDL as being *both* an &quot;interaction variance checker&quot; and a &quot;distributed process execution language&quot;.   The latter part is somewhat more controversial, obviously.

The Pi4Tech stuff, by the way, was started by Steve Ross-Talbot, who was probably the #1 public champion for WS-CDL (that I&#039;ve seen), and was the chair of the W3C working group.   I recall he has some very good reasons for popularizing this technology.

Anyway, Pi4SOA isn&#039;t documented (at all), so you&#039;d have to browse CVS to figure it out, along with the Sourceforge discussions.

Some discussions I found a bit enlightening:
&lt;a href=&quot;http://sourceforge.net/forum/forum.php?thread_id=1515687&amp;forum_id=419139&quot; rel=&quot;nofollow&quot;&gt;http://sourceforge.net/forum/forum.php?thread_id=1515687&amp;forum_id=419139&lt;/a&gt;

One area that interests me in CDL vs. REST:    &quot;Hypermedia as the engine of application state&quot;, in the RESTful web, is how we construct interaction machines.   To me, hypermedia already exhibits much of what we want in a choreography-driven SOA, in that it specifies the possible interactions at runtime, with ordering constraints and whether they&#039;ll have side-effects or not (GET, PUT or POST) defined by the media type.   The problem is that these are usually defined in a human-readable RFC or specification.

So, it seems a RESTful CDL would
- describe the ordering constraints of a particular media type&#039;s anchors
- provide a language to help a user agent track long-lived client-side variables as it crawls across representations.
- handle more than XML-based interaction

</description>
		<content:encoded><![CDATA[<p>My understanding of it is limited, but the question is:  how is a CDL tool or framework able to actually monitor and/or enforce a choreography description?</p>
<p>A number of ways for monitor and/or enforce<br />
- An application-layer network intermediary , particularly for CDL-enabling legacy services, like an ESB.<br />
- A framework that augments intercepts calls at the framework level (i.e. inside Axis)<br />
- Some code generation, taking it a bit further than WSDL already does<br />
- A framework that will help pick &#8220;next possible steps&#8221; in the choreography, track variables, channels, etc. for you<br />
- A framework that hooks into your WS stack to watch what you&#8217;re doing, perform correlation, etc.<br />
- One also needs to ensure the services are &#8220;CDL-aware&#8221;, in that they need to pass channel references around, as a URI, or WS-Addressing, EPR, etc., and if they&#8217;re not already doing so with some kind of unique Message ID, this could be automated by a CDL framework.</p>
<p>I think most of the toolkits opt for the &#8220;Framework-level&#8221; proxy instead of the &#8220;network-level&#8221; proxy to insert CDL policy.  Or, in other words, they&#8217;re not building an ESB, they&#8217;re building an Axis-wrapper.</p>
<p>During the standards process, I recall there was contention about the necessity of BPEL vs. CDL because it is hard to see the difference at a high level when &#8220;enforcing&#8221; a CDL:  they&#8217;re both supported by implementation-level frameworks, and they&#8217;re both talking about describing business processes.   People didn&#8217;t really get CDL&#8217;s nuance, hence why BPEL has taken off.</p>
<p>The difference, as I see it, is subtle:</p>
<p>- BPEL is really an *execution language* on a single node.   The endpoints that BPEL talks to don&#8217;t need to know that the parent was implemented in Java, .NET, Ruby, or BPEL.</p>
<p>- Whereas CDL is not something executed, it&#8217;s more of a spec of control flow that is shared across all of the systems that interact with one another; while it can also indicate what &#8220;next steps&#8221; are required, like BPEL, it also has a declarative way to specify the detection of errors &#038; throwing of exceptions to who isn&#8217;t playing by the rules *without* requiring a centralized orchestrator.</p>
<p>So you could think of CDL as being *both* an &#8220;interaction variance checker&#8221; and a &#8220;distributed process execution language&#8221;.   The latter part is somewhat more controversial, obviously.</p>
<p>The Pi4Tech stuff, by the way, was started by Steve Ross-Talbot, who was probably the #1 public champion for WS-CDL (that I&#8217;ve seen), and was the chair of the W3C working group.   I recall he has some very good reasons for popularizing this technology.</p>
<p>Anyway, Pi4SOA isn&#8217;t documented (at all), so you&#8217;d have to browse CVS to figure it out, along with the Sourceforge discussions.</p>
<p>Some discussions I found a bit enlightening:<br />
<a href="http://sourceforge.net/forum/forum.php?thread_id=1515687&#038;forum_id=419139" rel="nofollow">http://sourceforge.net/forum/forum.php?thread_id=1515687&#038;forum_id=419139</a></p>
<p>One area that interests me in CDL vs. REST:    &#8220;Hypermedia as the engine of application state&#8221;, in the RESTful web, is how we construct interaction machines.   To me, hypermedia already exhibits much of what we want in a choreography-driven SOA, in that it specifies the possible interactions at runtime, with ordering constraints and whether they&#8217;ll have side-effects or not (GET, PUT or POST) defined by the media type.   The problem is that these are usually defined in a human-readable RFC or specification.</p>
<p>So, it seems a RESTful CDL would<br />
- describe the ordering constraints of a particular media type&#8217;s anchors<br />
- provide a language to help a user agent track long-lived client-side variables as it crawls across representations.<br />
- handle more than XML-based interaction</p>
]]></content:encoded>
	</item>
</channel>
</rss>

