<?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 - 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>HTTP, REST and some Cycling</description>
	<pubDate>Thu, 20 Nov 2008 21:13:16 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7-beta3</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<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>"I think most of the toolkits opt for the "Framework-level" proxy instead of the "network-level" proxy to insert CDL policy. Or, in other words, they're not building an ESB, they're building an Axis-wrapper."

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't/can'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!

"So, it seems a RESTful CDL would
- describe the ordering constraints of a particular media type'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"

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't stop there. Instead of saying that "okay, we understand what you are doing with REST, but sorry our technology does not deal with your systems", they say "your approach is incomplete, and so use our approach for everything" (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 "next possible steps" in the choreography, track variables, channels, etc. for you
- A framework that hooks into your WS stack to watch what you're doing, perform correlation, etc.
- One also needs to ensure the services are "CDL-aware", in that they need to pass channel references around, as a URI, or WS-Addressing, EPR, etc., and if they'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 "Framework-level" proxy instead of the "network-level" proxy to insert CDL policy.  Or, in other words, they're not building an ESB, they'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 "enforcing" a CDL:  they're both supported by implementation-level frameworks, and they're both talking about describing business processes.   People didn't really get CDL'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't need to know that the parent was implemented in Java, .NET, Ruby, or BPEL.

- Whereas CDL is not something executed, it'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 "next steps" are required, like BPEL, it also has a declarative way to specify the detection of errors &#038; throwing of exceptions to who isn't playing by the rules *without* requiring a centralized orchestrator.

So you could think of CDL as being *both* an "interaction variance checker" and a "distributed process execution language".   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'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't documented (at all), so you'd have to browse CVS to figure it out, along with the Sourceforge discussions.

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

One area that interests me in CDL vs. REST:    "Hypermedia as the engine of application state", 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'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'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>
