Data Management Service 機能について

Data Management Service 機能は、クライアントサイド機能とサーバーサイド機能を組み合わせて使用し、複数のクライアントとサーバー層との間でデータを分散します。クライアントサイドの DataService コンポーネントは、サーバーサイドの Data Management Service と連携して分散データの管理機能を提供する ActionScript オブジェクトです。クライアントサイドの DataService コンポーネントはクライアントのデータを管理し、サーバーサイドの Data Management Service は複数のクライアントとサーバーサイドデータリソースとの間におけるデータの分散を管理します。DataService コンポーネントによって管理されるデータは、多くの場合、Data Management Service を通じて、リモートデータソースまたは別のクライアントアプリケーションから複製されます。

サブトピック

Data Management Service 機能と RPC 機能との比較
データの流れについて
データ同期の競合の解決

Data Management Service 機能と RPC 機能との比較

Data Management Service 機能では、Flex RPC 機能の RPC (リモートプロシージャコール) におけるアプローチとは根本的に異なるデータアプローチが利用されています。RPC 機能とは異なり、Data Management Service 機能では、複数のクライアント上のデータとサーバーサイドデータリソース上のデータからなる共通のデータセットについて、自動および手動の同期がサポートされています。また、状況に応じて接続するクライアントに対して、オフラインでのクライアントサイドデータの永続性もサポートされています。

RPC コンポーネントとは異なり、DataService コンポーネントでは、オブジェクトにバインドするための静的な結果を返すリモートサービスの処理やメソッドを直接呼び出すことはありません。そうではなく、Data Management Service から複数のクライアントに一連のデータが複製され、データが変更されるたびに、変更が自動的に Data Management Service に設定されます。そして、Data Management Service によって、基になるデータリソースとクライアントアプリケーションが更新されます。

データの流れについて

Data Management Service 機能の中心となるのが Flex メッセージングフレームワークです。このフレームワークは、Flex クライアントアプリケーションと Data Management Service との間でデータメッセージを受け渡します。データメッセージはメッセージチャネルを経由してネットワーク層間で受け渡されます。メッセージチャネルによって、メッセージのプロデューサとコンシューマが宛先に接続されます。Data Management Service では複数の異なるメッセージチャネルがサポートされており、HTTP、AMF (Action Message Format)、RTMP (Realtime Message Protocol) の各プロトコルをサポートするチャネルがサポートされています。Data Management Service のクライアントアプリケーションは、データを Data Management Service 宛先に送信するメッセージプロデューサとしても機能し、宛先にサブスクライブしてデータ更新を受信するメッセージコンシューマとしても機能します。

次の図は、バックエンドのデータリソースと ArrayCollection オブジェクト間のデータの流れを示しています。ArrayCollection オブジェクトは Flex アプリケーション内で DataService コンポーネントによって管理されます。


Flex アプリケーション内で DataService コンポーネントによって管理されるデータの流れ

Data Management Service では "Data Management Service アダプタ" を使用して、特定のデータストアタイプに適した方法でデータストアを更新します。いずれかのクライアント側のデータか、または Data Management Service 側のデータが変更されると、クライアント側とサーバー側のすべてのデータが Data Management Service によって自動的に同期されます。データベースやディレクトリなどのバッキングデータストアに対する変更は、Data Management Service やクライアントアプリケーションには自動的には伝播されません。また、Data Management Service 機能では、データ同期の競合を処理するためのサーバーサイドおよびクライアントサイドの競合解決 API も提供されています。

クライアントサイドでは、DataService コンポーネントの fill() メソッドを呼び出し、サーバーサイドの Data Management Service 宛先からデータを取得して、ArrayCollection に設定します。また、DataService コンポーネントの getItem() メソッドを呼び出して個々のデータアイテムを取得することもできます。クライアント側のデータが変更されると、DataService コンポーネントの commit() メソッドがトリガされます。このメソッドは、データ変更を Data Management Service 宛先に送信します。そして、これらの変更が他のクライアントに伝播されます。Data Management Service 宛先では、クライアントとサーバーサイドデータリソース間のデータの同期を管理します。データアイテムの追加または削除を実行するには、DataService コンポーネントの createItem() または deleteItem() メソッドを呼び出します。

Data Management Service 機能では、ドメインモデルを構造化して各層間でデータを分散するための J2EE のベストプラクティスがサポートされています。

データ同期の競合の解決

Data Management Service 機能では、アプリケーション間において同期された方法で分散データを共有および更新できます。複数のクライアントで同じデータ部分が同時に変更された場合、データ同期の競合が発生する可能性があります。Data Management Service 機能は、データ同期の競合を検出し処理するための競合解決 API を備えており、競合が解決されるまで以降の変更を制限することによって、分散データの整合性を保ちます。

Data Management Service 宛先は、クライアントからのデータ更新が古いことを検出して、競合をクライアントに知らせることができます。競合解決の実装に必要なサーバーサイドコードの量は、使用するアダプタのタイプによって異なります。競合の例外を処理するクライアントの ActionScript コードは、アプリケーションにとって最適な方法で記述できます。


Flex 2.01