2011-05-04 17 views
6

我想分割一個Android應用程序,以部分在手機上執行它,部分在服務器上(服務器可能有一個模擬器在其中運行)。我讀過RMI不支持android。我正在考慮這樣做,就像客戶機 - 服務器體系結構一樣,模擬器在eclipse中運行。 那麼實現這個項目是否可行呢?任何想法都非常感激。在Android中的分佈式應用程序

謝謝。

回答

0

Android設備與存儲數據並執行業務邏輯的服務器通信是很正常的。移動設備通常通過網絡服務與服務器通話,最流行的似乎是REST + JSON。實現方式:

  1. 服務器。代碼需要與數據庫交談,執行業務邏輯並通過REST + JSON將數據傳遞給設備。實施取決於你對語言/平臺的瞭解。

  2. Android調用REST服務和進程返回的JSON數據。使用HttpClient使REST調用和GSON解析返回的JSON數據。

+0

在服務器上執行的方法可能每次都不一樣(根據在電話端做出的決定是否卸載,以及準確卸載什麼)。這是否可行?這會爲服務器和電話之間的可能通信方式(不是普通的靜態客戶端 - 服務器體系結構)創建許多場景,所以我不知道我是否可以做到這一點。有什麼建議?非常感謝 – myself 2011-05-05 22:38:44

+0

web服務類似於普通的方法調用:你選擇一個方法來調用,傳遞一些參數(對象),然後得到回覆(一個對象) – 2011-05-05 22:43:41

+0

REST服務器上的一個簡單例子(這就是java服務器代碼對於REST外觀):http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html_single/index.html#Using_Path – 2011-05-05 22:45:40

0

使用標準服務器卸載繁重的工作將會更加成功。我對Android模擬器的使用經驗是,它處理任務的速度是任務執行速度的兩倍,比任務在手機上的速度慢兩倍,這表明通過將工作卸載到模擬器上,您實際上沒有提高生產力。

如果您使用標準的Java服務器來完成這項工作,您會發現它提供了更多的收益。

+0

是的我猜會使用普通的java服務器。我的項目面臨的挑戰是我試圖決定(基於可用資源,例如設備類型和網絡帶寬等)是否在本地或在服務器上執行方法(因爲如果您決定卸載所有時間,這可能需要更多的Android手機功耗)。爲此,我應該瞭解應用程序的依賴關係,並對其進行分區。你是否建議我在類或函數級別進行分區? 謝謝你的幫助。 – myself 2011-05-05 22:33:00

+1

是的,在Eclipse中創建一個新的Java項目,並將所有昂貴的方法放在那裏。然後,您可以在您的Android項目和新的服務器項目中包含該項目。這將允許您保持一組集中的類和方法來保持Android和Server代碼的同步。 – Haphazard 2011-05-05 22:56:19

+0

這個方法看起來很有趣,我會試試看。非常感謝 – myself 2011-05-06 11:30:06