配置文件功能
其他
2020-02-13 19:06:01
阅读次数: 0
根据作用分类
- 配置项文件,一个文件包含了所有的软件配置项,软件配置从文件中读取,更灵活。
- 设置项保存文件,一个文件存储软件设置的参数。
文件存储方式
二进制
- 数据量小,
- 读写快,性能快,
- 不需要解析
- 可读性不好,如果需要手动修改,会比较麻烦
字符串存储
- xml
- json
- 自定义格式,例如:window下ini文件格式,
config1=xxx
config2=xxx
- 原始字符串自定义格式几乎不会比json更好。
- json比xml数据量小,可读性差不多,解析性能也更好点,json是相对适合的格式。
- 可读性好,手动修改方便
- 数据量大些,需要解析
数据库
- 可读性好,管理方便
- 读取性能差点
方式选择
配置项文件
- 文件都是手动修改,程序只是读取,因此使用可读性好的json更合适
- 也不需要额外信息来做容错
设置项保存文件
- 设置项保存文件不需要手动修改,都是程序在修改,因此可读性要求不高,使用二进制比较合适
- 使用json,xml等字符格式也是可以的,只是对性能要求高点,频繁设置需要考虑下硬件性能,最好测量下,嵌入式下需要考虑但是电脑上这点消耗可以不用担忧。
- 使用json等方式的优化方式:
- 将配置项拆分,分成多个文件存储,来减小写文件的数据量,只是耗点磁盘空间
实际产品
遇到的问题
- 公司自有嵌入式产品,一直在迭代,新版本放到服务器上设备可以升级,升级后配置文件不会删除;当配置文件结构出现变化后,新版本读取老配置文件没处理好,没对返回判断很可能导致程序奔溃
- 配置文件结构没变,不会有问题
诉求
遇到的处理办法
- 二进制文件大小判断:判断文件字节数是否等于结构体字节,不是的话重新初始化参数,可以排除掉 结构体大小改变的情况;但是大小不变的情况下,这种策略排除不了,反而会导致发现不了的错误,
设计
- 配置文件结构改变后,需要扣出有用的信息和新的默认配置合并,
- 因为不确定用户的配置文件是哪一个版本,需要加一个版本号
- 现有版本和升级版本,组合有多种情况,可以实现一个功能专门负责版本内容转换,在升级成功后,由服务器来实现也是比较适合的,因为升级时服务器已经知道了设备的版本信息
发布了8 篇原创文章 ·
获赞 0 ·
访问量 843
转载自blog.csdn.net/qazw9600/article/details/99757933