首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON传输与二进制传输

JSON传输与二进制传输
EN

Stack Overflow用户
提问于 2018-03-04 22:59:08
回答 2查看 6.8K关注 0票数 7

当涉及到计算机/网络时,所有数据都以0和1的形式传输。如果是这样,我不明白二进制协议和文本协议有什么不同。我确实理解当涉及到图像时,可以通过二进制协议进行其他传输,因为这些字节是人类不可读的。但在REST web服务调用中,二进制传输比JSON更快,因为我们只传输文本。如果有需要深入理解的链接,请参考。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-03-04 23:22:20

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

冒着过度简化的风险,二进制格式通过牺牲人类的可读性来实现数据的简明描述。我所说的“简洁”指的是更小的数量级。

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

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

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

票数 13
EN

Stack Overflow用户

发布于 2018-03-04 23:07:21

在二进制协议中发送的简单值"1“只有一个字符。但是在json传输中,你需要发送{ Value:1 }或者类似这样的东西。我的意思是,由于Json的语法和结构,它保持了更大的大小。

在基于文本的协议中发送"1“需要8位,这使得3个字节(在阅读时需要更多)。但是在基于二进制的协议中,u只需要1(1)比特。一位vs 24位。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49096721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档