在上一篇《主程序员的练成:TCP、消息分包和协议设计》中谈了协议设计的一些话题,这里补充聊聊HTTP协议和二进制协议的对比。
HTTP协议是一种文本协议,也是一种Name-Based协议,就从这两方面来说。
文本协议 vs 二进制协议
文本协议的特点:
便于人
易于阅读、理解、调试、构造
解析复杂、冗余多
需要考虑字符转义
二进制协议的特点:
便于机器
Name-Based vs Position-Based
Name-Based协议的特点:
协议字段都用Name标识
协议字段与位置无关
协议字段可缺省
新增协议字段比较方便
解析复杂
需要考虑字符转义
Position-Based协议的特点:
每个协议字段都有特定的位置
新增协议字段需要做好协议版本管理(protobuf这类就挺好)
解析更高效
-------- 分割线 ---------
推荐wecode程序员云笔记──为程序员而生的开源、简洁高效的云笔记软件,使用有道云做云端存储。
★ 【语法高亮】目前支持 C/C++、C#、Pascal、Java、VB.Net、XML、HTML、Python、SQL等多种方。
★ 【云端存储】除了本地笔记本外,还增加了云存储功能,目前使用有道云笔记做为云存储。
★ 【文档加密】提供了文档加密功能,确保敏感文档的安全性。
★ 【多个本地笔记本】支持多个本地笔记本,你能够新建本地笔记本、打开、压缩和备份本地笔记本。
★ 【文章附件】能够为每个文章添加多个附件,并能够在临时目录中打开附件、导出附件。有道云的附件也存储在云端。
时间: 2024-10-04 20:44:42