3.280. 向前兼容数据格式设计
本文我们来设计一个模式。假定我们要设计一个文件格式,这个格式可以后向兼容,以便本版本我们可以读到需要的信息,但新的软件版本仍可以利用这些信息,还可以得到新的信息,同时,老的软件还使用新的格式,仍可以访问旧的数据。
我们看看这种模式的核心特征是什么。
我们先定义一下模型,假定我们现在设计的软件是S,文件格式定义为f,我们要求Sv1兼容fv1, v2, v3,……Sv2也兼容fv1, fv2, fv3……。
Sv1需要数据集D1(D1是一组Name-value的组合,其中包括数据d1和o1,前者是必须的,后者是可选的),Sv2需要数据集D2,D1/D2的交集不一定为空。
Sv1需要兼容fv2,所以D2中必须包含d1,其他不认识的忽略即可。Sv2要兼容fv1,最好直接认识D1的所有数据(或者必须的数字)。
综合起来,实现这个模式的原则如下:
Svi可以忽略不认识的Name
Svi认识所有的D(1)到Di的所有Name,但可以有限度裁剪
Dvi包含所有Sv1-i必须的格式
承载格式最好不变,或者需要做其他技巧设计
备注
从架构设计的角度说,原则1和4是地一个版本就必须完成设计的设计,其他是后续必须坚持的设计。
这是一个架构设计是当下设计之外的独立设计的一个例子。