BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微软发布Reactive框架,简化异步及事件驱动编程

| 作者 赵劼 关注 5 他的粉丝 发布于 2009年11月19日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

对于流行的Web应用或者基于云的应用程序来说,保证伸缩性关键之一便是“异步”,事实上Silverlight已经阻止了所有阻塞的网络和线程操作。而对于传统的桌面应用程序来说,为了在高延迟的IO操作,或耗时的计算过程中保持流畅的响应能力,往往也必须使用异步任务来完成工作。而对于交互式应用程序来说,还有一个常见的特点是“事件驱动”。例如,用户会源源不断地通过GUI界面向程序产生“事件流”,这种异步事件流包括鼠标,键盘或其他一些输入方式。

微软近期于DevLabs发布了Reactive扩展,目标是简化异步及事件驱动程序的构建,尤其适合如Silverlight或基于云服务的应用程序。同时,Channel 9对其主要设计者Erik Meijer进行了采访,Erik谈论了Reactive框架的设计原因,思路及可用场景。

Erik谈到,设计Reactive框架的原因是在于他希望寻找异步及事件驱动程序的共同点。例如对于普通的集合来说,如数组或List,它们都是通过IEnumerable及IEnumerator来暴露内部元素。这是一种“拉(Pull)”模型,即代码可以不断通过MoveNext来获取元素。而Reactive框架则是一种与之相对的模型,通过IObservable和IObserver两个接口来产生元素,是为“推”模型。不过这两个模型的实现比IEnumerable或IEnumerator要复杂的多,它们基于.NET 4.0中的并行库(或.NET 3.5的并行扩展)所带来的并行及异步组件。

Reactive框架中还包括面向IObservable和IObserver的LINQ扩展,如胶水般粘合了针对此类容器的异步或事件处理操作。这些容器可以是标准的.NET事件、基于APM模型的异步计算,并行框架中的Task<T>,Windows 7传感和定位API,SQL StreamInsight的事件流等等。也可以是F#的事件和异步数据流。

目前Reactive框架基于pre-release授权许可发布,可用于测试和开发,但还不能用在生产环境中。目前Reactive框架有三个安装包,分别对应.NET Framework 3.5 SP1.NET Framework 4.0 Beta 2Silverlight 3三种平台。你可以在Reactive框架开发团队博客Channel 9的Rx专辑中了解更多相关信息,也可以在论坛上给出反馈意见。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很好很强大 by Ren Hongpeng

看了下Channel9的Demo,感觉很有趣。

ccr by Li Ruoshi

感觉这个咚咚跟CCR还是有点功能重叠了,微软要是能把两个team合并起来创造一个统一的异步框架多好

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT