システム設計の方向性について:最初に、本当に必要がない場合は、2つの異なるアプリを作成しないでください。1つはGWTで、もう1つはiPhoneが1つですがよく書かれたGWTアプリを作成します。オフラインで問題なく動作し、HTML機能を使用してデータを管理します-オフラインアプリケーションキャッシュ
2つの別々のアプリを作成する必要がある場合は、少なくとも労力を節約し、標準のGWTアプローチを使用する場合のようにサーバーを2回作成しないでくださいスタンドアロンアプリからサーバーとの通信にほぼ確実に失敗するか(いくつかのトリッキーなヘッダーを使用してJSON over HTTPで圧縮されます...)、または物事を巧妙に書き込むため、GAEで十分にサポートされている RestLetライブラリを調べてください。
オフライン/オンライン切り替えとの同期を維持する方法について:考慮すべきいくつかのアプローチがあり、それらのすべてが完全ではありません。ですから、あなたがあなたのことを考えるとき、あなたが何を期待しているのかを考えてください...MicrosoftWordにならないでください。ユーザーを裏切ろうとしないでください。変更をマージするためにユーザーの介入を要求するユースケースに少なくとも1つのシナリオがある場合(そして、それを銀行に持っていく)-このためのUIを実装するよりも-頻繁に使用する正当な理由があるよりも-ユーザーはそれに慣れるでしょう。非常に特殊な場合にのみユーザーに要求するスーパーデュパーマージロジックを実装したため、必要が生じることはめったにないため、彼がアプリを使い始めてからしばらくすると表示されるよりも優れています...実行しないでください。努力のバランスを取ります。そのようなコードのバグがユーザーにもたらす混乱は、すべての利点よりもはるかに苦痛だからです。
だから方法:1つの方法はDo-UnDoの方法です。オフラインのとき-ユーザーがデータに対して行ったアクションのログを時間順に保持します-接続するとすぐにユーザーが行ったアクション-サーバーに送信して実行します。サーバーからクライアントまで同じです。操作ごとに大量のデータを含むPhotoshopのようなソフトウェアを作成していない限り、ほとんどの場合は正常に機能します。GangOfFourではアクションパターンとも呼ばれます。
もう1つの方法は、ソース管理方法です。-バージョンとロックでさえあるかもしれません。アプリケーションに大きく依存します。DBMSは、トランザクションの実装に内部的に使用する場合があります。
そして、Oflineのときに読み取り専用になるオプションが常にあります:-)