问题描述
在3Dflow中,gxsolver和gxcap在读写binary的.gcap文件的时候,会统一使用同一binary接口。由于当前的gcap的binary接口严格按照顺序进行读写,导致对gcap中字段的任何删减,都会造成solver对.gcap的解析失败,程序崩溃。
解决方案
使用结构化的数据传输协议,以key-value形式读写.gcap数据,消除数据之间的耦合性,取代原来顺序读写的形式,同时在写时进行序列化(或加密),之后转换成字节序列,读时进行反序列化(或解密)。
方案比较
主流的结构化的数据传输协议有:
方案简述
以key-value的形式,对gcap对象赋值。做key值判断,来满足前后向兼容。
库的选择
库的选择上主要考虑 接口的易用程度、引入开发的成本、是否可商用和性能。
这里我们选择了c++下非常主流的nlohmann/json。
数据加密
可使用库里的bson格式,对接口进行二次封装,将序列化的json转成字节序列,或者可考虑使用其他的加密算法,目前来看不是十分必要。
问题隐患