NCindy

.net 2.0平台上的高性能网络程序开发框架
随笔 - 45, 文章 - 0, 评论 - 129, 引用 - 4
数据加载中……

CCR介绍

原文链接

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

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

问题领域

异步

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

并发

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

协调和失败处理

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

应用模型

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

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

posted on 2007-12-09 21:28 iceboundrock 阅读(179) 评论(0)  编辑 收藏 所属分类: Parallel & Concurrency


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-12-12 14:54 编辑过
成果网帮您增加网站收入


相关链接: