3

オフライン対応の Web アプリケーションの構築を考えています。

私が検討しているアーキテクチャは次のとおりです:
Web サーバー (リモート) <--> Web サーバー/キャッシュ (ローカル) <--> Browser/Prism

このモデルについて私が思い描く利点は次のとおりです。

  • 展開は Web ベースで、このアプローチのすべての利点を備えています
  • オフライン対応
  • UI (html/js) の同期は問題ではありません
  • データ同期はほぼ自動化可能
    • RESTful パラダイム内にいる限り
    • 必要に応じてこれを壊すことができますが、手動同期はほとんど外科的ままです
  • ローカル Web サーバーはサービスとして開始されます。バックグラウンドでのデータ同期など、任意のコードを実行できます
  • 私はデータを完全に管理しています (場所、サイズ制限なし、ユーザーが無意識に削除する可能性はありません)
  • 拡張機能付きの Prism により、javascript をクローズド ソースに保つことができます

このアーキテクチャについて何か考えはありますか? なぜ私はそれを使うべきですか/使うべきではないのですか? 私は特に成功/ホラー ストーリーを探しています。



ロングバージョン

ノート:

  • ユーザーはコンピューターの知識があまりありません。たとえば、Gears がどのように機能するかを表面的に説明することさえ、まったく問題外です。
  • データが失われた場合、それが本当にユーザーのせいであっても、私は責任を負います(彼がマシン上のランダムなディレクトリを削除することを除いて)
  • ユーザーに自分のマシンに何かをインストールするように要求できます。100% Web ベースである必要はなく、サンドボックスで実行する必要もありません。

この問題に対する一般的な解決策は、どういうわけか適切ではありません。ここでは、それぞれの簡単な分析を示します。歯車/HTML5:

  • データを制御できず、ユーザーが警告なしに削除できます
  • データの場所を制御できない (ブラウザーやプラットフォーム間で統一されていない)
  • 同期を行うには、ユーザーがブラウザでアプリケーションを開く必要があります。舞台裏での自動同期なし
  • ブラウザーが異なれば処理も異なり、1 台のマシンでデータを統一的に表示することはできません
  • 利用可能なディスク容量が限られている
  • 同期は完全に手動であり、SQL ベースのストレージはこれを面倒にします (SQL テーブルが完全に複製されていればそれほど複雑ではありませんが、私の場合はそうではありません)。これは非常に複雑な問題です。
  • 私のコードはほぼ完全にオープンソース化されます (html/js)

Adobe AIR:

  • 上記のいくつか
  • サーバー側のインクルードなし (!)
  • バックグラウンドで実行できますが、ウィンドウレスでは実行できません
  • 手動同期
  • Web キャッシングは複雑なようです
  • どういうわけかクラッジのように感じます、私はいくつかのマシンにインストールするのに問題がありました

私の要件は次のとおりです。

  • Web ベース (必須)。たとえば、ユーザー間でデータを共有するなど、さまざまな理由があります。
  • オフライン (必須)。アプリケーションはオフラインで完全に使用できる必要があります (いくつかのまれな例外があります)。
  • 迅速な開発 (必須)。私は、はるかに多くのビジネス リソースを持つプレーヤーと対戦する単一の開発者です。
  • クローズド ソース (あると便利です)。はい、オープンソース モデルを理解しています。ただし、現時点では、競合他社に簡単に真似されたくありません。繰り返しますが、彼らはより多くのリソースを持っているので、私のハードワークを受け入れて、私よりも短い時間でより良いものにすることができます. 明らかに、彼らは独自のコードを開発している私の真似をすることができます - それは問題ありません。
4

3 に答える 3

10

CRM製品のホラーストーリー:

  • アプリケーションが頻繁に使用される場合、そのデータの完全なコピーをユーザーのマシンに保存することは現実的ではありません。
  • 多くのユーザーが更新できるデータをアプリケーションが備えている場合、レプリケーションは単純ではありません。ローカルで変更を加えた 3 人のユーザーが同期したら、どちらが勝ちますか?
  • 実際には、これはユーザーが望んでいることではありません。彼らは、どこからでも最新のデータにリアルタイムでアクセスできることを望んでいます。運が良かったのは、信頼できる唯一の情報源へのモバイル インターフェイスを提供することでした。
于 2009-06-12T16:21:20.983 に答える
1

ローカル Web サーバーをサービスとして実行する部分は賢明ではないようです。クライアントで利用可能な特定の動作環境に縛られているという事実に加えて、サーバーを管理するという追加の負担をエンド ユーザーに課しています。さらに、ローカル Web サーバー自体を Web ベースのモデルに配置することはできません。

全体として、私は本当の「ローカル Web サーバー」の可能性にあまり興奮していません。シームレスなオフライン Web ストレージの提案の一環として、Web ブラウザー内で実行される組み込み Web サーバーを提案したことから、これには一定の偏りがあることは間違いありません。BITSY 0.5.0 を参照してください ( http://www.oracle.com/technology/tech/feeds/spec/bitsy.html )

どんな犠牲を払ってもデータ損失を防ぐというあなたの要件がどれほど重要なのか疑問に思います. オフラインでディスクがクラッシュするとどうなりますか? または、デバイスの紛失がありますか?一般に、ローカル キャッシュはサーバーよりもできるだけ先に配置する必要がありますが、サーバーがクライアントよりも遅れている範囲でデータの損失を許容できるように準備しておいてください。これには、ある程度の契約上の交渉またはトレーニングが含まれる場合があります。実際には、これは契約を破るものではないかもしれません。

于 2009-06-16T17:06:44.927 に答える
0

これを確実に行う唯一の方法は、レコード レベルである種の「チェックアウトとロック」を提供することです。ユーザーがリモートに移動するときは、操作したいレコードをチェックアウトする必要があります。このチェックアウトは、データをローカル DB にコピーし、レコードのチェックアウト中に中央 DB のレコードが変更されるのを防ぎます。

ローミング ユーザーが再接続し、ロックされたレコードを確認すると、中央の DB でデータが更新され、ロックが解除されます。

于 2009-06-12T16:24:43.720 に答える