在上一篇《主程的晋升攻略(4):TCP、消息分包和协议设计》中谈了协议设计的一些话题,这里补充聊聊HTTP协议和二进制协议的对比。
HTTP协议是一种文本协议,也是一种Name-Based协议,就从这两方面来说。
文本协议 vs 二进制协议
文本协议的特点:
便于人
易于阅读、理解、调试、构造
解析复杂、冗余多
需要考虑字符转义
二进制协议的特点:
便于机器
Name-Based vs Position-Based
Name-Based协议 的特点:
协议字段都用Name标识
协议字段与位置无关
协议字段可缺省
新增协议字段比较方便
解析复杂
需要考虑字符转义
Position-Based协议的特点:
每个协议字段都有特定的位置
新增协议字段需要做好协议版本管理(protobuf这类就挺好)
解析更高效