質問

するおそれがある場合は一つを選ぶRx上TPLの2つの枠組み直交?

だからこそ理解Rx主として提供を目的として抽象化以上のイベントを構成も可能に提供する抽象化過asyncます。のCreatexx負荷のFromxxx過負荷および解約によ処理のIDisposableを返します。

TPLも抽象化のための事務取消します。

私のジレンマが使用するどんなシナリオ?

役に立ちましたか?

解決

は受信の主な目的は、イベント上の抽象化を提供することはありません。これは、その成果のひとつです。その主な目的は、コレクションのために構成可能なプッシュモデルを提供することです。

反応枠組み受信(Rx)はIObservable<T>IEnumerable<T>の数学重さに基づいています。だから、むしろIEnumerable<T>を使用して、コレクションから「プル」の項目よりも、私たちはオブジェクトを持つことができますIObservable<T>によって私達に「プッシュ」ます。

私たちは、実際に観測可能な情報源を探して行くときに

もちろん、イベント&非同期操作のようなものは、優れた候補である。

反応性フレームワークは、当然、マルチスレッドモデル観察可能なデータのソースを見ることができるようにすると、クエリとサブスクリプションを管理することが必要です。 Rxは実際にこれを行うには、TPLを多用してます。

あなたが受信を使用する場合は、

ですから、暗黙的にTPLを使用しています。

あなたはあなたのタスクを直接制御を希望する場合は直接TPLを使用することになります。

しかし、あなたは、あなたが観察したいというデータのソースを持っているし、その後に対してクエリを実行する場合、私は徹底的に反応性のフレームワークをお勧めします。

他のヒント

一部のガイドラインがあってます。

  • 私を扱うデータがんの発祥.データの到着時に喜ば?その後RX.
  • 私の原点復帰計算の管理が必要な並行処理?そしてTPL.
  • 私の管理には複数の結果を講ずる必要のあるものから選択に基づく時間がかかる?その後RX.

私はスコットの弾。み、より具体的な事例 Rx地図っくす

  • 消費の流れ
  • 非ブロック非同期の仕事のようにウェブます。
  • ストリーミングイベントです。netのようなイベントマウス移動またはサービスバス-メッセージタイプイベント)
  • を構成する"流れ"のイベントでも一緒になること
  • Linqスタイル事業
  • 露データストリームからの公開API

TPLのように地図もに

  • 内部parallelisationの作業
  • 非ブロック非同期の仕事のようなウェブ請求
  • 行の業務フロー-continuations

ひとつだと思ったとIObservable(Rx)であることになり確実に広がっている。一度のコードベースとなること間違いなさその他のインタフェース経由で、最終的に表示されます。私は想像するのが怖いのですが、チームは快適Rx現在の愛を作で保存します。

まぁRxが、支配的な図書館のTPLで既に対応します。純3.5,4.0,Silverlight3,Silverlight4とが可能です。このとき有効にして学ぶ一つに適用することができくます。

編集:私は考えを変えてRxいて優位であTPL.その解決な問題ではないかと比較するというのに。ます。純4.5/C#5.0のasync/喫キーワードはさらに提携のTPLである。深discusonにRxイベントvs vs TPL。チェックを 第一章 私のオンライン書 IntroToRx.com

更新月から2016年 場合は、30分をお勧めします。readジョーイヤーハウの代わりに私の思惑.こういった分析をするものだがその場で発音を確認することがこの質問に詳しくはブログの代わりにこれらの回答がほか、TPL vs Rx.NET 彼はまた、MSの研究プロジェクト(緑コスモス).

http://joeduffyblog.com/2016/11/30/15-years-of-concurrency/


と思うのMSの大きな間違いを超り訂正します。純2.0をしています。彼らは多くの異なる並行処理管理Api全てを同時に払い戻しは行いません。

  • スティーブンToubを押してくレプリミティブの交換イベントとして始まった Future<T> たった後、点火されました。 Task<T>)
  • MSた分-LINQ-反応性の拡張機能(Rx)
  • ハードウェア-組み込みた ロボットcuntime(CCR)

その間に多くの管理APIのチームにしようとした生活をAPMと Threadpool.QueueUserWorkItem(), を味わわなければToubが勝つという彼の戦艦 Future<T>/Task<T> にmscorlib.dll.はもしそうだとしたら、ヘッジ対象、出荷の両方 Task<T>IObservable<T> にmscorlibものをかけたその他のRx Apiではないもの ISubject<T> にmscorlib.このヘッジに終わりが、金額の重複(以降)、無駄な努力内外の会社です。

重複参照: TaskIObservable<Unit>, Task<T>AsyncSubject<T>, Task.Run()Observable.Start().この氷山の一角です。がより高いレベルで発生していると考えること

  • StreamInsight-SQLイベントの流れ、ネイティブ-コードで最適化されたものの、イベントのクエリを使用して定義されLINQ構文
  • TPLデータフロー型で成り立TPL、並行Rx、最適化された微調整ネジに平行ないクエリを構成する
  • Rx-驚きの表現力がむずかの危機が訪れる。ミックス'ホッ'とする流れ IEnumerable-スタイルの拡張方法、非常に簡単にブロック永久(呼び出し First() 暑ストリームを返しません).ケジューリング限界限を平行度)を通じてよ SubscribeOn() 拡張方法、妙に暗黙的におよびません。"さら学ぶRx準備金を長時間学習すべての落とし穴を避けなければなりません。がRxいオプションの場を構成する複雑なイベントの流れは必要な複雑なフィルタリング/照会.

とは思わないRxして戦うチャンスで広く採用までのMS船 ISubject<T> にmscorlib.は悲しいので、Rxものが含まれて非常に有用なコンクリート(汎用)の種類は、 TimeInterval<T>Timestamped<T>, というふうに思いのあるべきコア/mscorlibのように Nullable<T>.また、 System.Reactive.EventPattern<TEventArgs>.

いといえるでしょうTPLデータフロー型専門のサブセット機能Rx.データフロー型でのデータ処理ができる測定可能な時間は、Rxにはイベントなどのマウス位置に、エラー状態などを取り扱う時には無視できます。

例:の"購読"のハンドラは非同期したいと考えていました以下の1executorです。とRxいブロックですから、その他の方法では、Rxには非同期-agnosticな脅威の非独特の方法で人々をいざないをもたらしています。

.Subscribe(myAsyncHandler().Result)

ない場合はブロック、Rx検討レーションを用いたアーティクルが完了しながらハンドラが実行される非同期.

ると思っている方がいるかもしれませ

.ObserveOn(Scheduler.EventLoopSchedule)

以上の問題は解決しました。この様お休み頂きますので予.Complete()ワークフローがRxのままであると考えていることが分かってもスケジュール実行き終了のご応募を待たずに非同期運転す。

いきなり4兼非同期タスクによRxなどもセット。もできるhackものの実施により自分のスケジューラー、バッファーなど。

TPLデータフロー型の提供にも解ActionBlock.できるスロットルを同時に行動するならではの理解の非同期操作で呼び出しの完了()と待って終了いうこ:待ってすべての中の非同期タスクを完了します。

もう一つの特徴TPLが"バックプレッシャーふくそう".例えば発見されたエラーお取り扱いのコンペティションに必要なrecalc前月ます。購読されているお客様に対してソースをRx、パイプラインを含む無限バッファは、ObserveOnよいのメモリ秒単位で源泉のまま覧いただけるより高速加工にも取付けることができます。ものを実装する場合にはブロック、ソースが生じることを前提にしてからブロック、たとえば、ソースは非同期。にTPL実践できる源として

while(...)
    await actionBlock.SendAsync(msg)

ていないブロックソースいまで待がハンドラは過負荷状態で運転されています。

全体的に、これらのRxにはフィット感の良い行動する時間を計算す。場合は処理時間が大きくなら、世界の不思議な副作用と難解なデバッグしやすくなります。

このTPLデータフロー型ブロック遊びもとのRx.いAsObserver/AsObservableアダプターで貼中Rxパイプラインが必要です。がRxよりも多いパターンの利用例です。なので私の経験則を開始RxトTPLデータフロー型として必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top