TL55
Oct 28th, 2008
The Concurrency and Coordination Runtime (CCR) and Decentralized Software Services (DSS) Toolkit

Speakers

George Chrysanthakopoulos

Microsoft’s CCR and DSS Toolkit 2008 supports building loosely coupled, concurrent, and distributed applications. The involved technologies were initially developed as part of the Microsoft Robotics effort, where they fit nicely due to the inherently asynchronous nature of robotics applications, but they’ve been used in non-robotics domains as well (such as in Windows Live), which has resulted in Microsoft making them available as part of a separate product.

The CCR and DSS Toolkit is made up of a few key pillars: a runtime (CCR and DSS), authoring tools (Visual Programming Language, configuration support, etc.), and services. This talk focused primarily on the runtime.
The CCR is based on message passing and provides a few core primitives: ports and arbiters. Ports are queues that messages can be posted to, and arbiters are associated with ports, executing logic / Mentioned Technologies
  • CCR and DSS Toolkit
  • .NET Framework
  • Parallel Extensions

in response to triggers based on constraints as data arrives at ports. Example arbiters are single-item and multi-item receivers, join, choice, and interleave. CCR also includes its own scheduler, called a dispatcher, which supports fairness, throttling, but no thread injection. One of the primary use cases for CCR is in supporting asynchronous I/O by using C# iterators to do large amounts of asynchronous work without blocking threads. At a high-level, the CCR is a complimentary programming model to the concurrent and parallel programming models Microsoft is releasing in the .NET Framework 4.0, including the Task Parallel Library and Parallel LINQ, providing developers with choices as to the tools they want to use for different scenarios.
DSS provides a service-oriented application model that builds on REST by exposing services as their state and a uniform set of operations over that state. It extends the application model provided by HTTP by adding structured data manipulation, event notification, and service composition. The primary goal of DSS is to promote simplicity, interoperability, and loose coupling. This enables the creation of applications as compositions of services regardless of whether these services are running within the same node or across the network. DSS uses the Decentralized Software Services Protocol (DSSP), which is available as part of the Microsoft Open Specification Promise. DSS is built on top of the CCR.

List of demos

Image loading / Asynchronous loading of image files, including post-processing feature detection / 15 min. into session
Feature recognition / Image matching, with features extracted from an image from a Web cam, allowing for comparison of previously captured images against the current Web cam image / 40 min. into session

Conclusion

The CCR and DSS Toolkit 2008 makes it significantly easier to develop loosely coupled, concurrent, and distributed applications by establishing dataflow networks of ports and arbiters and by taking advantage of C# iterators to write asynchronous applications that are truly asynchronous.

Stephen Toub