当涉及到计算机/网络时,所有数据都以0和1的形式传输。如果是这样,我不明白什么使二进制协议不同于文本协议。我知道它何时出现,其他传输可能发生在二进制协议上,因为这些字节不是人类可读的。但是在REST Web服务中,调用二进制传输的速度比JSON快,因为我们只传输文本。如果有任何链接需要深入了解,请参考。谢谢!
答案 0 :(得分:2)
您可以在ProtoBuf文档(https://developers.google.com/protocol-buffers/docs/overview)中找到有关二进制协议优于文本协议(例如REST或XML)的优点的详尽解释及其二进制格式的解释({{3} })。
存在过度简化的风险,二进制格式允许通过牺牲人类可读性来简明地描述数据。 “简洁”是指数量级更小。
这是可能的,因为TCP和UDP不关心有效负载。有效负载仅对应用程序很重要,因此应用程序可以定义特定用途格式来描述数据。因此,如果以这种方式定义,有效负载中的单个字节可以具有256个可解释的含义。
通用,人类可读的格式(如REST和XML)需要由通用解析器解释。因此,它们的格式化添加了字节,以区分数据元素,值标签和一般人类可读性。这些额外的字节将是广泛的,并且很容易超过数据本身的大小。
在许多情况下,人类可读性是一种可取的牺牲,例如简单的客户端/服务器应用程序。但是对于高性能,大规模扩展的基础架构(例如Google的搜索索引),开销会对性能造成巨大损失,并且二进制格式是必要的。
答案 1 :(得分:0)
在二进制协议中发送" 1"的简单值只有一个角色。但在json转移中你需要发送{值:1}或类似的东西。 我的意思是因为Json的语法和结构,它保持更大的尺寸。但我觉得;这只适用于原始类型。对于复杂类型,我猜没有任何其他选择。