2010-02-12 120 views
5

我正在開發一款可在脫機和在線模式下工作的iPhone應用程序。
在它的在線模式下,它應該提供用戶輸入到GWT/GAE支持的Web服務的所有信息。 在離線模式下,它應該在本地存儲信息,並在連接可用時將其同步到Web服務。保持iPhone應用程序與GWT應用程序同步

目前我的計劃如下:

  1. 提供一個應用程序,並使用Protobuffers高效過度的有線通信
  2. 與本地數據庫工作中使用的核心數據
  3. 投票web服務之間的連接網絡狀態以及何時可用同步數據庫並保持某種本地數據庫到遠程數據庫密鑰的同步。

問題是 - 我在正確的方向嗎?是否實現這個標準模式?也許有人可以將我指向一個以類似方式工作的開源應用程序?

我真的很新iPhone編碼,並會很高興聽到任何建議。

謝謝

+1

我覺得你的問題更多的是與一般的同步問題(誰是主人, iPhone或gwt後端的本地更改)對不對?我也會對此感興趣。 – EightyEight 2010-02-12 17:19:20

+0

這就是我感興趣的內容。將本地更改同步到Web服務器上的主數據集。 – reflog 2010-02-13 10:47:56

回答

0

有關係統設計方向: 首先,如果沒有真正的需要不創建2級不同的應用程序一個GWT和其他iPhone 創造之一,但寫得很好的GWT應用程序。這將脫機工作沒有問題,並將使用HTML feature -- offline application cache HTML feature -- offline application cache如果必須創建2個獨立的應用程序 至少要節省自己的努力,不要寫服務器兩次,如果你使用標準的GWT aproach你幾乎會sertanly失敗從獨立的應用程序(這是壓縮JSON over HTTP與一些棘手的標題...)或將寫東西,所以看看RestLet library服務器與GAE很好的支持。

關於保持與離線/在線切換同步的方式: 有幾種需要考慮的方法,並且它們都不是完美的。因此,當你考慮到你的想法時... ...不要微軟Word不要試圖智取用戶。 如果在用例中至少有一個場景需要用戶干預來合併更改(並且將會 - 請將它帶到銀行) - 比您爲此實現用戶界面要好 - 常常需要使用它 - 用戶會習慣它。它比自從他開始使用該應用程序一段時間以後會看到它要好,因爲需要它是很罕見的,因爲您實現了超級合併邏輯,僅在非常特殊的情況下才會詢問用戶......不要這樣做。 平衡努力。因爲這樣的代碼中的錯誤將引入用戶的混亂比共同的利益更加痛苦。

so how:HOW: 一種方法是Do-UnDo方式。 離線時 - 保持用戶對數據按時間順序執行的操作日誌用戶在連接後立即執行它們 - 發送到服務器並執行它們。從服務器到客戶端一樣。 只要您不是在每次操作中編寫大量數據的Photoshop軟件,大多數情況下都能正常工作。也被稱爲GangOfFour的Action Pattern。

另一種方式是源代碼控制方式。 - 版本,甚至可能是鎖。非常依賴於應用。 DBMS在某些時候將其用於事務實現。

而且總有一種選擇只有當Ofline :-)

2

我想你已經在一起模糊了問題。

  • 如果您有關於製作GWT Web界面的問題,那是一個問題。
  • 有關如何將iPhone同步到Web服務的問題是一個不同的問題。爲此,您不希望使用GWT的RPC進行同步,因爲您必須在您的iPhone代碼中虛擬出序列化系統的「瀏覽器端」,而GWT通常爲您提供該代碼。
+0

我同意我的問題可能有點模糊。 關於你的第一點 - 這不是我所問的,第二點更接近。 我意識到我不能使用GWT的RPC,並且必須提供一個自定義的Web服務,這就是我在問題中寫的,我打算提供一個ProtoBufs接口。 我問的是 - 這種工作流程有沒有共同的模式?幫助將Core Data與遠程數據同步的庫? 教程? – reflog 2010-02-13 10:47:21

0

不知道你是否使用同步框架來管理同步考慮被讀取。如果您有興趣,可以看看OpenMobster的Sync服務。你可以做以下的同步操作

  • 雙向
  • 單向客戶
  • 單向設備
  • 啓動時

除此之外,所有的修改都自動跟蹤並已同步與雲。網絡連接斷開時,您可以讓應用程序脫機。它將跟蹤所有更改,並在連接返回時自動在後臺將其與雲同步。它還提供跨多個設備的iCloud同步

此外,使用推送通知同步雲中的修改,因此即使數據本地存儲,數據也始終爲當前數據。

這裏是一個開源項目鏈接:http://openmobster.googlecode.com

這裏是一個iPhone應用程序同步鏈接:http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

+0

沒有OpenMobster了! – confile 2015-01-21 19:00:45