【HTTP】为何HTTP使用文本描述结构和协议的趋势|HTTP协议问什么要基于文本而不是基于二进制节约带宽
目录
1、不通用,其他语言难解析
因为这是不通用的,其他语言是很难解析这种流,看看json为什么这么就行就知道了。如果想节省带宽,可以进行压缩,文本的压缩率是很高的。
(问: 压缩数据对性能的消耗和压缩数据所需的时间如何 会不会因为需要额外的时间而导致实际的传输速率下降?
akari10032:压缩算法的时间跟网络io比起来可以忽略不计
)
2、历史遗留问题
要用明文传输二进制,两个原因,最早之初有些网络只支持7位字节,和大小端问题。
(以前http出现时,很多情况都是字符界面呢,连设计器也木有。最初的网页很多都是在unix下用vi之类的东西敲的。)
3、便于直接观察,调试,维护
“为了便于直接观察,调试,维护” 只有这个能说的通了,可能是 为了便于维护和快速迭代牺牲一定的性能吧
4、 sunny7862632:兼容性差太远了,用文本最大好处就是协议加了新的字段,不管旧的客户端或者新的客户端都可以正常解析,只是旧的客户端新的字段无用罢了。用二进制这种兼容性就很难保证了,多次迭代之后,市场上可能并存着几十个不同版本的协议客户端。
造轮子:用二进制传输,解析不方便,不同的语言、程序解析方式不一样,没法通信,成本太大。
4、文本可压缩
大部分的场景io密集型应用环境,cpu资源相比内存和带宽资源,会富裕
2. 文本是可读性更好的字节流
3. 自己编码的应用协议,不一定比文本格式更小。但是可读性会更差。
4. 文本压缩率搞,可以压缩掉1/3, 在大部分的场景io密集型应用环境,cpu资源相比内存和带宽资源,会富裕得多,压缩解压没压力。倒是可读性,可维护性,可调试性比较重要。
5、protocolbuff或许是不错的代替项
原帖地址:https://bbs.csdn.net/topics/396351976 《为什么Http协议要用文本做协议,用二进制不更节约带宽吗? 》
讨论:https://bbs.csdn.net/topics/396351976
为何HTTP使用文本描述结构?
前面的人说的得不错,我概括一下几个观点:
1、文本协议可读性好,好调试
2、兼容性差太远了,用文本最大好处就是协议加了新的字段,不管旧的客户端或者新的客户端都可以正常解析,只是旧的客户端新的字段无用罢了。用二进制这种兼容性就很难保证了,多次迭代之后,市场上可能并存着几十个不同版本的协议客户端。
3、历史包袱。
4、 自己编码的应用协议,不一定比文本格式更小。但是可读性会更差。
5、 文本压缩率搞,可以压缩掉1/3, 大部分场景压缩的资源消耗在IO面前可以忽略。
在大部分的场景io密集型应用环境,cpu资源相比内存和带宽资源,会富裕得多,压缩解压没压力。倒是可读性,可维护性,可调试性比较重要。
趋势:
现在主流都在使用兼容性好的协议,我们做蓝牙传输的,以前都是用二进制,现在全改protobuf协议了。实际使用场景兼容性非常重要,时间长了协议肯定会被市场上大量不同时期版本的终端,系统必须保证兼容。