5

状況:科学データの表を表示および更新するために相互作用するデータベースと Web アプリがあります。私の仕事は、ユーザーができるようにするモバイル アプリケーションを構築することです。

  1. 追跡目的でオフラインで自分自身を認証および識別する (キャッシュに保存されている定義済みの動的なユーザー アカウントとアクセス許可を使用)
  2. 現場作業用の識別データをダウンロードする(インターネット アクセスが必要)
  3. フィールドでの観察の作成と保存 (インターネット アクセスなし)
  4. 観測を後でオンライン データベースに同期する

質問: このようなアプリケーションを一貫したインターネット アクセスから独立して管理するために必要なデータを認証/ダウンロード/保存/アップロードするための最良の方法は何ですか? 2 人のユーザーが同じ読み取り値を調整し、同期の間に 1 つの更新が発生した場合、どのテーブルと値が変更されたかを追跡し、変更が失われないようにするにはどうすればよいですか?

現在の思考の流れ: sessionStorage に格納されているすべてのオンライン データベース トランザクションを表す JSON オブジェクトを格納する「同期」テーブルを維持し、アプリがデータをアップロードする前にその同期を継続的に検証し、このオブジェクトをチェックするための衝突制御に関する現在の暫定的な戦略特定の主キーの更新時に競合が発生する可能性があります。編集段階でタプルをロックできるようにしたいのですが、インターネット アクセスが不安定なため、それは不可能に思えます。

これが少し初心者の質問である場合は申し訳ありません。私はモバイルアプリ開発全体に不慣れです...

tl;drモバイルアプリからのデータベースへの非同期変更が、オンラインおよびオフラインになると、同じデータベースに対する別の個人の変更と上書き/衝突するのを防ぐにはどうすればよいですか? また、ネットワーク接続を使用してユーザーを認証するにはどうすればよいですか?

4

3 に答える 3

2

ajax 呼び出しに関する「競合状態」[1]について聞いたことがありますか? 解決策[2]があります。サーバーへの ajax 呼び出しを並行ではなく順次にする方法であり、それらは順番に次々と実行されます。これは非同期接続で機能するため、他の同期は必要ありません。

ここでの秘訣は、その目的のためにjQuery ajaxQueue [3]を使用することです。

私の情報源:

[1] http://en.wikipedia.org/wiki/Race_condition

[2]すべての AJAX 呼び出しを順次にする方法は?

[3] http://plugins.jquery.com/ajaxqueue/

于 2013-08-31T13:56:56.847 に答える