似乎二进制文件会更紧凑并且可以以标准方式反序列化,为什么要使用文本呢?它似乎效率低下,并且Web框架被迫除了使用字符串之外什么都不做。为什么没有二进制标准?网络会更快,浏览器可以非常快地加载二进制页面。
如果我要启动二进制协议(HBP超级二进制协议),我会定义哪种标准?
答案 0 :(得分:30)
HTTP协议本身可以作为文本读取。这很有用,因为您可以远程访问任何服务器并与之通信。
通过文本,您还可以轻松地通过wireshark等程序观看HTTP通信。然后,您可以轻松诊断问题的根源。
HTTP定义了一种使用resources
的方法。这些资源不需要是文本,也可以是图像或其他任何内容。通过指定Content-Encoding
标头,可以将文本资源作为二进制文件发送。您的资源类型是通过Content-Type
标题指定的。
所以你的问题实际上只适用于HTTP协议本身,而不适用于作为资源的有效载荷。
网络速度更快,浏览器可以非常快速地加载二进制页面。
我不认为这是真的。最慢的部分可能是连接建立和slow TCP start。
以下是HTTP响应如何使用二进制表示形式发送文本资源的示例:
HTTP / 1.1 200 OK
服务器:Apache / 2.0
内容编码:gzip
内容长度:1533 内容类型:text / html;字符集= ISO-8859-1
答案 1 :(得分:13)
基于文本的协议有许多重要的优点:
答案 2 :(得分:11)
是二进制通信标准,其中许多都是http之前的日期。我构建/工作了一个二进制的客户端/服务器数据库协议,它确实工作并且在字节方面是有效的。所以问题是,为什么市场上会出现文本格式的胜利?
我认为可能有很多因素,但我相信这些是最重要的因素:
答案 3 :(得分:8)
好吧,它看起来像是在发布,但是......看来,你在预测未来。 HTTP 2.0将是二进制文件。
答案 4 :(得分:2)
答案 5 :(得分:2)
你可以随时gzip你的文字。
答案 6 :(得分:1)
以前,将二进制文件编码为文本被视为浪费(带宽)资源。您不仅需要编码和解码,而且还必须非常清楚您想要发送的对象的二进制对象的类型,以及可能的结构。 XML有时会让你觉得这是自动出现的错觉。但事实并非如此。
正如Brian所提到的,文本编码是一个很大的优势,你作为一个人可以很容易地生成和调试它们。
一种有趣的非文本格式是ASN.1(抽象语法表示法No.1)。与编码规则(BER - 基本编码规则,DER - 可分辨编码规则等)一起,您最终会得到一个非常非常紧凑的二进制结构编码,它针对网络传输进行了高度优化。这里定义了甚至处理不同的字节性别。 ASN.1在X.-协议族(X.25,X.400,X.500等)中使用和传播。它仍然在LDAP中使用。还定义了用XML编码数据的编码规则(XER-XML编码规则)。请参阅http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One。
答案 7 :(得分:0)
只要我们人类与数据进行交互(即通过UI视图,编辑或只是阅读),它就可以保留为文本。
如果软件系统决定将文本转换为二进制文件以进行紧凑存储,缓存或传输,则可以执行此操作,但它应该在幕后。所以这只是优化问题。由于过早优化是许多问题的根源,因此可以在项目路线图上的非常晚的位置实施。