UNIX编程艺术第五章-文本化:好协议产生好实践

文本流vs二进制流

管道和套接字既能传送文本流,也能传送二进制流,然而究竟是使用文本流还是二进制流,还有一番争议在里面。
通常来说,二进制流的优点是:

  • 存储密度最大化,可以在有限的存储空间上存储更多的数据,也方便传输
  • 保密性好,二进制数据必须经过专门的解码才能被使用

然而与此同时,二进制流的缺点也很明显,由于存储和读取都必须经过一个编码和解码的过程,读写的性能肯定会由此受到影响,对于保密性不强的业务场景,由于二进制数据的不透明性,调试起来可能会非常麻烦。并且随着存储器价格的不断下降,二进制带来的节省空间的优势也逐渐显得不再重要。

Unix 传统推荐使用文本化的配置文件,典型的包括 vim、bash这些程序都是用文本来配置的,只需编辑主目录下的.rc文件就可以完成配置。

另外摘录一下 Unix 下文本文件格式的约定:

摘自第120页

  • 如果可能,以新行符结束的每一行只保存一个记录。
  • 如果可能,每行不超过80个字符。
  • 使用#引入注释。
  • 支持反斜杠约定。
  • 在每行一条记录的格式中,使用冒号或者任何连续的空白作为字段分隔符。
  • 不要过分区分tab和空格。
  • 优先使用十六进制。
  • 对于复杂的记录,使用“节”格式:一个记录若有多行,就是用%%\n或者%\n作为记录分隔符。
  • 在节格式中,支持连续行。
  • 要么包含一个版本号,要么将格式设计为相互独立的自描述字节块。

关于应用协议

目前最常见的应用协议,包括http协议,以及POP3/SMTP/IMAP等邮件通讯协议,基本都是文本化的通讯协议,在端对端的通信过程中,客户机与主机之间的会话都是简洁的,而且易于人阅读的,也正是由于这一点,这些通讯协议才能一直焕发生机。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,848评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,182评论 2 33
  • 广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较: 1. 能存储的数据类型不同 文本...
    时待吾阅读 14,062评论 2 28
  • 第一次看到这张图片的时候瞬间就有一种莫名的感动,让我想起了小时候路边的耍猴人,那时候惊讶于猴子的听话,愤怒于耍猴人...
    齐滇大圣阅读 4,554评论 8 11