web-dev-qa-db-ja.com

リアクティブ拡張機能の使用の良い例

Rxの基本を理解しています。私が苦労しているのは、アカデミックな例を超えてこれを実際にどのように使用するかです。 Rxが今日の.NETにあるものよりもはるかに優れたソリューションである、一般的で単純な実際のシナリオは何ですか?

78
Keith Hill

たくさんの良い例については、 The 101 Rx Samples wiki をご覧ください。

41
sblom

Rxを使用すると、同時イベントをまとめて調整するコードを作成できます。 TPL(つまり、タスク)を使用したことがある場合は、適切なものでContinueWithまたはWaitAllを試行するために複雑なバックフリップを行う必要がありました。Rxが最適です。

たとえば、「この配列内の各アイテムについて、Webサービスを呼び出し、それらの要求がすべて戻ってきたら、別のことを行います。いずれかが失敗した場合は、全体を失敗させます」というワークフロー。

開示、恥知らずのプラグイン: Jesse Libertyと私がRxについて書いた本 は、「日々の仕事でRxをどのように使うのか?」というまさにこの問題を解決するために設計されました。 「これで何ができますかdo?」

26
Ana Betts

まず、IObservable イベントです。したがって、イベントを内部で使用する場所であればどこでもIObservableを使用できます。後でこのイベントにLINQを適用する必要がある場合は、リファクタリングせずに実行できます。

次に、RXは、コードを実行する必要があるあらゆる状況に適していますasynchronousely。たとえば、Webサービスの呼び出し、または大きな画像の読み込み。

しかし、実際に輝き始めたとき-プログラムがIObservableの使用の「クリティカルマス」に達し、combining異なるobservableを開始すると、easyいくつかのタスクがどのようになるか驚くでしょう。

25
  • デバイス測定
  • メッセージバスを介して着信するデータ

現在、どちらの場合でも、データを受信する標準的な方法はイベントを介していますが、クエリ構文または構成が必要な場合、RXはイベントがそうでない場所にそれを提供します。

5
Scott Weinstein

Rxは非常に一般的であるため、IEnumerable/IEnumeratorに無制限のユーティリティがあるように、無制限のユーティリティがあります。 IEは値をプルし、IOは値をプッシュします。

ForeachはIEnumerablesが便利になる具体的な例ですが、IEnumerableやyieldなどについては説明していません。 Rxでも同様です。

LINQクエリを使用して計算を自由にプッシュおよびプルできるため、プルビューまたはプッシュビューのいずれかから何かを見て、方向または手段を制御できることは非常に強力です。 IEの数学的双対であるため、IOに対する「無料」の演算子。

Rxを初めて見たばかりですが、使用する楽しいプロジェクトの1つは、ASP.NET MVC Webアプリでアクティビティを表示するSilverlightウィジェットを作成することです(どのアクションメソッドが呼び出されたか、どのユーザーによって呼び出されたかなど) 。 Rxは、同時実行管理や調整など、このプロジェクトの多くのことを支援できるようです。

0
Adrian Grigore