2010-05-16 61 views
17

我已經編寫了很多從Web服務中提取數據的iPhone應用程序,並且我一直致力於在iPhone應用程序和Web應用程序之間同步數據,但我總是覺得可能有更好的方法來處理同步。在Rails應用程序和iPhone應用程序之間同步數據的策略

我想知道你用什麼策略來同步你的iPhone(閱讀:手機)應用程序和你的Rails(閱讀:網頁)應用程序之間的數據。

  • 是否有任何策略的規模特別好?
  • 你是如何處理大量數據的? (您是否使用分頁響應?)
  • 如何確保數據不被覆蓋?
  • 有沒有理由避免Ruby on Rails?
    • 如果是這樣,你能建議一個替代方案嗎?什麼是更好的替代方案?
  • 什麼策略失敗?
    • 你爲什麼認爲這些策略失敗了?

我希望能夠把所有的服務器上的數據修改,但具體的應用,我要開始工作的需要,同時斷開網絡正常工作的能力。

用戶將能夠更新移動設備上的數據並通過Web應用程序更新數據。

當用戶的移動設備連接到服務器時,任何本地更改都會被推送到服務器。

回答

2

它已經約2年,因爲我問過這個問題和景觀發生了巨大的變化。現在已經是後端即服務提供商,如Kinvey,蘋果已經發布了iCloud,並且一些與外部數據源同步的開源項目也出現了。

最終,我最終只需要在設備上保留最新服務器數據的副本,因此我爲每個模型對象添加了時間戳,並設置了webservice以提供自從時間戳以來更新的所有對象傳入。API將按FIFO順序輸出所有對象,我可以在手機上使用這些對象,並且對於隨後的調用,我會要求自我的設備上有最大時間戳後更新的所有內容。實際上這個結果非常好。

2

不是你的整個問題的答案,但我開始做的一件事情,從移動的角度來看有助於在發送服務器同步數據的邏輯和Web服務器本身之間建立一個層。

我創建了一個數據實體,它只是一個通用同步對象,我正在存儲唯一的ID,有效負載和上次嘗試的交付日期。我有另外一些邏輯從核心數據中獲取同步對象並將它們發送出去。如果收到一個好的迴應(即迴應實際上回來了,並且回覆文本是我所期望的),那麼Sync對象將被刪除。這有助於確保您的同步數據正確地到達目的地,而不僅僅是迷失在海上。這也是離線操作的好模式。您可以在脫機狀態下存儲同步對象,並在您重新聯機時按順序開始發送它們。

從網絡的角度來看,Rails Metal聽起來像它可能適合這樣的情況。我從來沒有用過它,但基於一些閱讀,它看起來像金屬適用於高流量可能和快速響應至關重要的情況。它基本上削減了Rails路由器的開銷等。希望有所幫助。

+1

我一直在做類似的事情,雖然我的同步對象也處理通信。我認爲我喜歡你的方法更好一點。你是否將同步對象保存在CoreData中?或者只是將它們歸檔? – jessecurry 2010-05-18 19:14:35

+1

是的,它們被保存爲coredata對象。 – jtrim 2010-05-18 19:51:06

1

如果您使用的軌道,你可以看看我的plistifier插件,我只是寫:看看我的plistifier插件http://github.com/jeena/plistifier

+0

+1用於創建和發佈寶石:) – cbrulak 2011-01-19 18:08:35

+1

這個rails插件有什麼好處? – Jeena 2011-01-21 10:52:15

相關問題