java - 客户端-服务器通信的可扩展性; XML v 序列化二进制文件

标签 java xml serialization jakarta-ee client-server

过去,我工作过的系统通常使用 XML 在客户端和服务器之间进行通信并传输结果集等。然而,我当前的项目只是将对象列表序列化为二进制文件并将其发送到电线。

现在,我们的“传输对象”(由于缺乏更好的描述)可能会由于一堆新字段而开始增大。再加上理论上我们可以发送最多 100,000 个对象的列表,这让我开始想知道我们当前方法与使用 XML 的相对性能。

当我说“性能”时,我考虑的是:

  • 通过网络发送的对象的大小以及所用的时间
  • 组装准备传输的对象所需的时间
  • 在 UI 中显示之前在另一端解析/反序列化所花费的时间

我的直觉是 XML 可能会变得非常冗长,因此可能需要某种压缩...但我不太熟悉它如何针对序列化二进制文件进行扩展。对于哪种方法更具可扩展性是否存在普遍共识,或者我们是否正在进入“适合目的”的领域? :)

感谢您的建议。

干杯, 戴夫。

最佳答案

我认为,一般来说,人们一致认为 XML 序列化相当冗长而且速度不是很快。

关于你的二进制序列化,由于我们不知道实现,所以很难判断。您当然可以自己进行一些性能比较。

此外,查看二进制协议(protocol)的公开实现并了解它们如何针对 XML 执行可能会很有趣。 Protocol buffersThrift我想到了。

另请检查这些: Performance comparison of Thrift, Protocol Buffers, JSON, EJB, other?

https://github.com/eishay/jvm-serializers/wiki/

关于java - 客户端-服务器通信的可扩展性; XML v 序列化二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5975454/

相关文章:

jquery - CDATA是什么意思

django - session 作为 Django REST 中的持久存储?

Java:WeakReference.get() 在 System.gc() 之后返回不同

java - 在 Java 中使用复选框启用/禁用 JComponent 存在困难

java - 将用户输入存储在字符串数组中

android - 在我的手机上运行应用程序时不显示垂直线 View

python - 尝试使用 Beautiful Soup 或 ElementTree 从链接的迭代列表中抓取信息

c# - 如何声明一个类型正在实现 ProtoBuf 中的接口(interface)和基类?

Delphi:将对象传输到远程计算机

java - minStack 子类使用一个对象作为最小堆栈和常规堆栈