现有的应用开发模式崇尚快速迭代,这就造成客户端数据格式和服务器端数据格式不匹配的情况经常发生。新旧版本的客户端和数据格式经常同时存在于同一个系统中。这就要求系统至少具备以下两种特性:
- 向后兼容
新版本的代码读取旧版本的数据格式; - 向前兼容
旧版本的代码读取新版本的数据格式;
向后兼容往往很容易达到:我们了解旧版本的数据格式,最多是无法展示新的应用特性。向前兼容则一般要求旧代码忽略新添加的数据内容。
数据格式
作为应用开发人员,经常要处理至少两种数据表现形式:
- 代码中,数据经常以对象的形式组织(或者以结构体(比如说Golang),列表,哈希表等等)。
- 当需要将数据存储或者传输时,往往需要转成另一种数据格式以提高传输效率。
由上述第一种数据格式向第二种数据格式的转化一般称作是编码(或者叫序列化),由第二种数据格式向第一种数据格式的转化则称作是解码(或者叫反序列化)。