【问题标题】:Java serialization vs JSONJava 序列化与 JSON
【发布时间】:2014-08-19 20:08:11
【问题描述】:

我必须使用 UDP 数据报通过网络传输 Java 中的对象。就开销、消耗的字节数、速度而言,哪种格式会更好?我尝试过使用序列化并了解 JSON。哪个更好?

【问题讨论】:

  • 许多比 json 更快的选项 - protobuf 和 kryo 等等
  • 这在很大程度上取决于相关数据的具体特征——消息大小、每个数据报的消息数量、吞吐量、丢失可接受性......
  • 这是一个非常模糊的问题。在这种情况下,什么更好或“最好”在很大程度上取决于您要传输的数据。您需要灵活的数据格式,还是总是发送相同类型的数据?空间比速度更重要吗?此外,UDP 具有最大数据报大小,因此您必须确保不超过该大小,或者将其分解为多个 UDP 数据包。当然,一旦你这样做了,你就得担心 UDP 丢包等问题。话虽如此,我同意 radai —— protobuf 还不错,背后有很多支持。
  • 我已经为数据包格式的 .所以我只需要将数据放在数据包对象中,然后在一个数据报中发送对象。
  • 是的,我担心数据报的大小。将对象转换为 JSON 会比序列化字节流的大小更小吗?

标签: java json networking serialization network-programming


【解决方案1】:

Java 序列化 - 仅应考虑用于 Java 到 Java 的通信。一个重要的注意事项是类定义应该在发送端和接收端,通过传递整个对象通常不会有太多好处。我不排除 RMI 作为通信协议,它确实简化了开发。然而,由此产生的应用程序组件将很难耦合,这将使其非常难以替换。

JSON - JSON 语法基本上是 Javascript,因此任何带有 JS 引擎的组件都可以很好地处理它的解析 - 即使是复杂的数据结构也可以有效地转换为“活”对象。 JSON 解析器几乎适用于任何语言,即使不使用 JS 引擎也很容易使用(以 google GSon 为例,它能够轻松地将 JSON 转换为相应的对象),这使得它是跨语言通信的良好候选者.

【讨论】:

猜你喜欢
  • 2012-11-23
  • 2023-03-04
  • 1970-01-01
  • 2012-09-23
  • 2010-11-13
  • 1970-01-01
  • 2018-07-14
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多