web-dev-qa-db-ja.com

.NET Reactive Frameworkの優れた紹介

Microsoftのドキュメントの他に、Microsoft Reactive(Rx)フレームワークの優れた紹介とチュートリアルはありますか?

また、Reactiveが、従来の非同期コーディング技術を使用して解決するのが難しいプログラミングの問題を簡単にする良い例(コード付き)は何ですか?

215
LBushkin

これは、.NET Rxフレームワークのさまざまな機能の使用方法を示す多くのコード例があるwikiサイトです。 http://rxwiki.wikidot.com/101samples

私はこれが最も包括的なサイトであり、開始が最も早いサイトであることがわかりました。

84
LBushkin

UPDATE:以下のブログ投稿は、私のオンラインブック www.IntroToRx.com に置き換えられました。これは、無料で入手できる包括的な19章の本です。 Webで閲覧したり、Kindleのmobiバージョンをダウンロードしたりできます。また、わずかな料金(〜99c/77p)でAmazonから直接入手することもできます。本があなたのニーズや期待に合わない場合は、私(著者)に知らせてください。v2の方がうまくいきます。

ホット/コールド投稿へのリンクをありがとう。これは full series の一部にすぎません。

  1. Rxの概要
  2. 静的メソッドと拡張メソッド
  3. ライフタイム管理-完了および購読解除
  4. フロー制御
  5. 複数のIObservableストリームを結合する
  6. スケジューリングとスレッド化
  7. ホットおよびコールドのオブザーバブル
  8. Rxのテスト
  9. バッファ、ウィンドウ、結合およびグループ結合

このブログは、Rxの入門書で更新し続けます。

より高度なものについては、 Rx Forum (MSDN)にアクセスしてください。

96
Lee Campbell
60
Summer-Time

これは、リアクティブプログラミングでは簡単ですが、古典的なイベントでは面倒(挑戦的でない場合)で、マウスボタンが押されている間に線を描画するものの例です。読み取り可能で、明示的な状態処理はありません。

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の主題に関するいくつかの異なるビデオがあります。

16
Benjol

HandsOnLab などの基本的なものをいくつか確認したら、必ずチェックアウトしてください Lee CampbellのHot and Cold Observables Rxから不可解なミステリーの一部を取り出しました:)

12
sweetlilmre

リアクティブLINQに関する次の一連の記事(4つあります)が役立つことがあります。リアクティブプログラミング(II。)-リアクティブLINQの紹介

彼はそれを使ってゲームを書いた例を持っているので、あなたが探しているものであることを願っています。

4
James Black

奇妙なことに、Reactive Extensions homepage は多数のビデオやブログにリンクしていますが、包括的な公式リファレンスドキュメントへのリンクを忘れています。チームを知っているなら、彼らのウェブサイトを修正するよう彼らに頼んでください!

4
Colonel Panic

私はまた、Reactive Frameworkの紹介パートICodeBetter.comを見つけました。同じサイトの最初の部分の続編があります。

これがあなたのお役に立てば幸いです。

4
FrenchData

Rx Sandbox を操作して、さまざまなコンビネータの意味を非常に直感的に把握します。これは私が見た中で最高の学習ツールです。

3
Omer Raviv

これらの記事に目を通し、特に関連するソースコードをダウンロードして試してください。

これが役立つと信じて

2
amazedsaint

Jesse Libertyには、2011年10月に出版された本があります。

Amazon.com:Reactive ExtensionsとLINQのプログラミング

また、Channel9にはRxWorkshopビデオがあります。

Channel9:RxWorkshop

2
Shane Castle

2番目の質問に答えるために、Rxから多くの利益を得ることができる問題があります。 「金持ちになろう」と呼ばれています。

同じ名前のゲームを開発し、かなり売れています。しかし、それは卸売のためにあなたの店でのみ利用可能です。現金処理を簡単にするために、あなたに向かって流れるコンベヤーベルトがあります。

(上記のストーリーを自由に変更してください:))

営業担当者は、バインドされた現金の札束をその上に置き、札束内の請求書の金額と種類を示すラベルを付けません。あなたの仕事はお金を分類して数えることです。後で、あなたがより多くのお金を得るとき、あなたはあなたを助けるために他を雇うことができます。

この場合、ソースは現金の札束の非同期ソース(プロデューサー)です。従業員とサプライヤはお金を期待していますが、ワッドを消費し、それらを開梱し、カスタムビジネスロジックを使用して、必要に応じて再パッケージ化して支払う必要があります。

営業担当者は自分のスレッドで実行しているので、彼らがあなたがベルトに投げたものを数えるのを待つ必要はありません。あなたが他の仕事をすることができるまで、あなたがより多くのお金が数えるために利用可能であるときあなたに言われるならば、あなたの時間は最も活用されます。

各ワッドをbyte []で表すことができます。

これはかなり一般的な現実世界の状況です。ネットワーク上のリソース(検索エンジンのWebページ、画像、ビデオなど)または周辺機器からのデータを取得すると、バイト単位で(おそらくヘッダー付きで)取得されます。シングルスレッド、または作業が困難なマルチスレッド環境では、それらを集約して処理する傾向があります。もう違います!!

2
Performance

アンドレアス・ホフマンのリンクに加えて(私がRxを学んでいたときに非常に役立っていた)

バート・ド・スメット(物事を非常によく説明する非常に賢い人)のビデオを次に示します。

ちょっとRxの実行:
Rx-非同期プログラミングブルースの治療

いくつかの血まみれの内部+いくつかの哲学、これらのビデオは本当に啓発的です:
Min LINQ-LINQの本質
(上記のビデオは、LINQがRxのような他のものとどのように関連するかを扱っています)

IQbservableの観測-IQueryableのデュアル

1
gideon

DEVHOL202 – Reactive Extensions with .NETで非同期ブルーを硬化させる(PDF、2、MB)は最高のラボ/チュートリアルです私はこれまで見てきました。ライブラリの基本をガイドし、学習した内容に基づいて構築および設計できるようにします。

JavaScriptバージョンもあります。 Googleで「Reactive Extensionsハンズオンラボ」を検索してください。

1
John C

「Microsoftドキュメントを除く」条項は、チャンネル9のビデオにも適用されますか?

リアクティブフレームワークの作成者Erik Meijerから:- エキスパートのエキスパート:Brian BeckmanおよびErik Meijer-Inside the .NET Reactive Framework(Rx)

真新しいGetting Started with Rx Extensions for .NET

1
Matt Breckon

私はRxパート1の概要-キーの種類が好きで、重要な機能を示しました。

0
vidalsasoon