2016-01-29 62 views
0

我正在設計一款用於數據收集的Android應用程序,該應用程序預計將用於網絡覆蓋率較低的戶外區域,因此客戶端到服務器消息的健壯性非常重要。如果用戶嘗試提交某些內容並且請求失敗或者沒有網絡,則應用程序需要記住該內容,稍後再嘗試,或者按需或連接恢復。Android應用程序通過不可靠的網絡處理寫入請求

我們正在考慮將Firebase用於我們的數據模型,但也希望評估更傳統的服務器/數據庫/ API解決方案。一個很大的優勢火力地堡是通過客戶端SDK自己的「下線」的支持:

你的火力地堡的應用程序將保持響應,而不受網絡延遲 或互聯網連接的。在向服務器寫入任何數據之前,所有對Firebase數據庫的寫入操作都將立即觸發本地事件 。一旦連接重新建立,客戶端將會收到它所錯過的任何改變,並將其與當前的 服務器狀態同步。

如果我們使用Firebase,那麼免費獲得這款軟件非常棒。或者,什麼會給我類似的客戶端功能來支持典型的RESTful API?最好有一種能夠爲我處理狀態的庫,而不是跟蹤個人的嘗試。

我已經研究過像SymmetricDS這樣的脫機數據庫同步解決方案,但在這種情況下,這看起來像是矯枉過正。事實上,我寧願客戶端不能直接訪問數據庫。從應用程序發送的消息將是獨立的條目,如照片或評論,並不需要執行復雜的查詢,同步寫入等。我只需確保用戶提交的任何內容最終使它服務器一旦恢復連接,並確認它已經完成。

+0

它不會讓我用網上API標籤....? –

回答

1

如果你正在考慮一個hybird應用程序,你可以在WebView中使用PouchDB(它支持Cordova和Android與SQL Lite,可以通過這種方式重新用於iOS)。它只能在本地使用,而不是使用它的簡單而強大的同步功能,但需要給予客戶直接的數據庫訪問權限。雖然,您可以在db上配置R/W訪問權限和多個用戶,每個db可以是每個客戶端/項目,事實上,這是CouchDB打算如何使用,使得可擴展性非常簡單。

它很容易使用和混淆所需的底層瀏覽器技術,因瀏覽器的不同而存儲數據。因此,您不必擔心瀏覽器支持哪種技術,例如SQL或本地存儲等。與Firebase類似,它可能更適合您的情況。

您可以從PouchDB在瀏覽器到CouchDB服務器中執行簡單的.sync(),而不必使用傳統的REST。數據查看圖層將成爲PouchDB,然後您可以與服務器單獨管理同步,並跟蹤響應以驗證更新。但是,如果能夠滿足您的要求,使用同步功能會更簡單。

http://pouchdb.com/learn.html

+0

整潔。跨平臺很好。 –

+1

您可以擁有自己的CouchDB服務器或使用cloudant.com,該服務免費提供一定的金額,並提供簡單的API來管理用戶憑證/令牌。不確定這是否適合您的用例,線下的東西很棒。 Firebase你也是BaaS公司的心血來潮:) –

相關問題