NCindy

.net平台上的高性能网络程序开发框架

CCR介绍

原文链接

并发与协调运行时(Concurrency and Coordination Runtime)是一个可以从任意.net 2.0程序语言进行访问的托管代码库。

CCR解决了面向服务应用(service-oriented applications)对管理异步操作、处理并发、利用并行硬件和处理部分失败(partial failure)的需求。它使得你设计的应用的软件模块或组件之间可以松耦合;这样就可以让它们可以被独立的开发,且对运行环境和其它组件做最小的假设。这种方法从流程设计起点、用统一的方式处理并发、失败和隔离方面改变了用户对程序的认识。

问题领域

异步

当松耦合的软件组件之间进行通讯时,例如:跨越网络运行的程序、UI代码与用户输入或者文件IO进行通讯,异步操作使得程序有更好的可伸缩性、更好地响应能力以及跨越多个操作处理失败。然而由于异步编程经常把逻辑分离到多个启动操作的代码和一些“回调”中,所以常常被认为降低了用户代码的可读性。同时,跨越多个未完成的操作来正确处理的处理失败几乎是不可能任务。

并发

需要更好利用多执行资源的代码必须分离成多个独立的逻辑段,以便可以并行的运行,然后当需要的时候互相通讯,将执行组合起来得到处理结果。逻辑段是一个长周期的迭代,常常被操作系统的线程原语执行。由于线程的性能问题主要在线程启动时,线程长时间处于活动状态,迫使一个特别的模式:代码被构造成一个很长的由阻塞操作和同步调用构成的序列,同一时刻只能处理一件事情。此外,线程间通讯的主要方式是共享内存,这迫使程序员必须使用显式的(explicit)方法来同步对共享内存的访问,不幸的是这些同步方法很容易被误用。

协调和失败处理

在大型软件程序中,协调多个组件是最复杂的工作。一个交互模式(调用对象的方法 vs 使用操作系统的信号原语 vs 使用队列+信号)的错误会导致不可读的代码,运行时行为在协调方式间急剧的变化。更重要的是,错误处理方法是模糊不清又变化巨大的。

应用模型

CCR适用的应用模型是:多个组件分离到可以只通过消息交互的块。组件在这个模型中需要在消息之间进行协调,处理复杂的失败场景并且高效的处理异步编程。这个编程模型与如何组装各种不同的硬件和如何构建网络应用非常类似。从传统的客户端PC程序到服务端应用再到运行在浏览器中的applets,大多数软件程序有类似的需求。软件需要等待用户输入,存储的输入输出和UI展现。尽管隐藏在大多数同步API层中,但是由于设备的速度不同和在资源可用性上的巨大差异,异步是不可避免的,并且我们都知道如何用队列来隔离异步。

CCR以高效、稳定和可扩展的方式解决了上面的这些问题,接下来的几节将介绍CCR编程模型和它的实现。

posted on 2007-12-09 21:28  iceboundrock  阅读(4863)  评论(0编辑  收藏  举报

导航