Question

Microsoft's Concurrency and Coordination Runtime quite literally saved a project that was running into major issues with deadlocking. Since then I find that I use it more and more frequently for almost anything that requires asynchronous coding producing results that run lighter and faster than before. I can honestly state that it has transformed the way I think about multithread/multicore dev. Despite my personal love for CCR, there appears to be very little buzz surrounding it on the web and was wondering if anyone can offer any reason for this. Are there better alternatives, or is it a lack of promotion from MS, or are people simply happy with the existing tools?

Was it helpful?

Solution

The licensing around it is a bit of a pain, from what I remember.

I think most people are waiting for Parallel Extensions in .NET 4.0. I know it's not quite the same thing, but it's still a lot better than what's in the framework at the moment - and although the continuations don't work the same way, at least they're there :)

I suspect that Parallel Extensions has had rather more work on it than CCR - although I'm sure the CCR work inspired some of the design of PFX as well.

OTHER TIPS

I would suggest that TPL Dataflow, to be released as part of .Net 4.5, will eventually supersede the CCR. Most concepts in the CCR have an analogue in Dataflow although it isn't necessarily a straightforward porting exercise.

That said, the Robotics Studio Developer 4 Beta 2, released November 2011, does include a version of the CCR for Silverlight 4.

I, too, have a personal love for the CCR... I certainly have not seen anything quite the equivalent of it in .NET or elsewhere. I think it's too bad that I think Jon's right and it will likely be relegated to a niche of enthusiastic fans like us, while most mainstream .NET multithreading will probably be done with the Parallel Extensions.

I'm particularly disappointed in this prognosis because I think more could be done to promote it - say maybe fit it into an enterprise reliable async message bus-type framework, which I think is lacking a coherent story in .NET. Also, from looking at the Microsoft CCR/DSS Site I would probably never have thought to try it... I don't understand why it was packaged up this way - other than the fact that several companies ripped it out of the Robotics toolkit and just ran with it before MS thought it had a purpose beyond robotics.

Anyway, you're not alone... and there are lots of other CCR 'enthusiasts' as well. Here's a neat 'flow' based CodePlex project that wraps the CCR in an interesting flow paradigm.

I have been enjoying using the CCR in two major projects so far. The first one is terrible (didn't really get the Causality pattern idea) And the second one is coming along brilliantly (Web crawler)

Both projects are utilize the message based paradigm to avoid waiting for slow running IO operations. The CCR is quite good to work with once you solve the lack of a compatable ORM mapper. (I'm considering releasing some of the plumbing code that i've written to save other people the heart ache)

Having said that, RX looks quite interesting. I'm curious how it compares in terms of Error handling, speed and reliability.

Microsoft Robotics Studio 2008 R3 is now available and now free for everyone to use.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top