Rx 1.0 解决了异步数据访问的问题

  • Abel Avram
  • 李永伦

2011 年 7 月 6 日

话题:.NETDevOps语言 & 开发架构

酝酿两年之后,微软发布了Reactive Extensions(Rx)库的1.0 版。Rx 把事件驱动 UI 与 LINQ、并发性和异步调用结合起来。

Rx 尝试解决从基于事件的 UI 异步访问数据的问题。标准的迭代器模式以及它的基本接口 IEnumerable 和 IEnumerator 对于异步操作是不足够的,因此 Rx 通过引入观察者模式来解决这个问题,这个模式包含两个主要的接口,IObservable 和 IObserver。不是客户端一步一步地迭代数据集合,而是集合把数据作为异步调用的结果推送给客户端,终结了调用循环。

这种做法在云计算里特别有用,Rx 项目的主管Erik Meijer 说。由于固有的网络延迟性,云计算使用异步调用,因此客户端最好是请求数据,然后继续执行其它任务,当数据可用时才接收。虽然这个问题用更标准的方式来解决也很简单,但 Rx 的强大之处在于它内置了 LINQ 和并发性的支持。因此,用户并不仅能以异步的方式获得一组数据,而且可以在一组数据上产生异步 LINQ 查询,然后并行地运行它们。Rx 通过构建在Parallel Extensions(PFX)之上处理并发性,这个托管并发库包含了Parallel LINQTask Parallel Library

酝酿两年之后,Rx 成为微软的官方产品,并在Data Developer Center首次发布稳定的1.0版。开发者可以通过 C#、VB.NET、C++、F# 和 JavaScript 在所有 XP 之后的 Windows 和 Windows Phone 7 上使用 Rx 进行编程。

其它资源:InfoQ 最近的采访Bart De Smet on Reactive Extensions(Rx)for .NET and JavaScriptRx MSDN 文档Channel 9 Rx 研讨会

查看英文原文:Rx 1.0 Solves the Problem of Asynchronous Data Access

.NETDevOps语言 & 开发架构