既然我们已经介绍了响应式编程,现在是时候了解我们的明星了:响应式扩展,通常简称为Rx。微软开发了Reactive扩展库,使其易于处理事件流和数据流。在某种程度上,时变值本身就是一个事件流;每个值更改都是一种类型的事件它会更新依赖于它的值。
Rx通过将事件流抽象为可观察对象来简化事件流的处理序列,这也是Rx表示时变值的方式。可观测的手段作为用户,您可以观察到序列所携带的值,以及序列的含义所携带的东西是有命令的。Rx是由Erik Meijer和Brian Beckman设计的,其灵感来自函数式编程风格。在Rx中,一个流由可观察对象表示,这些可观察对象可以从。net事件、任务或集合中创建。或者可以自己从另一个来源创建。使用Rx,您可以使用LINQ操作符查询可观察对象,并使用调度程序控制并发性这就是为什么是Rx通常在Rx中定义。. NET源代码为Rx = Observables + LINQ + schedulers的Rx的层。如图1.4所示。
图1.4 Rx层。中间的是关键的接口,表示事件流,下面是调度程序控制并发性的流处理。最重要的是强者操作符库允许您创建事件处理LINQ风格的流水线。
让我们看看Rx起源的简短历史。我认为,要完全控制某件事(尤其是技术),你应该了解它的历史和幕后的细节。让我们从Rx标志开始,其中有一条电鳗,如图所示图1.5;这条鳗鱼是微软Live实验室的Volta项目标志。
Volta项目是一个用于创建多层的实验性开发人员工具集云的应用程序,在云这个术语正式定义之前。利用沃尔塔,您可以指定应用程序的哪一部分需要在云中运行(服务器)和客户端(桌面、JavaScript或Silverlight),以及Volta编译器会为您做艰苦的工作。很快,差距就显现出来了在将从服务器产生的事件传输到客户端时。因为。net事件不是一等公民,它们不能被序列化并推送到客户端,因此形成了可观察对象和观察者对(尽管当时还没有这样称呼)。
Rx并不是Volta项目的唯一技术。JavaScript编译器的中间语言(IL)也被发明出来,它是微软的起源
打印稿。制作《Volta》的团队也是创造《Rx》的团队。
自2010年发布以来,Rx一直是一个成功的故事,被许多人采用公司。它在.NET之外的其他社区也取得了成功,而且很快就成功了被移植到其他语言和技术。例如,Netflix就使用Rx广泛地在其服务层,并负责RxJava端口,微软还在内部使用Rx来运行cortana——托管的智能个人助理。在每个Windows Phone设备中;当你创建一个事件时,一个可观察对象是在后台创建的。
在撰写本文时,Rx在10多种语言中得到支持,包括JavaScript, c++, Python和Swift。响应式扩展现在是一个开放的项目。您可以在https://reactivex.io/找到有关它们的信息以及文档和新闻,.NET的响应式扩展托管在GitHub,网址是https://github.com/Reactive-Extensions/Rx.NET。现在我们已经了解了一些历史,并得以讲述它,让我们开始探索Rx的内部吧。
——未完待续
译者:重庆教主 20240513
网站:WPF中文网 wpfsoft.com