我想了解一下使用哪种格式通过TCP传输数据的建议。目前,我已经设计了一个带有分隔字符串的简单文本协议。我想我应该使用已经存在的东西,比如XML,JSON或XMPP?
人们使用什么数据格式通过TCP进行传输?
我想优化速度和吞吐量,但宁愿采用现有标准而不是使用我自己的标准。
答案 0 :(得分:4)
您可能需要查看Google Protocol Buffers或Apache Thrift。
答案 1 :(得分:0)
在大多数情况下,人们只是声明一个记录,其布局可以在两端重现并使用它。只有当你有更复杂的需求时,你才能做更加花哨的事情。
对于不同长度的字符串,我可能只是将它们实现为一系列长度,然后是长度字节的数据。在Cish语言中,你可以通过利用null终止符来获得无限长的东西。没有比这更复杂的东西了。
答案 2 :(得分:0)
取决于数据类型以及谁在使用您的数据。
如果您正在编写自己的客户端/服务器对,那么可以说最好的格式是某种二进制序列化。它结构紧凑,可以通过电线轻松传输,并且可以快速重建。
如果您正在为使用各种语言的许多消费者撰写内容......那么我会更担心XML或JSON(取决于数据的大小和复杂性)。
XML更适合大型复杂数据。
JSON适用于更小,更紧凑的数据。
答案 3 :(得分:0)
您的数据的键/值外观表明JSON可能更容易使用。
优化速度和吞吐量可能在您的应用程序之外更好地处理,OSI model中的第3层和第4层我会有危险。投入这些层的一个优化工作单元可能会比您沉浸在数据结构和编码中的一个单位努力提供更多优化。
答案 4 :(得分:0)
XML对于您的数据类型来说听起来是个不错的选择 - 已经存在大量的XML库(或者您的语言甚至可能内置了XML解析)。
基于文本也可以更容易手动调试,因此这是避免线路上二进制编码的一个原因。