Skip to content

C# 多线程 08-使用 Reactive Extensions 00-简介

🏷️ 《C# 多线程》

观察者模式

  • 基于拉去(pull-based)

  • 基于推送(push-based)

反应扩展(Reactive Extensions,简称 Rx)

.NET Framework 从 4.0 版本开始包含了接口 IObservable<out T>IObserver<in T> 的定义,它们一起代表了异步的**基于推送 (push-based)**的集合及其客户端。

它们都来自叫做 Reactive Extensions(简称 Rx)的库,其由微软创建,用于使用可观察的集合来有效的构造事件序列,以及实际上任何其他类型的异步程序。

Reactive Extensions 起初是一个跨平台的库。.NET3.5,Silverlight 以及 Windows Phone 都有相应的库。甚至 JavaScript、Ruby 和 Python 都可以使用 Reactive Extensions。

它也是开源的,可以在 CodePlex 网站找到针对.NET 的 Reactive Extensions 源码,也可以在 GitHub 找到其他实现。

由于可观察的集合和 LINQ 是兼容的,因此我们可以使用声明式查询以异步的方式来转换和组合这些集合。

也可以使用扩展方法给 Rx 程序添加功能,从而具备通常的 LINQ 查询的同样的功能。

Rx 程序也支持从所有异步编程模式(包括异步编程模型,基于事件的异步模式,以及任务平行库)转换到可观察的集合,并且支持以 Rx 内置方式运行异步操作,该方式与 TPL 很相似。