2013-10-29 69 views
3

我已經使用GWT RPC機制爲客戶端 - 服務器通信構建了一個GWT + GAE應用程序。現在,我想集成一些Android應用程序中提供的服務。 但我發現這個實現不再被推薦,並且已經從GPE 3.0(google eclipse插件)中刪除,所以現在使用了雲端點(RPC tooling not available for appengine connected android project for GPE 3.2?)。Android,GWT和App引擎:雲端點vs GWT RPC?

我想知道爲什麼採用這種方法(而另一個突然移除),因爲實現客戶端 - 服務器通信接口所需的代碼在使用雲端點時非常複雜(至少對我而言),而不是GWT的RPC,在這裏很容易添加新的類,這些代碼很容易擴展。

爲什麼Cloud Endpoint比GWT RPC更好?這兩種方法的優點和缺點是什麼?

回答

1

我的個人意見:他們都吸了,因爲他們是專有和不透明的。 Google是一個很棒的工程公司,但這兩個都是IMO都是一個錯誤。我想他們希望將開發者與他們的專有API綁定 - 這是20世紀90年代以來的MS。

我使用REST + JSON。我個人的最愛是RESTEasy + Jackson,它在GAE上完美運行。

優點:

  1. 靈活串行化:傑克遜可以使類和JSON(多至一,嵌入式,getter/setter方法,等等),你也可以編寫自定義序列之間的高級映射。完全控制堆棧:你可以擁有多個配置不同的端點(例如public/private),還可以攔截和擴充請求,自定義異常處理(拋出自定義異常 - > RESTEasy創建自定義JSON作爲響應)
  2. 攔截器允許使用標準或自定義的身份驗證方案
  3. 完全開放源代碼,並使用標準的協議和序列化格式:便於檢查什麼是瀏覽器怎麼回事
  4. 便攜式:適用所有基於servlet的服務器和客戶機上(瀏覽器,Android,iPhone等)。

當然,學習曲線有點高,但至少你會控制住。

+0

非常感謝您的回覆,彼得。我的主要問題是我無法對服務器端代碼進行實質性更改。我需要使用的服務已經使用RPC實現),因爲我在客戶端使用GWT)。我認爲谷歌不會輕易「放棄」GWT ...... –

+1

GWT是開源的,不再被Google「擁有」:http://www.gwtproject.org/steering.html不過,我仍然相信GWT- RPC不靈活。 –

+1

解決您的解決方案的一種方法是創建一個「業務」層 - 基本上是一組服務類,其方法返回/採取POJO。然後,任何通信層(GWT-RPC,Cloud Endpoints,REST/JSON)都可以調用業務層,然後根據需要轉換POJO。這樣你的核心代碼就可以獨立於技術,並且你可以輕鬆地引入新的通信層。 –

4

與GWT/RPC相比,雲端點(以及其他基於REST/JSON的解決方案)的優勢在於它們是語言不可知的。就雲端點而言,Google工具直接支持Android,Web和iOS,但由於它們生成接口描述,因此它們也可以支持任何可以使用該描述的技術。

終端也使OAUTH身份驗證相對容易,但我不能評論如何比較GWT。