2011-04-22 124 views
3

我正在研究將從Android應用程序訪問的Web服務。在對最好的技術進行了一些研究後,我對這些選項感到困惑和迷惑。Android和AppEngine Web服務:Json ... RPC,REST ...協議緩衝區?

很明顯,在Android端,我希望它儘可能輕量級。我也希望分享共同的代碼,因爲兩者都是java,儘管這不重要。我主要關心的是讓它變得高效,然後再簡單又優雅的代碼。

我已經試過在Android端gson,它很好地工作。但後來我閱讀了有關協議緩衝區,這看起來更有效率,我不確定這是否有重大差異。另外我不確定是否要使用RPC或REST。

回答

5

在效率方面,Protocol Buffers可能會比任何JSON實現更高效,認爲不一定像您想象的那樣多。 GSON並不是特別快,但Jackson庫幾乎可以與大多數二進制序列化器競爭(在大多數情況下,Jackson的速度比GSON快2-4倍,而UTF-8的速度快10-20倍,因爲它有特殊的UTF-8編碼)。

但由於編程模型的原因,我仍然將Protocol Buffers放在任何JSON庫上。對於大多數JSON庫,您必須手動檢查消息的結構。使用協議緩衝區,您可以聲明性地指定消息結構,並且庫將負責爲您進行結構驗證(儘管仍然會有需要手動驗證的事情)。

其他類似Protocol Buffers的庫:Apache Avro,Apache Thrift。

Protostuff庫使用Protocol Buffers數據模型(因此您可以免費獲得結構驗證),但支持序列化爲JSON和YAML以及其他格式。如果你想讓你的服務被Javascript代碼使用,那麼JSON通常是最容易處理的事情,這會很有用。

+0

感謝這個信息,這是我懷疑的,但我發現谷歌有關使用協議緩衝區的一些東西。如果在使用協議緩衝區時有更多的例子,那將會很好。 – Otto 2011-04-28 16:41:39

+0

Protostuff庫看起來很棒。我不知道,好的提示! – Otto 2011-04-28 16:44:42