0

現在、次の 2 つのオプションの間で行き詰まっています。

1) オブジェクトの情報を file.xml に格納します。これは、初期化時にアプリケーションに返され、GUI がロードされたときに表示されます。オブジェクトが GUI を介して編集されるたびに、バックエンドへの非同期呼び出しを実行します (file.xml に保存します)。過程の中で)。

-また-

2) すべてを非同期にして、カスタム オブジェクトがエンド ユーザーによって編集のために呼び出されたときに、オブジェクトのバックエンドにクエリを実行し、GUI に表示される xml を返し、if 何かの別の非同期呼び出しを行うようにします。かわった。

いずれにせよ、これらのアプローチの両方に多くの短所があります。私は実際には (バックエンドで) オブジェクトの表現を 1 つだけ必要とし、オブジェクトのフロントエンド バージョンを管理したり、オブジェクトを xml 表現に変換したり、それを別のオブジェクトに分割したりしたくありません。データグリッドで使用される flex フロントエンド。

バックエンド Java オブジェクトのみを管理し、その非同期性や同じオブジェクトの複数の表現を気にせずに、フロントエンドでそれへのインターフェイスを作成できるようにする、これを行うためのより良い方法はありますか?

4

1 に答える 1

0

Granite Data Services を参照してください: http://www.graniteds.org Hibernate を使用している場合: BlazeDS はそれほど高度ではないため、Hibernate を最初に選択する必要があります。Granite は、AMF のカスタム シリアル化、遅延読み込みのサポート、Bean 検証によるフレックス側のエンティティ キャッシュを使用してバックエンド Java オブジェクトにアクセスするための優れたファサードを Flex に実装します。全体的には、Java クラスから AS3 クラスを生成するトップダウン アプローチです。

リアルタイム機能が必要な場合は、フレックス クライアント (Gravity モジュール) でデータの変更をプッシュし、フロント サイドで競合を解決するか、バックエンドで競合リゾルバーを実装できます。

それでも、最終的には高度な競合に対処する必要があります (サーバー上で動作するいくつかの「廃止された」フレックス オブジェクト: あなたはそれに対処したくありません)。たとえば、基本的な機能は、バージョン フィールドを追加して操作を拒否することです。バックエンドでそのようなオブジェクトを自動的に (それを行うには多くの方法があります): フレックス クライアントが現在の変更に自身を更新するカスタムの方法を実装する必要があります。

分散型 VCS のように、多くの人がフレックス アプリケーションで同じオブジェクトに取り組んでいない場合、これはあまり起こりません。

リアルタイムのニーズに応じて (Java オブジェクトの変更の頻度は? これが最も重要な質問です)、フレックス側で変更を「キャッシュ」してから全体を一度更新することを選択できます (ただし、変更が発生した場合に厄介な競合が発生する) またはサーバー側 (granite がこれを有効にする) を毎回チェックして競合を少なくすることができます (そして、競合が発生した場合: より簡単です) が、おそらくより多くのコードを生成して、オブジェクトとより多くのネットワーク トラフィックを同期させます。 .

于 2013-09-16T12:57:50.893 に答える