<?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>Sehmi-Conscious Thoughts : WCF</title><link>http://blogs.msdn.com/asehmi/archive/tags/WCF/default.aspx</link><description>Tags: WCF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Distributed Computing Gets Spruced-Up with CCR/DSS!</title><link>http://blogs.msdn.com/asehmi/archive/2008/02/27/distributed-computing-gets-spruced-up-with-ccr-dss.aspx</link><pubDate>Wed, 27 Feb 2008 03:00:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7911590</guid><dc:creator>asehmi</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/asehmi/comments/7911590.aspx</comments><wfw:commentRss>http://blogs.msdn.com/asehmi/commentrss.aspx?PostID=7911590</wfw:commentRss><wfw:comment>http://blogs.msdn.com/asehmi/rsscomments.aspx?PostID=7911590</wfw:comment><description>&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td align="middle" width="200"&gt;&lt;img alt="" src="http://msdn2.microsoft.com/aa731517.HomePage-VPL.jpg"&gt;&lt;/td&gt; &lt;td align="middle" width="200"&gt;&lt;img alt="" src="http://msdn2.microsoft.com/aa731517.HomePage-LEGO.jpg"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;The reality of distributed systems development today is the complexity that eventually if not immediately bogs it down. Instead of being fun, exciting and easy to develop, distributed systems are often hard and unwieldy to design and work with. We continue to face the same old issues time and again yet never appear to come up with game-changing simplifying solutions to our common issues of complexity which, amongst others, are:&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;The large variety of participants: consumers, providers, intermediaries, administrators, etc.&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Highly heterogeneous systems and architecture, implementation and deployment practices&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Highly autonomous and independent systems &amp;amp; services&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Highly distributed information sources and services&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;The challenges developers, architects, testers, etc. face are many. In general we need to be able to: &lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Apply (re)configuration in a live running system&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Coordinate many simultaneous asynchronous interactions&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Support high throughputs (and afford low latencies)&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Provide simple lifecycle services like starting and stopping components dynamically&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Monitor, interact with, and debug a running (distributed) system&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Ideally be able to develop the system in simulated conditions or a test environment&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Span multiple physically or logically distributed compute units&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Re-use components across multiple hardware platforms &amp;amp; devices&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;A typical solution to these challenges might be to centralise &amp;amp; standardise, but that's a kind of anti-pattern for many types of distributed systems scenarios today and simply serves to:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Reduce the variety of systems, i.e. seeking economies of scale&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Remove the positive benefits of heterogeneity in a distributed system&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Eliminate the autonomy&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Put demands on 'perfect information' which is really hard to do consistently and reliably&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Hardwire the connections between components of the system&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;A better solution is to simply accept diversity and decentralize!&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Accept variety, i.e. seeking economies of innovation&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Encourage autonomy&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Accept heterogeneity&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Understand that that custom, personalized, networked information is normal&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;Imagine an adaptable, open, distributed information system&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;Recently I've been energized by the power of the Concurrency and Coordination Runtime (CCR) + Decentralized Software Services (DSS) combined features, and dare I say, paradigm shifting concepts to fix a lot of the problems we have today in building distributed systems.&lt;/font&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;CCR provides concurrent (multi-core) programming support by way of some key pattern implementations and developer conveniences&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;DSS provides higher level support to create, host, and discover lightweight services&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;DSS services are oriented to have a state and react to incoming request and updates, and sends update and request to other services&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;DSS services state can be serialized and a service can migrate to another host&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;DSS services are naturally RESTful&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;The Visual Programming Language designer can be used to define, compose, monitor and manage DSS services&lt;/font&gt;&lt;/li&gt; &lt;li&gt;&lt;font face="Arial" size="2"&gt;CCR/DSS can be hosted in a device and is capable of running under .NET Compact Framework (and .NET Micro Framework coming soon)&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;font face="Arial" size="2"&gt;Side Note - How does CCR/DSS relate to WCF?&lt;/font&gt;&lt;/em&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;WCF is more about communications infrastructure – standards-based ‘plumbing’ – whereas CCR/DSS is a high level programming model for distributed service-based and resource-oriented systems (however initially targeted to Robotics applications). Some key CCR features such as ports, memory queues, dispatchers, arbiters, etc. are hard to implement and beyond the scope of WCF. A better comparison would be the combo of WCF+WF, but still there would be many features and patterns missing from both sides. Apples to Oranges - just avoid trying to force a comparison and understand the core use cases for each technology set. In my opinion the patterns supported in CCR are also of immense value to WCF+WF developers. I wonder if anyone has implemented CCR patterns in WCF and furthermore provided a DSSP transport protocol binding for WCF? That would be really cool!&lt;/font&gt; &lt;p&gt;&lt;strong&gt;&lt;font face="Arial" size="2"&gt;Resources&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx" target="_blank"&gt;The Microsoft Robotics Studio&lt;/a&gt; includes the Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS), Visual Programming Language (VPL), and a virtual worlds (robotics) simulation environment! If you want to dive straight into CCR/DSS check out the &lt;/font&gt;&lt;a href="http://channel9.msdn.com/wiki/default.aspx/Channel9.MSRoboticsStudio"&gt;&lt;font face="Arial" size="2"&gt;Wiki&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt;, watch a &lt;/font&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=219308"&gt;&lt;font face="Arial" size="2"&gt;video&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt; or &lt;/font&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=143582"&gt;&lt;font face="Arial" size="2"&gt;two&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt; and install &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/robotics/downloads/default.aspx"&gt;&lt;font face="Arial" size="2"&gt;Microsoft Robotics Studio&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt;.&lt;/font&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;As part of the &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/robotics/bb625969.aspx"&gt;&lt;font face="Arial" size="2"&gt;Microsoft Robotics Studio (1.5) release&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt;, Microsoft has placed the &lt;/font&gt;&lt;a href="http://purl.org/msrs/dssp.pdf"&gt;&lt;font face="Arial" size="2"&gt;Decentralized Software Services Protocol (DSSP)&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt; under its &lt;/font&gt;&lt;a href="http://www.microsoft.com/interop/osp/default.mspx"&gt;&lt;font face="Arial" size="2"&gt;Open Specification Promise&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt;. This means that the Microsoft patents for the services-oriented protocol specification may be used by anyone in the world, at no cost, and for any type of development including free software, open source, academic, or commercial, enabling interoperability among a wide variety of devices and applications. The &lt;/font&gt;&lt;a href="http://download.microsoft.com/download/5/6/B/56B49917-65E8-494A-BB8C-3D49850DAAC1/DSSP.xsd"&gt;&lt;font face="Arial" size="2"&gt;XSD schema for DSSP&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial" size="2"&gt; is also available.&lt;/font&gt;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="669" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="101"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://blogs.msdn.com/msroboticsstudio/default.aspx" target="_blank"&gt;MSRS Blog&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="196"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=383&amp;amp;SiteID=1" target="_blank"&gt;Main forum page&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="149"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1425&amp;amp;SiteID=1" target="_blank"&gt;DSS forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="219"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1424&amp;amp;SiteID=1" target="_blank"&gt;CCR forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="102"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1427&amp;amp;SiteID=1" target="_blank"&gt;VPL forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="196"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1428&amp;amp;SiteID=1" target="_blank"&gt;Hardware configuration and troubleshooting forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="149"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1426&amp;amp;SiteID=1" target="_blank"&gt;Simulation forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="219"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1423&amp;amp;SiteID=1" target="_blank"&gt;Community examples forum&lt;/a&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;The creators of CCR/DSS are &lt;a href="http://search.live.com/images/results.aspx?q=George%20Chrysanthakopoulos%20imagesize%3Asmall&amp;amp;FORM=SZIR" target="_blank"&gt;George Chrysanthakopoulos&lt;/a&gt; and &lt;a href="http://search.live.com/images/results.aspx?q=Henrik%20Frystyk%20Nielsen%20imagesize%3Asmall&amp;amp;FORM=SZIR" target="_blank"&gt;Henrik Frystyk Nielsen&lt;/a&gt;. Search on their names and you'll be very &lt;a href="http://www.answers.com/topic/henrik-frystyk-nielsen?cat=technology" target="_blank"&gt;impressed&lt;/a&gt;.&lt;/font&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" size="2"&gt;CCR/DSS is not just for Robotics - it'll help you spruce-up your enterprise distributed systems architectures too! Like I said earlier, I'm pretty jazzed by this technology and hope to be writing about it again very soon.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7911590" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/asehmi/archive/tags/Service-Orientation/default.aspx">Service-Orientation</category><category domain="http://blogs.msdn.com/asehmi/archive/tags/Distributed+Computing/default.aspx">Distributed Computing</category><category domain="http://blogs.msdn.com/asehmi/archive/tags/CCR_2F00_DSS/default.aspx">CCR/DSS</category><category domain="http://blogs.msdn.com/asehmi/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/asehmi/archive/tags/Microsoft+Robotics+Studio/default.aspx">Microsoft Robotics Studio</category><category domain="http://blogs.msdn.com/asehmi/archive/tags/MSArchitectPortal/default.aspx">MSArchitectPortal</category></item></channel></rss>