Microsoftは、2年間のインキュベーション期間を経て、Reactive Extensions (Rx)ライブラリのバージョン1.0 をリリースした。RxはイベントドリブンUIとLINQ、同時並行性と非同期呼び出しを組合せている。
Rxは、イベントベースのUIから非同期にデータをアクセスする問題を解決しようとしている。ベースのインターフェースがIEnumerable とIEnumeratorである標準の イテレータ パターンは、非同期操作には充分ではないので、Rxは、2つの主要なインターフェース、 IObservable とIObserverを持つオブザーバー パターンを導入することで問題を解決した。クライアントがデータ コレクションを段階的に反復するのではなく、非同期呼び出しの結果として、コレクションがデータをクライアントにプッシュして、呼び出しループをクローズする。
このシナリオは、特にクラウド コンピューティングに有用だ、とRxプロジェクトのリーダーであるErik Meijer氏は言う。クラウド コンピューティングには、ネットワーク遅延がつきものなので、非同期呼び出しが必要だ。なのでクライアントは、データを要求して、他のタスクを続行し、データが入手できるようになったらそれを受け取るほうが、ずっといい。この問題はもっと標準的な方法で解決したほうが易しいように見えるが、Rxの力は、LINQと同時並行性のサポートが組込まれていることから生まれる。なので、ユーザーは、非同期に、データ片を得るのではなく、データ コレクション中に、非同期LINQクエリを生成して、同時に並行に走らせることができる。Rxは、同時並行性を扱えるのは、Parallel Extensions (PFX)の上に作られているからで、これはParallel LINQ と Task Parallel Libraryを含んだマネージド同時並行性ライブラリである。
2年間のインキュベーション期間を経て、Rxは公式なMicrosoft製品になり、Data Developer Centerにおいて安定したリリース1.0 としてデビューを果たした。開発者は、 C#, VB.NET, C++, F# 、JavaScriptを使って、XP以降の全Windowsバージョンと Windows Phone 7上でRxでプログラムできる。
他のリソース:.NET とJavaScript向けの Reactive Extensions (Rx)に関するBart De Smet氏との最近のInfoQインタビュー、Rx MSDN文書、Channel 9 Rx Workshop。