如果您还没有注意到我真的很喜欢纯文本,那么我想我会发现一些在不同软件系统中使用的纯文本协议。 Redis协议规范通过描述其自己的协议来最好地说明了这一点,但这适用于我将介绍的所有纯文本协议。
下次构建软件系统并必须交换数据时,首先使用简单的纯文本协议,然后增加复杂性以供日后优化。所有这些协议都可以作为纯文本数据通过TCP或UDP发送。它们易于检查,体积小且直接。
从列表中最简单的一个开始是Graphite纯文本协议,该协议用于通过Carbon将度量标准传递到Graphite。
列表中下一个最简单的是Influx Line Protocol。尽管这与Graphite相似,但确实为其规范添加了一些其他元数据。
这是事情变得更复杂的地方,但是上面的三个相同的特征仍然适用。为了简洁起见,为了简化协议,我们看到该协议是一行文本,并且初始命令规定了在其后允许使用哪些自变量数据类型。
该特定协议还有更多内容可以用官方规范中概述的文本格式表示字符串,数字,数组等。
是的,HTTP只是纯文本。由于协议本身具有大量的元数据排列,因此让我们来看一些HTTP请求和响应的示例。
HTTP / 1.1 200 OKAccept-Ranges:bytesContent-Length:6262Content-Type:text / html; charset = utf-8日期:2020年9月2日,星期三01:41:35 GMTLast修改:2020年9月2日,星期三01:37:33 GMT
当您访问http://blainsmith.com/articles/plain-text-protocols/时,浏览器将构造请求,并在从服务器返回响应时解析响应。允许的标头还有很多,但是该协议的基础非常简单。
全世界都在使用这些类型的纯文本协议,因此,如果您发现自己正在构建软件系统,并且有可用的协议,请不要重新发明轮子。如果现有的纯文本协议可以适应您的目的,那么请这样做,因为可能已经有一个库可以用于对该协议进行序列化和反序列化,因此您不必编写自己的协议。如果这些协议中的任何一个都不满足您的需要,并且您需要编写自己的协议,那么请保持简单。如果每个人的Web浏览器都使用了已经使用了数十年的HTTP,那么除非您可以证明没有其他必要,否则没有理由创建复杂的协议。