2012-09-12 179 views
1

我會問一個關於Web服務和客戶端 - 服務器體系結構的半理論問題。如何使用Web服務?

我有一個服務器與數據庫約50表。該服務器甚至包含一個包含與客戶端關聯的用戶信息的表。 每個客戶端都與db中所有數據的子集關聯。

定義的架構意味着每個客戶端(在Android應用上運行)以預定義的頻率調用一定數量的Web服務,填充本地數據庫,創建駐留在服務器sb上的所有表的副本,包含只有與請求客戶有關的信息。

此外,db服務器端的數據可能會更改,因此需要頻繁同步。

考慮到客戶端應用程序可以imaginated作爲網上購物的應用程序,所以應該通過供應商,文章可以瀏覽,做一個訂單,訂單刪除等

所以,當我談論填補了本地數據庫我的意思是商店提供商,文章,即與提出請求的客戶有關的所有信息。

可以用這個信息填寫本地數據庫嗎?

我認爲這是比較合理的調用只有什麼時候需要的信息,而不是存儲在本地數據庫信息的Web服務。 因此,不再需要同步。

讓我感到高興嗎?謝謝。

回答

3

我對Android開發一無所知,但在使用Web服務和SOA方面擁有大量經驗。

根據我的經驗,尤其是在客戶端設備具有有限的存儲和處理能力,所有的業務邏輯和數據邏輯應該在Web服務,並僅用於顯示和調用這些服務的客戶端應用程序。您如何實現這一點,我們無法爲您解答。每個項目都不一樣。

唯一的例外是當你絕對必須有應用程序運行時不連接。在這種情況下,請確保您知道您的具體要求,並且非常願意堅持只在客戶端堅持絕對需要的數據,並且只提供斷開連接時絕對需要的業務邏輯。

(這有助於保持安全簡單以及 - 丟失或被盜的設備是數據泄露最豐富的來源之一,所以在設備上的少潛在的敏感數據就更好了。)

我不知道如果這很有幫助,但我經常會把它扔到那裏。

+0

非常感謝您的回答。 – GVillani82

0

如果您的應用程序只能在線工作,那麼YES。您不必擔心將數據存儲到數據庫中並在以後檢索。如果您的需求需要同時支持在線和離線,那麼您必須使用數據庫。

您可以運行一個服務或異步任務或處理程序調用從Android應用程序的web服務,這樣,你的UI線程不會被阻塞。

如果您的回覆太大,那麼您可能需要考慮中間層,這樣您可以將SOAP響應轉換爲JSON,以便設備更容易處理響應並且網絡傳輸速度更快。

我相信根據您的要求,它足以支持僅在線模式...因爲如果用戶未使用該應用兩天並登錄並顯示可能無關緊要的離線數據,數據可能會有所不同