我正在开发一项可从 Android 应用程序访问的网络服务。在对什么是最好的技术做了一些研究之后,我对这些选择感到有些困惑和茫然。
显然,在 Android 端,我希望它尽可能轻巧。我也更愿意共享通用代码,因为它们都是 java,尽管这不太重要。我最关心的是让它高效,然后是简单而优雅的代码。
我在安卓端试过gson,效果不错。但后来我读到了 Protocol Buffer ,这似乎更有效率,我不确定这是否有显着差异。我也不确定是选择 RPC 还是 REST。
最佳答案
在效率方面,Protocol Buffers 可能比任何 JSON 实现更高效,但不一定像您想象的那样高效。 GSON 不是特别快,但 Jackson 库几乎可以与大多数二进制序列化程序竞争(Jackson 在大多数情况下比 GSON 快 2-4 倍,在 UTF-8 上快 10-20 倍,因为它有针对 UTF-8 的特殊代码)。
但由于编程模型的原因,我仍然会选择 Protocol Buffers 而不是任何 JSON 库。对于大多数 JSON 库,您必须手动检查消息的结构。使用 Protocol Buffers,您可以声明性地指定消息结构,库将为您处理结构验证(尽管仍然有您需要手动验证的内容)。
Protocol Buffer 等其他库:Apache Avro、Apache Thrift。
Protostuff 库使用 Protocol Buffers 数据模型(因此您可以免费获得结构验证),但除其他格式外还支持序列化为 JSON 和 YAML。如果您希望您的服务被 Javascript 代码使用,这会很有用,因为 JSON 通常是最容易处理的。
关于java - Android 和 AppEngine 网络服务 : Json. .. RPC、REST... Protocol Buffer ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757697/