JSON传输与二进制传输

问题描述 投票:2回答:2

当涉及到计算机/网络时,所有数据都以0和1的形式传输。如果是这样,我不明白什么使二进制协议不同于文本协议。我知道它何时出现,其他传输可能发生在二进制协议上,因为这些字节不是人类可读的。但是在REST Web服务中,调用二进制传输的速度比JSON快,因为我们只传输文本。如果有任何链接需要深入了解,请参考。谢谢!

rest
2个回答
2
投票

您可以在ProtoBuf文档(https://developers.google.com/protocol-buffers/docs/overview)中找到有关二进制协议优于文本协议(如REST或XML)的优点的详尽解释,以及对二进制格式(https://developers.google.com/protocol-buffers/docs/encoding)的解释。

存在过度简化的风险,二进制格式允许通过牺牲人类可读性来简明地描述数据。 “简洁”是指数量级更小。

这是可能的,因为TCP和UDP不关心有效负载。有效负载仅对应用程序很重要,因此应用程序可以定义特定用途格式来描述数据。因此,如果您以这种方式定义,则有效负载中的单个字节可以具有256个可解释的含义。

通用,人类可读的格式(如REST和XML)需要由通用解析器解释。因此,它们的格式化添加了字节,以区分数据元素,值标签和一般人类可读性。这些额外的字节将是广泛的,并且很容易超过数据本身的大小。

在许多情况下,人类可读性是一种可取的牺牲,例如在简单的客户端/服务器应用程序中。但是对于高性能,大规模扩展的基础架构(例如Google的搜索索引),开销会对性能造成巨大损失,并且二进制格式是必需的。


0
投票

在二进制协议中发送简单值“1”只有一个字符。但在json转移中你需要发送{值:1}或类似的东西。我的意思是因为Json的语法和结构,它保持更大的尺寸。但我觉得;这只适用于原始类型。对于复杂类型,我猜我们没有任何其他选择。

© www.soinside.com 2019 - 2024. All rights reserved.