
リアクティブプログラミング
Reactive Extensions (Rx)、IObservable、operators、schedulers、backpressure(オプション、最新の web API ではあまり使われません)
1Reactive Extensions (Rx.NET) における IObservable<T> インターフェイスとは何ですか?
Reactive Extensions (Rx.NET) における IObservable<T> インターフェイスとは何ですか?
回答
IObservable<T> は、push ベースのデータソースを表す Rx.NET の基本的なインターフェイスです。observer が非同期通知を受け取るために登録できる Subscribe メソッドを公開します。これは IEnumerable<T> のリアクティブ版です。IEnumerable がデータを同期的に pull するのに対し、IObservable はデータを非同期的に subscriber へ push します。
2Rx.NET の IObserver<T> インターフェイスが持つ 3 つのメソッドは何ですか?
Rx.NET の IObserver<T> インターフェイスが持つ 3 つのメソッドは何ですか?
回答
IObserver<T> は 3 つのメソッドを定義します。シーケンスの各要素を受け取る OnNext(T value)、エラーを処理して失敗時にシーケンスの終了を通知する OnError(Exception error)、そしてシーケンスが正常に完了したことを示す OnCompleted() です。これら 3 つのメソッドは observer の契約を形成し、OnError または OnCompleted の後に OnNext が呼ばれないことを保証します。
3IEnumerable<T> と IObservable<T> の主な違いは何ですか?
IEnumerable<T> と IObservable<T> の主な違いは何ですか?
回答
IEnumerable<T> は pull モデルで、消費側が GetEnumerator() と MoveNext() を使ってデータを同期的に要求します。IObservable<T> は push モデルで、ソースが Subscribe() を介してデータを非同期的に subscriber へ push します。IEnumerable は反復処理中に呼び出しスレッドをブロックしますが、IObservable はノンブロッキングな操作と、LINQ operators による非同期イベントの合成を可能にします。
Rx.NET における Select operator の役割は何ですか?
Rx.NET において Where operator はどのように動作しますか?
+21 面接問題