エクスポート (0) 印刷
すべて展開

Windows Phone の Reactive Extensions for .NET Framework の概要

2012/02/09

このトピックでは、Reactive Extensions for .NET Framework の概要、および Windows Phone アプリケーションでそれらを使用できるいくつかの方法について説明します。

Reactive Extensions for .NET Framework は、反応型アプリケーションを作成するための API を提供するマネージ ライブラリです。反応型アプリケーションは環境に対応して動作します。反応型モデルでは、データ ストリーム、非同期要求、およびイベントは、オブザーバブル シーケンスとして表されます。アプリケーションでは、これらのオブザーバブル シーケンスをサブスクライブして、新しいデータが到着したときに非同期メッセージを受け取ることができます。Reactive Extensions を使用すると、クエリ演算子を使用してこのようなシーケンスを作成できます。

アプリケーションが複数のデータ ソース (ユーザー入力イベント、Web サービス要求、システム通知など) と対話する場合、従来の方法でこれらの対話すべてを管理するには、データ ストリームごとに異なるハンドラーを実装する必要があります。これらのハンドラーの内部のコードでは、すべての異なるデータ ストリーム間を調整し、データを処理して使用できる形式にする必要があります。Reactive Extensions を使用すると、すべてのデータ ストリームを 1 つのストリームに結合して 1 つのハンドラーをトリガーするクエリを作成できます。データのフィルター、同期、変換の処理は Reactive Extensions クエリによって実行されるので、ハンドラーは受信したデータに対応して何らかの処理を行うだけで済みます。

Reactive Extensions のプログラミング モデルは広い範囲のアプリケーションに適用できますが、モバイル デバイスには複数のソースからユーザー データを受信および処理するためのハブとして機能する性質があるので、モバイル デバイスで実行するアプリケーションには特に有効です。ここでは、特に Windows Phone 開発者に関係の深い Reactive Extensions のシナリオについて説明します。

イベントのフィルター処理

Microsoft 位置情報サービスでは、位置情報データが取得されるとアプリケーションに通知するイベントが公開されています。組み込み API を使用すると、データをフィルター処理し、位置情報データが指定した量以上に変化した場合にのみ通知を送るように要求できます。Reactive Extensions を使用するとこれ以外のフィルター処理をイベントに対して実行でき、たとえば、位置が指定した四角形領域の内部にあるときにだけアプリケーションで通知を受け取る、といったことができます。Reactive Extensions では、データ ストリームをフィルター処理し、指定した条件を満たすデータだけで最終的なストリームを形成するクエリーを定義できます。

複数の非同期 Web サービス要求の作成

モバイル デバイス用のアプリケーションは、複数の Web サービスのコンテンツと機能を組み合わせて作成することがよくあります。Web サービスが要求に応答するまでの時間は、デバイスの接続速度、インターネット トラフィック、およびサービス自体の実装に依存するので、本質的に予測できません。Reactive Extensions を使用すると、複数の Web サービス要求を行い、指定した時間内の応答だけを受け取ることができます。また、検索クエリを作成し、複数の Web サービスに対してポストした検索が、指定した最低数の検索クエリの結果が返ったらアプリケーションに戻るように設定できます。

データ ストリームのエミュレート

モバイル デバイス用のアプリケーション開発が困難になる原因の 1 つは、アプリケーションが動作環境で直面する状況の多くが開発環境には存在しないことです。たとえば、加速度計データと位置情報データは、デバイス エミュレーターでのアプリケーション開発時にはシミュレートするのが困難な場合があります。Reactive Extensions モデルでは、データのコンシューマーとプロデューサーが、インターフェイスを定義されたオブザーバー オブジェクトと監視可能オブジェクトの内部にラップされるので、加速度計データ用のハンドラーなどのコンシューマーを作成し、シミュレートされたデータを含むファイル ストリームからライブ センサーにプロデューサーを移行するといったことを、非常に小さいオーバーヘッドで行うことができます。

表示:
© 2014 Microsoft