什么是LINQ到又名RX框架事件?(What is LINQ to events a.k.a RX

2019-06-27 12:50发布

什么是LINQ事件又名RX框架又名在.NET 4.0中的反应扩展(也可作为反向移植的版本)?

换句话说,什么是System.Reactive.dll所有的东西呢?

Answer 1:

.NET的Rx队(这是不是一个正式的名称)发现任何推序列(事件,回调)可以通过拉动序列被看作(我们通常做在访问可枚举),以及 - 或者他们在本质上双。 总之观察者/可观察到的图案是双枚举图案。

那么,什么是酷的这个双重性?

你拉序列(读声明式的编码)做任何事情适用于推序列以及。 这里有几个方面。 您可以从现有的事件创建观测量,然后在.NET中使用它们作为一等公民 - 也就是说,你可以从事件创建一个可观察到的,并公开相同的属性。

由于的IObservable是数学双重的IEnumerable的,.NET的Rx利于LINQ过类似事件推序列,就像LINQ超过IEnumerables

它提供了更大的自由度来组成新的事件 - 你可以创建特定事件一般出事件。

.NET的Rx引入了两个接口,的IObservable和IObserver该“规定使用的输入和输出适配器,生产者和事件源和汇消费者替代”,这将很快成为事实上的用于声明性方式编写异步代码。 下面是一个简单的例子。

//Create an observable for MouseLeftButtonDown

var mouseLeftDown=Observable.FromEvent<MouseButtonEventArgs>  
        (mycontrol,"MouseLeftButtonDown");  

//Query the above observable just to select the points
var points = from ev in mouseEvents  
                 select ev.EventArgs.GetPosition(this);  

//Show points in the window's title, when ever user
//presses the left button of the mouse
points.Subscribe(p => this.Title = "Location ="  
                                        + p.X + "," + p.Y);

你可能会经历这些职位以及获得详细的头部和尾部。 也有看涉及源代码。

  • 第一部分- System.Reactive或.NET无扩展器(Rx) -概念和先来看看
  • 第二部分- LINQ到活动-更多关于.NET无扩展器(Rx)
  • 第三部分- LINQ到活动-生成GetEventName()使用T4文本模板包装方法

看看这组文章



Answer 2:

你可以阅读更多关于它在这里: http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html

我第一次接触是在这个博客,因为我读他的F#的书: http://tomasp.net/articles/reactive-ii-csevents.aspx

基本上我对它的理解是,当你写了鼠标移动的事件处理程序,例如,您可能要连续捕获这些事件,也许能算多少移动或点击,但是,基本上,你要使用在不仅仅是为事件处理多种方式的信息。 因此,只把这些事件作为一个连续的数据流。



Answer 3:

此外,检查出这9频道视频: 专家到专家:布赖恩·贝克曼和埃里克·梅耶尔-在.NET框架无功里面(Rx)的

从展会介绍:

在.NET框架无功(Rx)的是数学双LINQ到对象。 它由一对代表,或可观察到的,基于推送的集合接口IObserver /的IObservable,加上了实现LINQ标准查询操作和其他有用的流变换函数扩展方法库的。



Answer 4:

我觉得RX的本质正在发生变化 ,使我们看信息的角度 。 自然地,每一条信息是一些过程,其中发生在时间 - 空间连续的结果。 传统方法的工作原理与过程的投影“当前”时间平面,失去了时间维度作为结果的细节。

RX的工作原理与投影到其他尺寸,拍摄时间组件一样,所以也难怪LINQ到RX是普通LINQ的一个超集。



文章来源: What is LINQ to events a.k.a RX Framework?