Microsoft 的并发和协调运行时从字面上拯救了一个遇到重大死锁问题的项目。从那时起,我发现我越来越频繁地使用它来处理几乎所有需要异步编码的事情,从而产生比以前更轻、更快的结果。老实说,它改变了我对多线程/多核开发的看法。尽管我个人很喜欢 CCR,但在网络上似乎很少有关于它的嗡嗡声,我想知道是否有人可以为此提供任何理由。是否有更好的选择,或者是缺乏 MS 的推广,还是人们只是对现有工具感到满意?
5 回答
我建议作为 .Net 4.5 的一部分发布的TPL Dataflow最终将取代 CCR。CCR 中的大多数概念在 Dataflow 中都有类似物,尽管它不一定是一个简单的移植练习。
也就是说,2011 年 11 月发布的 Robotics Studio Developer 4 Beta 2确实包含 Silverlight 4 的 CCR 版本。
据我所知,围绕它的许可有点痛苦。
我认为大多数人都在等待 .NET 4.0 中的并行扩展。我知道这不是一回事,但它仍然比目前框架中的要好得多——尽管延续的工作方式不同,至少它们在那里:)
我怀疑 Parallel Extensions 在这方面的工作要比 CCR 多得多——尽管我确信 CCR 的工作也启发了 PFX 的一些设计。
我也对 CCR 有个人的热爱……我当然没有在 .NET 或其他地方看到过与它相当的东西。我认为 Jon 是对的,这太糟糕了,它很可能会沦为像我们这样的狂热粉丝,而大多数主流 .NET 多线程可能会通过 Parallel Extensions 完成。
我对这种预测感到特别失望,因为我认为可以做更多的工作来推广它——比如说可能将它融入企业可靠的异步消息总线类型的框架中,我认为它在 .NET 中缺乏连贯的故事。此外,通过查看Microsoft CCR/DSS 站点,我可能从未想过要尝试它......我不明白为什么它会以这种方式打包 - 除了有几家公司将它从机器人工具包中剥离出来的事实并且在 MS 认为它具有超越机器人技术的目的之前就与它一起运行。
不管怎样,你并不孤单……还有很多其他 CCR 的“爱好者”。 这是一个简洁的基于“流”的 CodePlex 项目,它将 CCR 包装在一个有趣的流范式中。
到目前为止,我一直很喜欢在两个主要项目中使用 CCR。第一个很糟糕(没有真正理解因果关系模式的想法)第二个非常出色(网络爬虫)
这两个项目都利用基于消息的范例来避免等待缓慢运行的 IO 操作。一旦您解决了缺少兼容的 ORM 映射器的问题,CCR 就可以很好地使用。(我正在考虑发布一些我为拯救其他人而编写的管道代码)
话虽如此,RX 看起来还是挺有趣的。我很好奇它在错误处理、速度和可靠性方面的比较。
Microsoft Robotics Studio 2008 R3 现已上市并免费供所有人使用。