Tcp 二进制协议死了吗?

Tcp 二进制协议死了吗?,tcp,binary,client,protocols,Tcp,Binary,Client,Protocols,由于网速非常慢(拨号),过去似乎有更多的二进制协议。我看到所有东西都被HTTP和SOAP/REST/XML所取代 为什么会这样 二进制协议真的死了吗,还是不那么流行?为什么他们会死或不受欢迎 你就是无法打败二进制文件 二进制协议总是比文本协议更节省空间。即使互联网速度急剧增加,我们希望传递的信息的数量和复杂性也在急剧增加 您引用的文本协议在标准化、灵活性和易用性方面都非常出色。然而,总会有一些应用程序的二进制传输效率会超过这些因素 大量信息本质上是二进制的,可能永远不会被文本协议所取代。视频流就

由于网速非常慢(拨号),过去似乎有更多的二进制协议。我看到所有东西都被HTTP和SOAP/REST/XML所取代

为什么会这样


二进制协议真的死了吗,还是不那么流行?为什么他们会死或不受欢迎

你就是无法打败二进制文件

二进制协议总是比文本协议更节省空间。即使互联网速度急剧增加,我们希望传递的信息的数量和复杂性也在急剧增加

您引用的文本协议在标准化、灵活性和易用性方面都非常出色。然而,总会有一些应用程序的二进制传输效率会超过这些因素

大量信息本质上是二进制的,可能永远不会被文本协议所取代。视频流就是一个明显的例子

即使压缩基于文本的协议(例如,使用GZip),通用压缩算法也永远不会像围绕特定数据流设计的二进制协议那样有效

但有时你不必

您看到更多基于文本的协议的原因是,与各种应用程序的数据大小相比,传输速度和数据存储容量确实增长得很快。我们人类发现使用文本协议更容易,所以我们围绕文本表示设计了无处不在的XML协议。当然,如果我们真的必须保存每个字节,并构建用于可视化和处理数据的通用工具,我们可以将XML创建为二进制协议

再说一次,有时候你真的会这样做


许多开发人员习惯于从多GB、多核计算机的角度思考问题。现在连你的普通手机都让我的第一台IBM PC-XT相形见绌。尽管如此,仍有一些平台,如嵌入式设备,对处理能力和内存有相当严格的限制。在处理此类设备时,二进制可能是必要的。

在某些应用中,如极低带宽通信中,始终需要二进制协议。但是基于文本的协议有巨大的优势。例如,我可以使用Firebug轻松查看应用程序发出的每个HTTP调用所发送和接收的内容。祝您在使用二进制协议时好运:)


文本协议的另一个优点是,尽管它们比二进制协议节省空间,但文本数据压缩效果非常好,因此可以自动压缩数据,以充分利用这两个方面。例如,请参阅。

二进制协议不是死的。在许多情况下,发送二进制数据要有效得多

WCF支持使用TCP进行二进制编码。

只要需要效率,二进制协议将继续有效。大多数情况下,他们将生活在较低的层次,在那里硬件实现比软件实现更常见。速度不是唯一的因素——实现的简单性也很重要。让芯片处理二进制数据消息比解析文本消息容易得多

取决于应用程序。。。
我认为在实时环境(firewire、usb、现场总线…)中,始终需要二进制协议。Facebook、Last.fm和Evernote使用。到目前为止,答案都集中在空间和时间效率上。没有人提到我认为如此多基于文本的协议的首要原因是什么:信息共享。这是互联网的全部意义所在,使用基于文本的、人类可读的、机器也能轻松处理的协议要容易得多。通过文本数据交换,您摆脱了依赖于语言、特定于应用程序、偏向于平台的编程

链接您想要使用的任何XML/JSON/*-解析库,找出信息的结构,并剪出您感兴趣的数据片段。

与编程语言并行可能非常相关。 虽然高级语言是大多数编程工作的首选工具,并且由于CPU速度和存储容量的提高(部分)成为可能,但它们并没有消除对汇编语言的需求

以类似的方式,非二进制协议引入了更多的抽象性、更多的可扩展性,因此是应用程序级通信的首选工具。他们也从带宽和存储容量的增加中受益。然而,在较低的层次上,如此浪费仍然是不切实际的


此外,与编程语言不同的是,编程语言强烈鼓励“承受性能冲击”,以换取更高的简单性、开发速度等,分层通信的能力使得较低层的复杂性和“二进制性”对应用程序级相当透明。例如,只要接收到的SOAP消息是正常的,应用程序就不需要知道这些消息是否经过有效压缩以通过有线传输

我在野外见过一些用于互联网应用的二进制协议

  • 这是用于内部通信,但也对,例如谷歌浏览器书签同步
  • 用于与Flash和Flex应用程序通信。Flash和Flex都具有通过REST或SOAP进行通信的能力,但是一些人证明,AMF格式对于Flex更有效
二进制协议死了吗

两个答案:

  • 但愿如此
  • 没有

  • 至少二进制协议比XML好,XML提供了二进制协议的所有可读性,同时也提供了比精心设计的ASCII协议效率更低的所有效率。

    我很少提到这一点,但二进制协议,尤其是块协议可以大大简化协议的复杂性