除Microsoft文档外,Microsoft Reactive(Rx)框架是否有很好的介绍和教程?
另外,什么是Reactive使带有常规异步编码技术难以解决的编程问题变得容易的很好的示例(带有代码)?
除Microsoft文档外,Microsoft Reactive(Rx)框架是否有很好的介绍和教程?
另外,什么是Reactive使带有常规异步编码技术难以解决的编程问题变得容易的很好的示例(带有代码)?
Answers:
更新:以下博客文章已被我的在线图书www.IntroToRx.com取代。这是一本全面的19章书籍,可免费获得。您可以在网络上浏览它,或为您的kindle下载mobi版本。您也可以从亚马逊直接购买,价格不菲(约99c / 77p)。如果这本书不能满足您的需求或期望,请告诉我(作者),我们将在v2中做得更好。
感谢您链接到热门/冷门的文章。这只是整个系列的一部分,
我将继续使用更多Rx入门资料来更新此博客。
有关更多高级内容,请访问Rx论坛(MSDN)。
Rx框架的 MSDN站点
对于更深入的开发人员,源代码
关于Rx的酷奥地利主题演讲
这是我见过的最好的:DevCamp 2010主题演讲-Rx:消除异步编程难题
第9频道上的一些有趣的视频
Kim Hamilton和Wes Dyer:BCL中的.NET Rx和IObservable / IObserver内部(VS 2010)
从Rx到创建者的访谈:专家到专家:Brian Beckman和Erik Meijer-.NET Reactive Framework(Rx)内部
Rx创作者的介绍
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一样。
我全力推荐另一个答案中提到的视频。实际上,在Channel9上有几个与此主题有关的视频:
TakeUntil
,看起来很合适。
var pairwise = source.Zip(source.Skip(1), (x, y) => new Tuple(x, y))
。
阅读完HandsOnLab等一些基本知识之后,请 确保您查看了Lee Campbell的《热和冷的可观察物》,这为我消除了Rx的神秘奥秘:)
您可能会发现有关反应式LINQ的这系列文章(共有四篇)非常有用: 反应式编程(II。)-引入反应式LINQ。
他有使用该游戏编写游戏的示例,因此希望它应该是您想要的。
我还发现导入反应框架第一部分上CodeBetter.com
。在同一站点上有第一部分的续集。
我希望这能帮到您。
奇怪的是,Reactive Extensions 主页链接到许多视频和博客,但忘记了链接到全面的官方参考文档。真是可惜,如果您认识这个团队,请让他们修复他们的网站!
使用Rx Sandbox可以非常直观地了解不同组合器的含义。这是我见过的最好的学习工具。
阅读这些文章,尤其是下载相关的源代码并进行操作。
相信这会有所帮助
为了回答第二个问题,这是一个可以从Rx中受益的问题。它被称为“快速致富”。
您开发了一个同名游戏,并且销量很好。但是,仅在您的商店中可以批发。为了使现金处理更容易,您有一条流向您的传送带。
(请随时更改上面的故事:))
销售人员在其上放置一捆装订的现金,没有标签来指示一叠钞票的数量和类型。您的工作是对钱进行分类和计数。稍后,当您获得更多收入时,可以雇用其他人来帮助您。
在这种情况下,来源是一堆现金的异步来源(生产者)。您的员工和供应商期望钱,但是您必须消耗一,,拆开它们的包装,并使用自定义业务逻辑重新包装以适当地支付它们。
销售人员在自己的线程上运行,因此他们不必等待您统计他们所付出的代价。如果您被告知何时有更多的钱可以用来数钱,那么您可以最好地利用自己的时间,在此之前您可以做其他工作。
您可以用一个byte []表示每个wad。
这是现实世界中相当普遍的情况;当您从网络上检索任何资源(例如,搜索引擎的网页,图像或视频的网页)或外围设备中的数据时,就会以字节为块(可能带有标题)来获取它们。在单线程或难以使用的多线程环境中,您倾向于聚合和处理它们。不再!!
您的“不包括Microsoft文档”子句是否扩展到第9频道上的视频?
从反应式框架的创建者Erik Meijer:- 专家到专家:Brian Beckman和Erik Meijer-.NET反应式框架(Rx)内部
全新:.NET Rx扩展入门
除了Andreas Hoffmann的链接(在我学习Rx时发现它们非常有用)
这是Bart De Smet(一个非常聪明的人,能很好地解释事情)的一些视频:
有点Rx的贯穿:
Rx-治愈异步编程难题
一些内幕+一些哲学,这些视频确实很有启发性:
Min LINQ-LINQ的本质
(上面的视频处理了LINQ有点如何与其他事物(如Rx)联系起来)
DEVHOL202 –到目前为止,我已经通过最佳实践/教程使用.NET的Reactive Extensions治愈异步蓝调。它会指导您学习库的基础知识,以便您可以根据所学知识进行构建和设计。
还有一个JavaScript版本。在Google上搜索“反应式扩展动手练习”。