web-dev-qa-db-ja.com

IObservableとプレーンイベント、またはIObservableを使用する必要がある理由

マイクロソフトは IObservable<T> interface .NET Framework 4を使用したBCLに対して、「すばらしい、ついに、それを使用する必要がある」と思いました。そこで、深く掘り下げて投稿やドキュメントを読み、パターンを実装しました。

そうすると、基本的な実装では、実際にはすべてのTイベントがフィルタリングなしですべてのサブスクライバーに送信されることに気付きました。つまり、プレーンブロードキャスト。 Observableパターンはプレーンブロードキャスト用であるとどこかで読みました。これは真実ではなく、何かが足りないと感じています。

私の質問:

  1. フィルタリングメカニズムを追加した場合、Observableパターンを使用することとプレーンCLRイベントを使用することの違いは何ですか?

  2. いつこのパターンを使用する必要があり、いつプレーンCLRイベントを使用することを選択する必要がありますか?

  3. 観察可能なパターンの主な利点は何ですか?

42
Adiel Yaacov

Observableは Rxライブラリ の基礎です。彼らはあなたが必要とするほとんどすべての実装と演算子を提供します。 IObservable<T>Rxの背後にある考え方は、イベントの「処理」だけでなく、「LINQtoEvents」を有効にすることです。そのため、「イベントストリーム」を簡単に作成できます。これにより、通常のイベント処理に比べて大きなパワーが得られます。

IObservable<T>のサンプルMSDN実装は 不正解 であることに注意してください。ドキュメントチームに通知されました。

28
Stephen Cleary