【问题标题】:Which format for transmitting data over TCP?通过 TCP 传输数据的格式是什么?
【发布时间】:2010-11-25 17:12:42
【问题描述】:

我想要一些关于使用哪种格式通过 TCP 传输数据的建议。目前,我设计了一个带有分隔字符串的简单文本协议。我在想我应该使用已经存在的东西,例如 XML、JSON 或 XMPP?

人们使用哪些数据格式通过 TCP 进行传输?

我想优化速度和吞吐量,但宁愿采用现有标准而不是使用我自己的标准。

【问题讨论】:

  • 你传输的是什么类型的数据?
  • 它基本上是文本 - 主要是地图,例如名称->Nosrama,Country->US,ID->2343...

标签: xml json tcp xmpp


【解决方案1】:

在大多数情况下,人们只需声明一条记录,其布局可在两端重现并使用它。只有当你有更复杂的需求时,你才需要做比这更花哨的事情。

对于不同长度的字符串,我可能只是将它们实现为一系列长度,然后是长度字节的数据。在 Cish 语言中,您可能可以通过利用空终止符来避免长度。没有比这更复杂的了。

【讨论】:

    【解决方案2】:

    取决于数据类型和谁在使用您的数据。

    如果您正在编写自己的客户端/服务器对,那么可以说最好的格式是某种二进制序列化。它结构紧凑,可通过电线轻松传输,并且可以快速重构。

    如果您使用多种语言为许多消费者编写东西……那么我会更担心 XML 或 JSON(取决于数据的大小和复杂性)。

    XML 更适合处理大量复杂的数据。

    JSON 更适合更小、更紧凑的数据。

    【讨论】:

    • 能否详细说明XML->大数据、JSON小数据语句?
    • 当您开始尝试通过 JSON 传输大量数据时,很快就会出现问题。试图查看大量 JSON 和调试问题是一场噩梦。当事情开始变得更大和更复杂时,XML 更加结构化并且更容易处理。
    【解决方案3】:

    您可能想查看Google Protocol BuffersApache Thrift

    【讨论】:

      【解决方案4】:

      您的数据的键/值外观表明 JSON 可能更容易使用。

      优化速度和吞吐量可能在您的应用程序之外更好地处理,OSI model 中的第 3 层和第 4 层我会冒险。在这些层中投入的一个优化单位可能会比在数据结构和编码中投入的一个单位的努力更能获得最优性。

      【讨论】:

      • 谢谢 - 您能否详细说明您对 OSI 模型的看法?我应该特别注意什么?
      【解决方案5】:

      对于您的数据类型来说,XML 听起来是个不错的选择 - 已经有很多 XML 库(或者您的语言甚至可能内置了 XML 解析)。

      基于文本还可以更轻松地手动调试,因此这是远离在线二进制编码的原因之一。

      【讨论】:

        猜你喜欢
        • 2017-04-27
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2015-09-18
        • 2012-01-27
        • 2017-05-31
        相关资源
        最近更新 更多