7

BlazeDSAMFリモーティングを使用するAdobeFlexアプリケーションで、ローカルデータを最新の状態に保ち、バックエンドデータベースと同期させるための最良の状態は何ですか?

一般的なWebアプリケーションでは、Webページはロードされるたびにビューを更新するため、ビュー内のデータが古すぎることはありません。

Flexアプリケーションでは、タブやパネルなどで共有するために、より多くのデータを事前にロードする傾向があります。このデータは通常、バックエンドから更新される頻度が少ないため、古くなる可能性が高くなります。保存時の問題など

それで、この問題を克服するための最良の方法は何ですか?

a。FlexアプリケーションをWebアプリのようにビルドします-ビューが変更されるたびにバックエンドデータをリロードします

b。問題を無視し、古いデータの問題が発生したときに対処するだけです(古いデータを扱う可能性が高いユーザーを煩わせるリスクがあります)

c。他の何か

私の場合、LiveCycleRTMPを介してデータチャネルを開いたままにすることはできません。

4

7 に答える 7

2

a. 独自の通知またはポーリングを行うプロキシを介してバックエンドの変更を最適化することを検討してください。プロキシは、データのいずれかがダーティかどうかを認識し、そうでない場合は (304 のように) クイック リターンします。

b. 多くの場合、ユーザーは触るよりも見ることが多いです。見るための 1 つのレベルの更新と、編集を開始して続行するための別のレベルを検討してください。

BuzzWord を見てください。編集時にロックされますが、頻繁に自動的に保存およびロック解除されます。

乾杯

于 2008-10-19T18:54:33.853 に答える
1

BlazeDS でメッセージング プロトコルを使用できない場合は、HTTP 経由で RTMP ポーリングを行う必要があることに同意する必要があります。AMF で RTMP を使用するとデータが圧縮されるため、高速化に役立つため、クライアントは更新の合間に長時間待機します。これにより、製品の顧客が追加のハードウェアとライセンスの支払いを決定した場合に、後でプッシュ方式にスケールアップすることもできます。

于 2008-09-25T12:52:40.797 に答える
1

通知メカニズムを使用するために Livecycle と RTMP は必要ありません。BlazeDS のチャネルを使用してストリーミング/ロング ポーリング戦略を使用できます。

于 2009-04-03T13:38:23.557 に答える
0

過去に私は選択肢「a」を選びました。リモートオブジェクトを使用している場合は、キャッシュスタイルのロジックを設定して、リモートエンドでそれらの同期を維持することができます。

サム

于 2008-09-20T13:15:04.747 に答える
0

同期に関する次の記事を見つけました。

http://www.databasejournal.com/features/sybase/article.php/3769756/The-Missing-Sync.htm

技術的な詳細には触れませんが、この戦略を実装するコーディングの種類は推測できます。

また、サーバーからの派手な通知がないため、同期戦略が必要です。

たとえば、modelLocator に会社のリストがあります。頻繁に変更されるわけではありません。ページネーションを考慮するほど大きくはありません。ユーザー アクションごとにすべてをリロード (removeAll()) したくありませんが、アプリケーションがクラッシュしたり、破損したデータを更新したりしたくありません。アプリケーションの別のインスタンスから更新または削除された場合。

私が今行っているのは、SESSION に SELECT 日時を保存することです。データを更新するために戻ってきたら、SELECT WHERE last_modified>$SESSION['lastLoad']

このようにして、データをロードした後に変更された行のみを取得します (ほとんどの場合 0 行)。

明らかに、INSERT と UPDATE ごとに last_modified を更新する必要があります。

DELETE の場合は、よりトリッキーです。男が彼の記事で指摘しているように、「もはや存在しないレコードをどのように送信できますか」

どのアイテムを削除する必要があるかをフレックスに伝える必要があるため(たとえばIDで)、DELETEで実際にDELETEすることはできません:)

ユーザーが会社を削除するときは、代わりに UPDATE を実行します。deleted=1 次に、会社を更新すると、deleted=1 の行について、ID を flex に送り返すだけで、この会社がモデルに含まれていないことを確認できます。

大事なことを言い忘れましたが、deleted=1 で last_modified が 3 日以上経過している行、またはニーズに合ったと思われる行を消去する関数を作成する必要があります。

良いことは、ユーザーが誤って行を削除した場合でもデータベースに残っているため、実際の削除から 3 日以内に保存できることです。

于 2009-10-02T02:14:47.043 に答える
0

RTMP over HTTP (HTTP ポーリング) を使用できませんか? そうすれば、RTMP を引き続き使用できます。実際の RTMP よりもはるかに遅くなりますが、この方法で更新をブロードキャストすることができます。

RTMP を使用して、Table/PrimaryKey ペアを含む RTMP メッセージをブロードキャストするだけで挿入、更新、および削除を通知し、アプリにデータの自動更新を任せるアプリがあります。これは、RTMP を使用して Http で行います。

于 2008-09-25T12:39:54.617 に答える