在客户现场,客户问我:“你们的上位机软件的配置文件在哪?”,我跟客户说,没有配置文件,所有配置都在数据库里。客户一脸愁容地问:“那如果我想把这个机器的软件配置拷到另一台机器上怎么办?”,果然,当初我担心的问题来了!

打开网易新闻 查看精彩图片

现在的软件架构我其实是有点后悔使用数据库的,虽然是用的Sqlite数据库!当初用Sqlite数据库我只考虑到了部署方便,它不像MySql、SqlServer或者Oracle数据库那样还得在本地安装一个客户端,甚至于当DB目录下没有数据库文件我自己通过代码判断一下即可。

但是,后面项目写着写着,我就发现不对了,但是此时再改,就影响工期了,所以,即使我知道现在使用数据库是有问题的,但是还是硬着头皮往下写!

具体咋回事呢?其实问题很简单,那就是上位机这边需要配置的参数实在是太多了,如果一个一个配置,光配置就得大半天,这时候,如果另一台上位机需要配置,最方便的方式其实就是将已经配置好的那台上位机数据库直接复制到另一台上位机上。

原则上,这种方式在设备调试阶段是没有问题的,怕就怕有些时候机器已经运行了一年半载甚至更久,这时候数据库里面已经产生了大量的交叉数据了,这时候直接把一台上位机上的数据库复制到另一台上位机上肯定就不合适了。

而作为客户,很多客户那边的操作员连数据库是啥都没有概念,就别说直接从数据库里面复制表数据这种常规操作了。

因此,当我发现这个问题以后,我知道,开发上位机软件,数据库是不能用来存储系统配置信息的,最方便的,还是用文件存储的方式,并且,最好还是分散的那种。

此话怎讲呢?

道理很简单,像我现在写的这个上位机软件,有上百个配置信息,这些配置信息是分散在不同页面的,甚至可以将每个页面的配置信息单独存储在一个文件当中,因为客户这边有时候复制配置信息其实仅仅指向复制一段而已,分散存储在复制时可以尽量减小两台上位机之间的配置冲突。

说到这里,其实我已经知道自己错了,既然客户提出了这个问题,我只能硬着头皮接下客户的疑问,找个时间给他们改。

客户这边倒是也没有为难我,但是他们跟我说,尽量不要使用数据库,将所有信息都存储在文本文件中。

客户的意思很明确,我开始认为仅仅只是配置信息使用文件存储即可,但是,像一些生产数据,他们有时候需要导出来做数据,比如一些生产报表的折线图等。

我跟他们说这些数据我系统里面都是有导出功能的,各种图形的报表数据我们都有,但是,客户的意思是他们有时候其实不太信任上位机的报表数据,只有原始数据他们才信,所以,他们更加愿意拿原始数据出来分析。

如此一来,客户几乎推翻了我整个数据存储的结构架构,说实话,还是有失落感的。

后来,了解了客户的使用习惯,他们甚至于连Json存储的方式都不能接受,因为Json在他们眼里还是代码格式,他们更加偏向于使用ini文件保存的方式,这样更加直观,而且也便于他们修改。

这就是上位机程序使用者的真实想法!

结语

其实,这种想法我是不排斥的,反而觉得很有道理,可能我之前做的上位机程序配置信息不多的原因,我觉得使用数据库存储配置信息才是最现代的方法,但是像上位机软件,可能数据库有时候和客户真正需要的方式还是有些冲突。

我觉得,只要是让客户能够方便操作的一切技术、行为和方法都不应该被贴上落后的标签,所有所谓高级一些的写法,只不过是很多程序员自己内心狭隘的想法而已,贴合用户需求,一直以来都是软件开发的核心!