11章Rx(Reactive Extensions)
Reactive Extensions for .NET(Rxとして知られています)は、非同期の情報ソースやイベントベースの情報ソースを扱うように設計されています。Rxは、コードでこのようなソースのデータに対処する方法を統合し同期するのに役立つサービスを提供します。「9章 デリゲート、ラムダ、イベント」でイベントの定義とサブスクライブの方法を既に説明しましたが、Rxはそのような基本機能の他にもさまざまな機能を用意しています。Rxはイベントよりも習得が容易なイベントソースの抽象モデルを提供しますが、デリゲートや.NETイベントによる何でもありの方法よりも、複数のイベントストリームをずっと簡単に結合し管理できる強力な演算子を備えています。
Rxの基本的な抽象モデルであるIObservable<T>
は、項目のシーケンスを表します。また、演算子もこのインターフェイスの拡張メソッドとして定義されています。LINQ to Objectsと似ていると感じた人も多いと思いますが、実際、多くの共通点があります。IObservable<T>
とIEnumerable<T>
に共通点が多いというだけでなく、Rxはほとんどすべての標準LINQ演算子をサポートしています。LINQ to Objectsに精通していれば、Rxもなじみのあるものに感じられるでしょう。Rxで異なる点は、シーケンスが受け身ではないということです。IEnumerable<T>
とは違い、Rxソースは利用者から項目が要求されるまで待つことはありませんし、ソースの利用者が次の項目を要求することもできません。代わりに、Rxは項目の準備ができたときにソース側が利用者に通知するプッシュ
Get プログラミングC# 第8版 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.