<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx</link><description>Disclaimer:&amp;#160; The Maestro project has been renamed.&amp;#160; While referred to in this article as ‘Maestro’, moving forward the project is referred to with codename ‘Axum’. Given a programming model such as Maestro, where components are strictly isolated</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Distributing an Axum Application</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9577227</link><pubDate>Thu, 30 Apr 2009 02:49:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9577227</guid><dc:creator>Axum: Isolation, Agents, and Message-passing in .NET</dc:creator><description>&lt;p&gt;Note: a variant of this text also appears in the Axum Programmer’s Guide, which will be distributed with&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9577227" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457975</link><pubDate>Wed, 04 Mar 2009 08:07:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457975</guid><dc:creator>Niklas Gustafsson</dc:creator><description>&lt;p&gt;Interfaces and channels are checked at compile-time in that respect, i.e. that ports are used correctly from a type perspective.&lt;/p&gt;
&lt;p&gt;What is different about channels is that they have protocols, which interfaces obviously don't (although adding them doesn't take much imagination). We currently check them at runtime, but it is also possible to do static verification of contracts through model checking, which can be quite expensive to do.&lt;/p&gt;
&lt;p&gt;On the positive side, model checking seems more feasible to do in finite time when you have bilateral chcannels rather then many-to-one or many-to-many mailboxes that are sometimes used in actor-based models.&lt;/p&gt;
&lt;p&gt;Hopefully, this addresses your question.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457975" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457923</link><pubDate>Wed, 04 Mar 2009 06:23:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457923</guid><dc:creator>Rajesh Karmani</dc:creator><description>&lt;p&gt;Sorry for being vague. I meant that correct usage (calling methods) of an interface type is checked at compile time. &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457923" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457695</link><pubDate>Wed, 04 Mar 2009 02:07:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457695</guid><dc:creator>Niklas Gustafsson</dc:creator><description>&lt;p&gt;Rajesh,&lt;/p&gt;
&lt;p&gt;What do you mean with &amp;quot;interfaces are enforced at compile time&amp;quot;?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457695" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457516</link><pubDate>Wed, 04 Mar 2009 00:20:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457516</guid><dc:creator>Rajesh Karmani</dc:creator><description>&lt;p&gt;Channel contracts seem similar to interface contracts in OO programming: they separate the behavior from the implementation. But interfaces are enforced at compile time. As I understand, channel contracts are enforced at run-time in Maestro. Can they be enforced at compile time?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457516" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457480</link><pubDate>Tue, 03 Mar 2009 23:53:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457480</guid><dc:creator>Niklas Gustafsson</dc:creator><description>&lt;p&gt;Regarding caring about message order:&lt;/p&gt;
&lt;p&gt;While stateless patterns are usually good for scalability, there are good uses for stateful actors, particularly for in-process uses. Open a book on Erlang and you'll find lots of very stateful actors.&lt;/p&gt;
&lt;p&gt;Thus, Maestro doesn't take a stand -- use stateless protocols if they serve your purposes. If you find the need for stateful contracts, the language is there to help.&lt;/p&gt;
&lt;p&gt;Regarding pi and F#:&lt;/p&gt;
&lt;p&gt;I would say that Maestro's model is closer to CSP than it is to pi-calculus. However, it's not quite CSP, either -- Maestro communication is asynchronous and buffered.&lt;/p&gt;
&lt;p&gt;F# -- interesting that you would bring it up. It would be fascinating to explore what such a langiage would look like, wouldn't it?&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457480" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9457176</link><pubDate>Tue, 03 Mar 2009 21:07:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9457176</guid><dc:creator>Jeffry Borror</dc:creator><description>&lt;p&gt;Thanks for an interesting set of posts. I feel like I've walked into the middle of the movie. &lt;/p&gt;
&lt;p&gt;How does Maestro compare to process calculi such as the pi calculus? &amp;nbsp;It seems that there is a relation to the join calculus.&lt;/p&gt;
&lt;p&gt;Have you considered a version of Maestro based on F#? Not only does it have objects and mutable data, but pipelining is the metaphor for function composition. &amp;nbsp;Maestro provides a natural generalization to the concurrent world. &amp;nbsp; (Maybe the F# team would give you way to mark a function as pure.) &amp;nbsp;It might be more natural to express your operations as combinators.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9457176" width="1" height="1"&gt;</description></item><item><title>re: Channels</title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9455308</link><pubDate>Tue, 03 Mar 2009 01:25:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9455308</guid><dc:creator>Steve Bjorg</dc:creator><description>&lt;p&gt;I'm surprised that you care about stateful protocols. &amp;nbsp;Didn't REST and now web-oriented architecture (WOA) make a compelling case for stateless protocols? &amp;nbsp;They have been shown to scale and work well for the vast majority of applications with some exceptions of course, but there are always exceptions.&lt;/p&gt;
&lt;p&gt;Rather than focusing on message order, why not focus on data longevity instead? &amp;nbsp;Good downstream cache-management and &amp;quot;data revalidation hints&amp;quot; are a pain to deal with, yet essential to scalable deployments. &amp;nbsp;Having support for such concepts at the Maestro level would, imho, provide a lot more benefit than worrying about message order.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;- Steve&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9455308" width="1" height="1"&gt;</description></item><item><title>Click &amp;amp; Solve &amp;raquo;  Channels </title><link>http://blogs.msdn.com/b/maestroteam/archive/2009/03/02/channels.aspx#9454917</link><pubDate>Mon, 02 Mar 2009 21:38:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9454917</guid><dc:creator>Click &amp;amp; Solve &amp;raquo;  Channels </dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.clickandsolve.com/?p=16734"&gt;http://www.clickandsolve.com/?p=16734&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9454917" width="1" height="1"&gt;</description></item></channel></rss>