酝酿两年之后,微软发布了 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 LINQ 和 Task 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 JavaScript 、 Rx MSDN 文档和 Channel 9 Rx 研讨会。
查看英文原文: Rx 1.0 Solves the Problem of Asynchronous Data Access
评论