5

オフラインモードとオンラインモードで動作するはずのiPhoneアプリケーションに取り組んでいます。
オンラインモードでは、ユーザーが入力したすべての情報をGWT/GAEがサポートするWebサービスにフィードすることになっています。オフラインモードでは、情報をローカルに保存することになっています。接続が利用可能になったら、情報をWebサービスに同期します。

現在の私の計画は次のとおりです。

  1. Protobuffersを使用してアプリとウェブサービス間の接続を提供し、効率的な有線通信を実現します
  2. CoreDataを使用してローカルDBを操作する
  3. ネットワークステータスをポーリングし、利用可能な場合はデータベースを同期して、ある種のlocal-db-to-remote-dbキーの同期を維持します。

問題は、私は正しい方向に向かっているのかということです。これを実装するための標準パターンはありますか?たぶん誰かが私に同じように機能するオープンソースアプリケーションを教えてもらえますか?

私はiPhoneコーディングに本当に慣れていないので、何か提案を聞いてとてもうれしく思います。

ありがとう

4

3 に答える 3

2

あなたは一緒に質問を曖昧にしたと思います。

  • GWT Webインターフェースの作成について質問がある場合は、それが1つの質問です。
  • iPhoneをWebサービスに同期する方法に関する質問は別の質問です。そのためには、同期にGWTのRPCを使用したくありません。これは、GWTが通常提供するシリアル化システムの「ブラウザー側」をiPhoneコードで偽造する必要があるためです。
于 2010-02-12T18:49:34.713 に答える
0

システム設計の方向性について:最初に、本当に必要がない場合は、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のときに読み取り専用になるオプションが常にあります:-)

于 2010-06-06T23:39:09.750 に答える
0

同期を管理するために同期フレームワークを使用することを検討したかどうか疑問に思います。興味があれば、オープンソースプロジェクトであるOpenMobsterのSyncサービスをご覧ください。次の同期操作を実行できます

  • 双方向
  • 一方向クライアント
  • 一方向デバイス
  • 起動する

さらに、すべての変更は自動的に追跡され、クラウドと同期されます。ネットワーク接続がダウンしているときにアプリをオフラインにすることができます。変更を追跡し、接続が戻ったときにバックグラウンドで自動的にクラウドと同期します。また、複数のデバイス間でiCloudのような同期を提供します

また、クラウドでの変更はプッシュ通知を使用して同期されるため、データがローカルに保存されている場合でも、データは常に最新です。

オープンソースプロジェクトへのリンクは次のとおりです:http://openmobster.googlecode.com

iPhone App Syncへのリンクは次のとおりです:http ://code.google.com/p/openmobster/wiki/iPhoneSyncApp

于 2012-03-18T17:42:55.017 に答える