5

ソース値の式に基づいて時間とともに変化する変数を持つというリアクティブプログラミングの基本的な考え方について読みました。私はこれを式を使って実装しました。しかし、それから私はMicrosoftのReactive Extensions(Rx)を見て、まったく異なるものを見ました。時間の経過とともに自己更新する変数はどこにありますか?見られるものはありません。イベント引数を介して列挙するためのいくつかの素晴らしい方法。

だから私の質問は、Rxは本当にどれほど「反応的」なのかということです。私たちが今目にしている機能は、これから起こることの前兆ですか?それとも、マイクロソフトは不注意に流行語を投げかけていますか?それとも私は完全に要点を見逃していますか(その場合、私はあなたにその方法を説明してもらいたいです)?

編集: 私はすでにRxの説明でいくつかの素晴らしい答えを得ました、それに加えて質問は閉じられています。:(しかし、私はまだ次の線に沿ってもっと聞くことを望んでいます:

  1. Rxはどのような意味で「リアクティブ」ですか?自己更新変数がアイデアの中心であると思いましたが、Rxはこれらを提供していません。LINQ-to-EventsはRxのより良い名前のようです。マイクロソフトが「リアクティブ」という言葉をRxに適用する際に誤用したのではないかと思い始めています。
  2. 現在のRx機能は、どのようにして自己更新変数の前兆になるのでしょうか。私はそのような機能を実装しましたが、この目的のためにRxから有用なものは何もありませんでした。
4

3 に答える 3

7

「リアクティブ」は、「関数型リアクティブ プログラミング」と呼ばれる別の言語概念とうまく結び付いていますが、何よりも流行語かもしれません...

いずれにせよ、Rxが「何であるか」については、私よりもはるかに知的な人々が答えていますが、試してみます。

  • 最初は、いろいろありました。これらは形があり、POCOと呼ばれていました

  • これらのPOCOのコレクションが形成されたため、名前が付けられました。IEnumerable<T>

  • 「しかし、イベントはどうでしょうか」人々はうめき声を上げて泣き叫びました。

  • その時、 TheErikTheBartらはこれらの奇妙な出来事を見て、「ねえ、彼らを POCO のように振る舞わせることができます。なぜなら、彼らは の鏡像にすぎIEnumerable<T>ないからです!」と考えました。

  • これが の誕生でありIObservable<T>、 の双対であるIEnumerable<T>(オブザーバーがアイテムを「引き出す」のではなく、ストリームがオブザーバーに情報を「プッシュ」するため)

  • LINQそれから私は「ジェネシスモード」で書くことにうんざりしました、そしてそれらの本当に賢い人々は「タイ​​ムトラベル」の能力とともに形成された同じモナドクエリロジックをまとめISchedulersて「Rx」と呼びました

于 2013-02-08T01:56:44.287 に答える
2

ああ少年!わかった。ここでの主な問題は語彙だと思います。Rx は、Linq to "Event" などと表現されることが多く、IObservable と呼ばれるもので実装されます。

Rx を使い始めたばかりの人は、きっと同じ落とし穴に陥ることでしょう。「イベント」という言葉を見ると、イベント/イベント ハンドラーなどのキーワードを思い浮かべますが、Rx のコンテキストでは、イベントはそれよりも一般的です。これは、非同期に発生するすべてのものであり、ほとんどの場合、別のスレッドで発生します。もちろん、イベントの 1 つのタイプは .net イベントです。Observable.FromEventPattern ファクトリ メソッドを使用してイベント ハンドラー -> IObservables を作成することには、何らかの価値があります。これらのライフ サイクルは IDisposable として表されます (ただし、詳細についてはそれは後で)。

Rx のもう 1 つの使用法は、TPL データ フローと大きく重複するという点で、データの並列処理です。大規模なデータの並列作業に使用する典型的なパターンは、それを Rx IObservable に変換してから、処理/スレッド動作をモナドとして適用することです。

ファンシーな部分に関しては、 IObservable には Linq プロバイダーがあり、Linq を使用して非同期プロセスを非同期に処理できます (たとえば、 TPL を使用した投機的実行)。

最後に、IObservable は残念な名前です。ObservableCollection に似ているため、ほとんどの人が INPC の概念と混同してしまうからです。そうではないことを保証します。

于 2013-02-08T01:58:50.337 に答える
0

リアクティブ プログラミングは、「データ フロー」と「変更の伝播」に基づいています。

これにはさまざまな表現方法があります。Rx フレームワークは基本的に、従来のイベント ベースのパラダイムをイベントのストリーミング表現として再検討し、その周りの操作を提供します。

于 2013-02-08T01:54:04.763 に答える