| Flex 2 開発ガイド > データアクセスと相互接続性 > Flex Data Management Service について > Data Management Service 機能について | |||
Data Management Service 機能は、クライアントサイド機能とサーバーサイド機能を組み合わせて使用し、複数のクライアントとサーバー層との間でデータを分散します。クライアントサイドの DataService コンポーネントは、サーバーサイドの Data Management Service と連携して分散データの管理機能を提供する ActionScript オブジェクトです。クライアントサイドの DataService コンポーネントはクライアントのデータを管理し、サーバーサイドの Data Management Service は複数のクライアントとサーバーサイドデータリソースとの間におけるデータの分散を管理します。DataService コンポーネントによって管理されるデータは、多くの場合、Data Management Service を通じて、リモートデータソースまたは別のクライアントアプリケーションから複製されます。
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 コンポーネントによって管理されます。
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