在客戶現場,客戶問我:“你們的上位機軟件的配置文件在哪?”,我跟客戶說,沒有配置文件,所有配置都在數據庫里。客戶一臉愁容地問:“那如果我想把這個機器的軟件配置拷到另一臺機器上怎么辦?”,果然,當初我擔心的問題來了!
![]()
現在的軟件架構我其實是有點后悔使用數據庫的,雖然是用的Sqlite數據庫!當初用Sqlite數據庫我只考慮到了部署方便,它不像MySql、SqlServer或者Oracle數據庫那樣還得在本地安裝一個客戶端,甚至于當DB目錄下沒有數據庫文件我自己通過代碼判斷一下即可。
但是,后面項目寫著寫著,我就發現不對了,但是此時再改,就影響工期了,所以,即使我知道現在使用數據庫是有問題的,但是還是硬著頭皮往下寫!
具體咋回事呢?其實問題很簡單,那就是上位機這邊需要配置的參數實在是太多了,如果一個一個配置,光配置就得大半天,這時候,如果另一臺上位機需要配置,最方便的方式其實就是將已經配置好的那臺上位機數據庫直接復制到另一臺上位機上。
原則上,這種方式在設備調試階段是沒有問題的,怕就怕有些時候機器已經運行了一年半載甚至更久,這時候數據庫里面已經產生了大量的交叉數據了,這時候直接把一臺上位機上的數據庫復制到另一臺上位機上肯定就不合適了。
而作為客戶,很多客戶那邊的操作員連數據庫是啥都沒有概念,就別說直接從數據庫里面復制表數據這種常規操作了。
因此,當我發現這個問題以后,我知道,開發上位機軟件,數據庫是不能用來存儲系統配置信息的,最方便的,還是用文件存儲的方式,并且,最好還是分散的那種。
此話怎講呢?
道理很簡單,像我現在寫的這個上位機軟件,有上百個配置信息,這些配置信息是分散在不同頁面的,甚至可以將每個頁面的配置信息單獨存儲在一個文件當中,因為客戶這邊有時候復制配置信息其實僅僅指向復制一段而已,分散存儲在復制時可以盡量減小兩臺上位機之間的配置沖突。
說到這里,其實我已經知道自己錯了,既然客戶提出了這個問題,我只能硬著頭皮接下客戶的疑問,找個時間給他們改。
客戶這邊倒是也沒有為難我,但是他們跟我說,盡量不要使用數據庫,將所有信息都存儲在文本文件中。
客戶的意思很明確,我開始認為僅僅只是配置信息使用文件存儲即可,但是,像一些生產數據,他們有時候需要導出來做數據,比如一些生產報表的折線圖等。
我跟他們說這些數據我系統里面都是有導出功能的,各種圖形的報表數據我們都有,但是,客戶的意思是他們有時候其實不太信任上位機的報表數據,只有原始數據他們才信,所以,他們更加愿意拿原始數據出來分析。
如此一來,客戶幾乎推翻了我整個數據存儲的結構架構,說實話,還是有失落感的。
后來,了解了客戶的使用習慣,他們甚至于連Json存儲的方式都不能接受,因為Json在他們眼里還是代碼格式,他們更加偏向于使用ini文件保存的方式,這樣更加直觀,而且也便于他們修改。
這就是上位機程序使用者的真實想法!
結語
其實,這種想法我是不排斥的,反而覺得很有道理,可能我之前做的上位機程序配置信息不多的原因,我覺得使用數據庫存儲配置信息才是最現代的方法,但是像上位機軟件,可能數據庫有時候和客戶真正需要的方式還是有些沖突。
我覺得,只要是讓客戶能夠方便操作的一切技術、行為和方法都不應該被貼上落后的標簽,所有所謂高級一些的寫法,只不過是很多程序員自己內心狹隘的想法而已,貼合用戶需求,一直以來都是軟件開發的核心!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.