除了微软的文档,是否有一个很好的Microsoft Reactive (Rx)框架的介绍和教程?

另外,有什么好的例子(有代码)可以让使用传统异步编码技术难以解决的编程问题变得更容易?


你可能会发现这一系列关于响应式LINQ的文章(共有四篇)很有用: 响应式编程(2)-引入响应式LINQ。

他有一个使用它编写游戏的例子,所以它应该是你所寻找的。


你的“排除微软文档”条款是否适用于第九频道的视频?

来自响应式框架的创建者Erik Meijer: -专家对专家:Brian Beckman和Erik Meijer - .NET响应式框架内部(Rx)

全新:入门。net的Rx扩展


我还在CodeBetter.com上找到了《介绍响应式框架第一部分》。在同一个网站上有第一部分的续集。

我希望这对你有所帮助。


这里有一个用响应式编程很容易做到的例子,但是用经典事件很麻烦(如果没有挑战性的话),当鼠标按钮按下时,它会画线。它是可读的,没有显式的状态处理:

var pen = new Pen(Color.Red, 3);
var graphics = this.CreateGraphics();

var mouseMoveWhileDown = 
    from md in this.GetMouseDown()
    from mv in this.GetMouseMove().Until(this.GetMouseUp())
    select new Point(mv.X, mv.Y);

mouseMoveWhileDown
    .Pairwise()
    .Subscribe(tup => graphics.DrawLine(pen, tup.Item1, tup.Item2)); 

(我必须承认,在这个例子中,Pairwise()是自制的…)

IObservable最重要的一点是它是“可组合的”,就像IEnumerable一样。

我彻底推荐另一个答案中提到的视频。事实上,在Channel9上有几个不同的视频:


MSDN站点的rx -框架

对于一个更深入的开发人员,源代码

关于Rx的奥地利主题演讲

这是我见过的最好的:DevCamp 2010 Keynote - Rx:治愈异步编程的忧郁

9频道有一些有趣的视频

Kim Hamilton和Wes Dyer: BCL中的。net Rx和IObservable/IObserver内部(VS 2010)

采访Rx的创造者:专家对专家:Brian Beckman和Erik Meijer - .NET响应式框架(Rx)内部

Rx的创建者的介绍

端到端:埃里克梅杰和韦斯戴尔- 响应式框架(Rx) 防护罩1 / 2 E2E: Erik Meijer和 Wes Dyer -反应框架(Rx) 引擎盖下2中的2

一篇Codeproject文章

另一个课程第一个博客链接(新)


阅读这些文章,特别是下载相关的源代码并试用一下。

第一部分-系统。响应式或。net响应式扩展(Rx) -概念和第一眼 第二部分- LINQ到事件-更多关于.NET响应式扩展(Rx) 第三部分- LINQ到事件-使用T4文本模板生成GetEventName()包装器方法

相信这会有帮助


这里有一个wiki网站,有很多代码示例演示如何使用.NET Rx框架的不同特性:http://rxwiki.wikidot.com/101samples

我发现这是最全面的网站,也是最容易上手的一个。


一旦你学过一些基本的东西包括HandsOnLab 一定要看看李·坎贝尔的《冷热观测》,它为我揭开了Rx的神秘面纱:)


更新:下面的博客文章已经被我的在线书籍www.IntroToRx.com所取代。这是一本全面的19章书,免费提供。你可以在网上浏览,也可以在kindle上下载mobi版。你也可以直接从亚马逊上买到,只需要花很少的钱(99美分/ 77便士)。如果这本书不能满足您的需求或期望,请让我(作者)知道,我们会为v2做得更好。

感谢热/冷帖子的链接。这只是整个系列的一部分,

Rx简介 静态和扩展方法 生命周期管理——完成和取消订阅 流控制 组合多个IObservable流 调度和线程 冷热观测 测试的处方 缓冲,窗口,加入和组加入

我会继续更新这个博客,提供更多关于Rx的介绍。

对于更高级的东西,你想去Rx论坛(MSDN)。


DEVHOL202 -用。net的响应式扩展(PDF, 2 MB)治愈异步的沮丧是我迄今为止看到的最好的实验/教程。它指导您了解库的基础知识,以便您可以在您所学的基础上进行构建和设计。

还有一个JavaScript版本。搜索谷歌“反应式扩展手实验室”。


除了Andreas Hoffmann的链接(我在学习Rx时发现它们非常有用)

以下是Bart De Smet(一个非常聪明的人,他把事情解释得很好)的一些视频:

有点像Rx的演练: Rx -治愈你的异步编程的忧郁

一些血腥的内幕+一些哲学,这些视频真的很有启发性: minlinq - LINQ的精髓 (上面的视频讨论了LINQ与其他事物的关系,比如Rx)

关于iqobservable的观察- IQueryable对偶


使用Rx Sandbox可以非常直观地了解不同组合符的含义。这是我见过的最好的学习工具。


为了回答第二个问题,这里有一个可以从Rx中获益良多的问题。这叫做“快速致富”。

你们开发了一款同名游戏,而且销量不错。但它只能在你的商店批发。为了使现金处理更容易,你有一个传送带流向你。

(请随意更改上面的故事:))

销售人员把捆扎好的现金放在上面,但没有标明钞票的数量和种类。你的工作是分类和数钱。以后,当你有了更多的钱,你可以雇佣其他人来帮助你。

在这种情况下,来源是大量现金的异步来源(生产者)。 你的员工和供应商期待钱,但你必须消耗这些钱,拆包,并使用自定义业务逻辑适当地重新包装,以支付他们。

销售人员按照他们自己的思路行事,这样他们就不必等着你数他们往腰带上扔了什么。如果你被告知什么时候有更多的钱可以数,那么你的时间是最好的利用,在那之前你可以做其他工作。

您可以用字节[]表示每个叠。

这是现实世界中相当常见的情况;当你在网络上检索任何资源(例如搜索引擎的网页、图像或视频)或从外围设备获取数据时,你会以字节块(可能带有标题)的形式获取它们。在单个线程中,或者在难以处理的多线程环境中,您倾向于聚合和处理它们。再也不会了!!


我喜欢Rx介绍第1部分-键类型,它展示了关键特性。


Jesse Liberty在2011年10月出版了一本书:

Amazon.com:编程响应式扩展和LINQ

第九频道有RxWorkshop的视频:

频道9:Rx工作室


奇怪的是,响应式扩展的主页链接到十几个视频和博客,却忘记链接到全面的官方参考文档。这真是太遗憾了,如果你了解这个团队,请让他们修复他们的网站!

http://msdn.microsoft.com/en-us/library/hh242985 (v = vs.103) . aspx http://msdn.microsoft.com/en-us/library/hh242986 (v = vs.103) . aspx http://msdn.microsoft.com/en-us/library/system.reactive.linq.observable (v = VS.103) . aspx