17

私はコア データを介してデータ管理を実現するアプリケーションを開発しており、2 つの異なるデバイス間 (最終的には iDevices と Mac 間でも) でデータを同期する機能を実装する方法を研究しています。

これまでのところ、興味深いものや有用なものは何も見つかりませんでした。そのため、良い出発点、ガイド、または従うべきモデルを求めています. このようなことに気づいたことがありますか?

アップデート

私はこの質問に対して報奨金を開始しました。iOS での同期は難しい作業になる可能性がありますが、デバイス間の同期機能を提供するアプリはたくさんあります。私の質問は次のとおりです。彼らはどのようにこれを行うのですか? 最善のアプローチは何ですか?さまざまなソリューションとは何ですか?

更新 2

iCloud がほぼ 1 年前にリリースされたので、この質問は確かに時代遅れです。デバイス間のモバイルデータの同期に関する興味深い洞察を提供できるので、それを生かしておきたいと思います。

4

4 に答える 4

11

自分でやりたいのであれば、これは非常に素晴らしいが、やりがいのある演習になる可能性があります。Appleの「iDevices」以外の「iDevices」間のP2P接続を容易にするサードパーティのフレームワークを知りません。車輪の再発明をしたくない場合は、これらの方針に沿って調査を行うことができます。私は、アプリサーバーを介して同期サービスを実装した私の(少しの)経験に基づいて答えています-原則は、P2Pアプローチとほぼ同じでなければなりません。

最初のステップは、データを同期するためのプロトコルを設計することです。あなたがあなた自身のために答えなければならないかもしれない質問:

  • データ同期について何を理解する必要がありますか?
  • Core Dataモデルのどの部分を同期しますか?同期を容易にするために、現在のモデルに変更を加える必要がありますか?
  • どのシリアル化/逆シリアル化メカニズムを使用しますか?
  • 複数のデバイス間でエンティティを一意に識別するにはどうすればよいですか?
  • データをバージョン管理するにはどうすればよいですか?どのエンティティを同期する必要があるかをどのように判断できますか?
  • 同期操作を元に戻すことができる必要がありますか?
  • 同期の進行状況を追跡するにはどうすればよいですか?また、障害と例外ケースをどのように処理しますか?これらをユーザーに通知するにはどうすればよいですか?
  • 「インクリメンタル」(モデルの一部)と「グローバル」(モデル全体を一度に)のどちらで同期しますか?
  • ユーザーはどのくらいの頻度でデバイス間で同期する必要がありますか?
  • セキュリティ上の考慮事項はありますか?暗号化が必要ですか?

これはかろうじて表面を傷つけています。あなたが前進するにつれて、あなたは間違いなくもっと考えることを見つけるでしょう。

次に、デバイス間の接続方法を決定します。あなたは無線ソリューション、P2Pの種類を好むようです。そのために、私はこれらのツールを見ることから始めます:

  • GameKit(このフレームワークには、Bluetoothを介してデバイス間の接続を確立するためのAPIがあります)
  • Bonjour(ネットワークを介したデバイス検出のためのAppleプロトコル-BonjourWebサンプルアプリケーションを参照)+BSDソケット

前に説明した設計上の決定に基づいて、最も快適に感じるツールを選択してください。どちらも経験がないので、お役に立てません。モーフィアスが言ったように:

ドアしか見せられません。あなたはそれを通り抜けなければならない人です。

申し訳ありませんが、少しユーモア:)

最後に、同期メカニズムを実装するためのソリューションを決定します。たとえば、クライアントサーバーモデルを選択できます(1つのデバイスが接続をリッスンし、別のデバイスが接続を開始します)。

より関連性の高いドキュメント:

これがあなたに出発点となることを願っています。

于 2011-06-02T13:52:33.780 に答える
3

データの同期は、悪名高いトリッキーです。単純な解決策は、解決策がないよりも悪いです。

この問題に関する優れた精神的なガイダンスについては、Thingsの作成者が今後のクラウド同期機能で何をしているのかを確認してください。私の希望は、開発者が同期サービスを実装できる同期APIをリリースすることです。しかし、彼らがそれを彼ら自身に留めていたとしても、彼らは本当にその仕事に立ち向かうために必要な一種の魂の探求を非常にうまく示しています。

于 2011-05-27T20:06:30.497 に答える
2

「Couchbase for iOS」はあなたのニーズに応えるかもしれません

https://github.com/couchbaselabs/iOS-Couchbase

readmeによると:

Mobile Couchbase for iOS

Apache CouchDB on iOS provides a simple way to sync your application

デバイス間でデータを共有し、ユーザー データのクラウド バックアップを提供します。他のクラウド ソリューションとは異なり、データは Couchbase Mobile によってデバイス上でホストされるため、ネットワークがダウンまたは低速 (飛行機、地下鉄、裏庭) であっても、アプリケーションはユーザーに応答します。

What this means for you:

You can embed the rock solid distributed database, Mobile

iOS デバイス上の Couchbase。iOS アプリは、実績のある Apache CouchDB の同期テクノロジを使用できます。CouchApp が 3 つ未満の場合は、それらを iOS アプリとしてデプロイできます。

于 2011-05-29T16:22:56.300 に答える
-1

Apple API Sync Servicesから始めて、それがニーズを満たしているかどうかを確認します。原則として、すべての Apple デバイスとサービス間で同期できます。

于 2011-06-01T16:03:24.603 に答える