写点什么

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

  • 2009-11-18
  • 本文字数:862 字

    阅读完需:约 3 分钟

对于流行的 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,Windows 7 传感和定位 API,SQL StreamInsight 的事件流等等。也可以是 F#的事件和异步数据流。

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

2009-11-18 02:527302
用户头像

发布了 157 篇内容, 共 58.8 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

ml-agents项目实践(一)

行者AI

模型训练

MySQL蜜罐获取攻击者微信ID

Java架构师迁哥

RocketMQ如何保证消息顺序性

废材姑娘

RocketMQ

面向行业智能,华为数据通信推动的2020之变

脑极体

OpenYurt 入门 - 在树莓派上玩转 OpenYurt

阿里巴巴云原生

阿里云 开源 容器 云原生 中间件

实物资产卡片多数量拆分流程整理2021.01.06

Flychen

干货速递,百度BML自动超参搜索技术原理揭秘与实战攻略!

百度大脑

视频混剪怎么准备素材?会声会影视频消音操作步骤详解!

奈奈的杂社

视频剪辑 视频后期 混剪 视频消音

有奖话题 | 2021 新年Flag,牛转乾坤!

InfoQ写作社区官方

话题讨论 热门活动

别无分号只此一家,Python3接入支付宝身份认证接口( alipay.user.certify)体系(2021年最新攻略)

刘悦的技术博客

Python 支付宝 身份认证 刷脸 实名认证

1499飞天茅台脚本使用过程中遇到的Python问题汇总索引目录【淘宝-天猫超市、京东】

谙忆

飞天茅台 茅台

CSS01 - 引入方式

Mr.Cactus

html/css

波场链智能合约DAPP系统开发技术

薇電13242772558

智能合约 dapp

揭秘人民日报创作大脑:百度大脑智能创作平台助力打造“十八般武艺”

百度大脑

使用Github Actions部署静态网站

玉龙BB

GitHub Pages Hugo Github Actions

性能测试思考分析

Andy

区块链推动电力能源管理新一轮技术变革

CECBC

区块链

CSS02 - 选择器

Mr.Cactus

html/css

接口测试--获取动态参数进阶

测试人生路

接口测试

全球台式机CPU市场份额AMD超越Intel?别再混淆视听,误导消费者了!

E科讯

更新完IOS14,网络工程师又开始背锅了

区块链技术如何真实有效的赋能智慧交通?

CECBC

区块链

同城快递系统设计文档

业哥

区块链:能源行业出现破坏性创新的基础?

CECBC

区块链 能源

腾讯大佬直言:只要掌握了这份“Redis实战笔记”就掌握了云计算的未来!

比伯

Java 编程 架构 面试 程序人生

LeetCode题解:104. 二叉树的最大深度,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

全球台式机CPU市场二八分定型,英特尔仍旧占据全球最大份额

E科讯

通过 Oracle 变量更新公司名称

Flychen

简述CAP原理

Andy

量化机器人管理系统开发|市值管理机器人模式系统开发

W13902449729

市值管理机器人开发 市值管理系统开发

如何使用ClickHouse实现时序数据管理和挖掘?

京东科技开发者

数据库 数据采集 数据库管理工具

微软发布Reactive框架,简化异步及事件驱动编程_.NET_赵劼_InfoQ精选文章