2011-04-22 84 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