4

Web アプリでオフライン データを管理し、接続時にサーバーと同期する簡単な方法はありますか? 私はMeteor、CouchDBなどを見てきましたが、最も苦痛の少ない方法が何であるかはまだわかりません.

もちろん、ソケットなどを使用して自分で実装することもできますが、その目的のためにすでに何かが作成されている場合は、再度実行する理由がわかりません。

Nodeをサーバーとして使用する予定です。

ありがとう

4

2 に答える 2

2

あなたは2つのことについて話している。1) オフラインの場合にデータを保存/永続化する方法 (ストレージメカニズム)、および 2) オンラインの場合にサーバーと同期する方法 (通信メカニズム)。1 に対する答えは、ある種のローカル ストレージであり、プラットフォームに応じて、いくつかの方法 (localstorage、websql、ファイル システム API など) があります。2 に対する答えは、同期の必要性がどれほど緊急かによって異なりますが、一般的には、HTTP 自体を定期的な (長い) ポーリング、websockets などで使用できます。

ストレージと通信の両方のメカニズムに加えて、Meteor (通信) や CouchDB (ストレージ) など、ジョブを簡素化する多数のライブラリがありますが、それ以外にも多数あります。実際の同期メカニズム (競合の解決も可能) を処理するライブラリもありますが、これは実際のアプリケーションに大きく依存します。

更新: このフレームワークは有望に見えますが、自分でテストしていません:

http://blog.nateps.com/announce-racer-experimental-realtime-model

于 2012-05-31T13:34:15.990 に答える
1

クラウドサービスも検討する必要があるかもしれません。これらは、新しいアプリケーションを開発している場合に最適です。これにより、サーバーレス モデルがさらに推進されます。もちろん、サービスを使用して満足する必要があります。

Simperium ( ) は興味深いクラウド サービスです。現在私が見つけた唯一の同期機能 (他の点では類似している Firebase や Spire.io とは異なります) であり、iOS の場合はオフライン ストレージが含まれていますが、JavaScript クライアントの場合はHTML5 機能を使用してローカル ストレージを自分でカバーする必要があります。Backbone.js はこれをサポートしているようで、Simperium は同様の API スタイルを使用して Backbone と統合できます。

クラウド以外のサービスの場合、Derbyjs ( ) はデータ同期ライブラリである Racer (前の回答で言及) を含むオープン ソース プロジェクトです。どちらも急速に開発中であり、まだ完成していませんが、タイムスケールが許せば興味深いものに見えます。クラウド サービスは必要ありません。Derbyjs と Meteor の便利な比較があります。これは Derbyjs の開発者によって書かれていますが、あまり偏っていません。

また、いくつかの興味深いレプリケーション機能が組み込まれている CouchDB も調べましたが、クエリがインデックスを必要とするときに (またはバッチ プロセスによって) 遅延更新されるインデックスの使用が気に入らず、満足できませんでした。サーバー DB をクライアントに直接公開して、レプリケーション/同期を有効にします。一般的には、クライアント側のローカル ストレージをサーバー側の DB から分離するのが最善だと思います。もちろん、Web アプリの場合、クライアントで CouchDB を使用するのは難しいでしょう。

于 2012-07-25T08:04:10.917 に答える