gson vs协议缓冲区
答
json(通过gson库)和protobuf都可以在platorms之间移植;但
- protobuf的是较小的(带宽)和更便宜的(CPU)读/写
- JSON是人类可读/可编辑的(protobuf的是二进制;硬而不库支持解析)
- protobuf的是微不足道的合并片段 - 只是连接
- json很容易传递给网页客户端
- protobuf的主要java版本需要合同定义(.proto)和代码生成; GSON似乎允许任意POJO使用(有一些关于这些对象的工作protobuf的实现,而不是Java的据我所知)
如果性能是关键:protubuf
对于网页(JavaScript)的使用,或者人类可读:json(可能通过gson)
答
如果你想要效率和跨平台,你应该在包含必要信息和应用程序的应用程序之间发送原始消息。
通过Java自己的机制,gson,protobufs或其他,创建数据不仅包含您希望发送的信息,还包含有关用于表示数据结构的逻辑结构/层次结构的信息你的应用程序中的数据
这使得这些类和数据映射的双重用途,一个用于在应用程序内部表示数据,另外两个用于传输到另一个应用程序。这两个角色可能会相互冲突,开发人员有责任记住他随时将使用的类,集合和数据布局也将被序列化。
如果您正在寻找二进制序列化,Apache avro是另一种选择。合同定义(如.proto)是可选的,并带有内置的RPC支持 – 2011-02-13 18:26:07