配置文件功能

根据作用分类

  • 配置文件根据作用可以分成两种:
  1. 配置项文件,一个文件包含了所有的软件配置项,软件配置从文件中读取,更灵活。
  2. 设置项保存文件,一个文件存储软件设置的参数。

文件存储方式

二进制

  • 优点:
  1. 数据量小,
  2. 读写快,性能快,
  3. 不需要解析
  • 缺点:
  1. 可读性不好,如果需要手动修改,会比较麻烦

字符串存储

  1. xml
  2. json
  3. 自定义格式,例如:window下ini文件格式,
config1=xxx
config2=xxx
  • 对比:
  1. 原始字符串自定义格式几乎不会比json更好。
  2. json比xml数据量小,可读性差不多,解析性能也更好点,json是相对适合的格式。
  • 和二进制比较的优缺点:
  • 优点:
  1. 可读性好,手动修改方便
  • 缺点:
  1. 数据量大些,需要解析

数据库

  • 嵌入式数据库sqlite也适合保存配置
  • 优点:
  1. 可读性好,管理方便
  • 缺点:
  1. 读取性能差点

方式选择

配置项文件

  • 文件都是手动修改,程序只是读取,因此使用可读性好的json更合适
  • 也不需要额外信息来做容错

设置项保存文件

  • 设置项保存文件不需要手动修改,都是程序在修改,因此可读性要求不高,使用二进制比较合适
  • 使用json,xml等字符格式也是可以的,只是对性能要求高点,频繁设置需要考虑下硬件性能,最好测量下,嵌入式下需要考虑但是电脑上这点消耗可以不用担忧。
  • 使用json等方式的优化方式:
  1. 将配置项拆分,分成多个文件存储,来减小写文件的数据量,只是耗点磁盘空间

实际产品

遇到的问题

  • 公司自有嵌入式产品,一直在迭代,新版本放到服务器上设备可以升级,升级后配置文件不会删除;当配置文件结构出现变化后,新版本读取老配置文件没处理好,没对返回判断很可能导致程序奔溃
  • 配置文件结构没变,不会有问题

诉求

  • 升级后用户配置不能丢失

遇到的处理办法

  • 二进制文件大小判断:判断文件字节数是否等于结构体字节,不是的话重新初始化参数,可以排除掉 结构体大小改变的情况;但是大小不变的情况下,这种策略排除不了,反而会导致发现不了的错误,

设计

  1. 配置文件结构改变后,需要扣出有用的信息和新的默认配置合并,
  2. 因为不确定用户的配置文件是哪一个版本,需要加一个版本号
  3. 现有版本和升级版本,组合有多种情况,可以实现一个功能专门负责版本内容转换,在升级成功后,由服务器来实现也是比较适合的,因为升级时服务器已经知道了设备的版本信息
发布了8 篇原创文章 · 获赞 0 · 访问量 843

猜你喜欢

转载自blog.csdn.net/qazw9600/article/details/99757933
今日推荐