2010-12-22 61 views
6

我想知道是否有人知道任何設計模式,文章或其他信息的設備之間同步設置的問題。是否有任何設計模式的配置同步

說一個網站,一個iPhone應用程序和一個iPad應用程序;隨着未來的設備出現。

任何信息將不勝感激。如果您需要更多信息,要正確回答,請說出來,然後我可以詳細說明問題。

+0

你的意思是*應用程序設置*爲一個應用程序,可在網上和作爲各種設備上的本地應用程序如果不是,你在談論什麼樣的*設置?如果是這樣,它是什麼類型的應用程序,你只是想同步'設置'(假定是少數簡單的數據對象)或更復雜的應用程序數據? – Ergwun 2010-12-23 03:43:57

+0

是的應用程序設置喜歡多個'喜歡'和'不喜歡'的各種事情很簡單的對象字符串基本上。在各種在線和離線設備上可用的消費者應用程序中。像MobileMe一樣,甚至谷歌同步。無法保證任何一臺設備將在線並每天進行同步,並且每臺設備上的內容都會被添加和刪除 – Dan 2010-12-23 14:27:04

回答

2

你可以遵循這個SyncML標準的link。這可以給你一個模板來擴展框架,以容納更多的數據和設置尚未辦理This - 給出了一個開源的同步框架細節

1

原諒我,如果以下似乎太籠統,但我試圖保持它的高的水平,使得它落在你的問題行。我不知道你要找的東西本身就叫做「設計模式」。這聽起來像你正在尋找一個同步範例/系統。請注意,我在此回覆中的假設是,您需要爲您的應用程序提供在線和離線功能(因爲您明確提到了同步)。如果我錯了,請告訴我。

特別是,您可能要查找的內容通常是通過兩件事來實現的:1)「分佈式」數據庫(可以在客戶端應用程序(如移動應用程序)上以及在任何服務器上脫機工作)和2)同步和衝突解決機制。

一個很好的例子就是源代碼管理工具Git。 Git具有上述兩個特徵。首先,它使用一個數據庫(例如一個Git項目的文件系統)是分配(例如項目可以從一個開發者的工作站克隆到另一個獨立工作的。)其次,它具有同步和衝突解決機制的機制。也就是說,如果我嘗試從同事的工作站進行同步(例如,更改),她的代碼和我的代碼之間的差異可能會合並(自動或手動合併)。

另一個示例,也許更相關您的應用程序是Evernote。如果我沒有弄錯,Evernote使用相同類型的範例(平面文件數據庫)來同步文檔,並且有桌面客戶端,網站和移動客戶端。

這並不是說您需要使用平面文件數據庫。您可以輕鬆使用關係數據庫或其他數據庫。此外,根據您嘗試存儲和同步的數據類型,您可以通過非常簡單的衝突解決方案逃脫。 (例如,如果您只是存儲狀態更新,投票計數等,也許您只是選擇數據庫中的最新條目。)

簡而言之,我提到的工具似乎遵循這種工作流程:

  1. 在客戶端應用程序上啓動會話時,通過聯機並提取新數據來同步或「更新」客戶端。這是您識別和解決客戶端數據與服務器或「雲」上的數據之間的衝突的地方。
  2. 編輯或創建客戶端上的數據「離線」,無論是網站,移動應用等
  3. 同步或「更新」雲的上線,推動數據你改變
+0

正確。但是我正在尋找一個系統的設計來實現你所提到的,無論它是一種「模式」還是與人們討論實現這種系統的各種方法及其相關優點和缺點的文章的鏈接。你知道任何事情或任何地方這個信息可能是? – Dan 2010-12-28 23:03:36

相關問題