很好的介绍.NET Reactive Framework
除了微软的文档,有没有一个很好的介绍和微软反应(Rx)框架的教程?
另外,Reactive是一个很好的例子(带有代码),使得使用传统的asynchronous编码技术难以解决的编程问题更容易解决。
下面是一个wiki站点,其中有很多代码示例,演示了如何使用.NET Rx框架的不同function: http : //rxwiki.wikidot.com/101samples
我发现这是最全面的站点,也是最快速的站点。
更新 :下面的博客文章已被我的在线书籍www.IntroToRx.com所取代。 这是一本全面的免费的19章书籍。 你可以在网上浏览它,或者下载你的kindle的mobi版本。 你也可以直接从亚马逊收取一小笔费用(约99c / 77p)。 如果本书不符合您的需求或期望,请告诉我(作者),我们将为v2做更好的工作。
感谢链接到热/冷的职位。 这只是整个系列的一部分,
- Rx介绍
- 静态和扩展方法
- 终生pipe理 – 完成和取消订阅
- stream量控制
- 组合多个IObservablestream
- 调度和线程
- 热和冷的观察
- testingRx
- 缓冲区,窗口,联接和组联接
我会继续更新这个博客更多的Rx介绍性的东西。
对于更高级的东西,你想去Rx论坛 (MSDN)。
Rx框架的 MSDN站点
对于更深层次的开发者来说, 源代码
关于Rx的酷奥地利主题演讲
这是我见过的最好的: DevCamp 2010 Keynote – Rx:治愈你的asynchronous编程蓝调
第9频道有些有趣的video
Kim Hamilton和Wes Dyer:BCL中的.NET Rx和IObservable / IObserver(VS 2010)
接受Rx的创造者采访: Expert to Expert:Brian Beckman和Erik Meijer – .NET Reactive Framework(Rx)
Rx的创build者介绍
- E2E:Erik Meijer和Wes Dyer – 响应式框架(Rx)
- E2E:Erik Meijer和Wes Dyer – 反应框架(Rx)在2之下
Codeproject 文章
另一个课程第一个博客的链接 (新)
下面是一个很容易做反应式编程的例子,但是对于经典事件来说,这是一个混乱(如果不是很有挑战性的话),它会在鼠标按下的时候画线。 它是可读的,没有明确的状态处理:
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一样。
我直接推荐在另一个答案中提到的video。 Channel9上有关于这个主题的几个不同的video:
一旦你经历了一些基本的东西,包括HandsOnLab,请确保你看看李·坎贝尔的热和冷的Observable ,拿走了Rx的一些神秘的奥秘:)
您可能会发现关于反应式LINQ的这一系列文章(有四篇)有用: 反应式编程(II。) – 介绍反应式LINQ 。
他有一个使用它编写游戏的例子,所以它应该是你正在寻找的。
我还在CodeBetter.com
上发现了Reactive Framework Part I的介绍。 在同一个网站的第一部分有一个续集。
我希望这会帮助你。
奇怪的是,Reactive Extensions 主页链接到十几个video和博客,但忘记链接到全面的官方参考文档。 这真是一个耻辱,如果你了解这个团队,请让他们修复他们的网站!
使用Rx沙盒玩,可以非常直观地看到不同的组合子的含义。 这是我见过的最好的学习工具。
阅读这些文章,特别是下载相关的源代码并使用它。
- 第一部分 – System.Reactive或.NET Reactive Extensions(Rx) – 概念和初看
- 第二部分 – LINQ到事件 – 更多关于.NET Reactive Extensions(Rx)
- 第三部分 – LINQ到事件 – 使用T4文本模板生成GetEventName()包装器方法
相信这将有所帮助
要回答第二个问题,这里是一个可以从Rx中受益的问题。 这就是所谓的“快速致富”。
你已经开发了一个同名的游戏,销售非常好。 但它只在您的商店批发。 为了使现金处理更容易,你有一条传送带向你stream动。
(请随时更改上面的故事:))
销售人员将一叠现金放在上面,没有标签显示钞票中钞票的数量和types。 你的工作是分类和数钱。 之后,当你获得更多的钱时,你可以雇佣其他人来帮助你。
在这种情况下,来源是一个现金(生产者)的asynchronous来源。 您的员工和供应商需要钱,但是您必须消耗这些纸袋,将其打包,然后使用您的定制业务逻辑进行适当的重新打包以支付费用。
销售人员正在自己的线程上运行,所以他们不必等着你去计算他们扔在腰带上的东西。 如果有人告诉你什么时候有更多的钱可以计算,那么你的时间是最好的利用,直到那时你可以做其他工作。
你可以用一个byte []来表示每个wad。
这是一个相当普遍的现实世界的情况; 当您检索networking上的任何资源[例如search引擎,图像或video的网页]或来自外围设备的数据时,都会以大块字节(可能带有标题)获取它们。 在单个线程中,或者在一个难以处理的multithreading环境中,您倾向于汇总和处理它们。 不再!!
杰西·利伯蒂(Jesse Liberty)出版了一本书,2011年10月出版:
Amazon.com:无功扩展编程和LINQ
Channel9上有RxWorkshopvideo:
Channel9:RxWorkshop
您的“不包括Microsoft文档”条款是否延伸到第9频道的video?
从反应式框架的创build者Erik Meijer: – Expert to Expert:Brian Beckman和Erik Meijer – .NET Reactive Framework(Rx)
全新 : Rx Extensions for .NET入门
除了Andreas Hoffmann的链接(当我学习Rx时发现它们非常有帮助)
这里有一些Bart De Smet(非常聪明的人解释事情真的很好)video:
有点接近Rx:
Rx – 固化你的asynchronous编程蓝调
一些血腥的内心+一些哲学,这些video真的很有启发性:
Min LINQ – LINQ的精髓
(上面的video讨论了LINQ是如何与其他东西相关的,比如Rx)
关于IQbservable的观察 – IQueryable的双重性
DEVHOL202 – 使用Reactive Extensions for .NET固化asynchronous蓝牙 (PDF,2 MB)是目前为止我所见过的最好的实验/教程。 它指导您了解图书馆的基础知识,以便您可以构build和devise所学知识。
还有一个JavaScript版本。 在Google上search“Reactive Extensions Hands on Lab”。
我喜欢Rx第1部分 – 关键types的介绍 ,它展示了关键特性。