delphi 项目软件架构升级-行业软件
五一期間記錄
19年7月到新公司,居然是用delphi寫的行業軟件。軟件架構為直連數據庫ADO+mssql的方式。
delphi部分:前臺端、應用端、自助機、后臺管理端、硬件控制部分。
線上部分mysql:php網上商城、微信公眾平臺。
軟件涉及的技術相當’全面’,代碼風格百花齊放,變量名稱應有盡有,控件的用法也是各盡其能,整個系統沒有數據庫表說明、開發文檔、流程圖,比較統一的就是基本沒有注解(其中一個寫注解的我還認識,大概的記錄了一些功能說明),大量的屏蔽代碼,與exit后的代碼。
據說是由delphi 7升級到xe2的。軟件模式停留在20年前(個人認為)的樣式和用戶習慣,既單界面模式,打開結賬功能就只能結賬,如果想看別的數據,只能退出。
剛開始我只是接手后臺管理端,主要是大數據統計。剛開始的時候確實有風中飄零的感覺,沒有任何數據庫說明情況下要統計。
界面改造:所有界面標簽化,由單界面變化為多界面應用
數據庫表記錄:所有我用過的表和字段記錄下來。自己建立的表格,記好說明,因為我是新人,只能從自己做起了。
數據表升級改造:以前的方法是,有幾個數據庫升級程序,挨個執行,然后根據一個數據表比對軟件補全缺的內容。改造為在后臺的單獨功能,一鍵升級。
統計方式改造:前人都是sql高手,統計都是一條語句+數據控件。我的SQL水平還停留在SELECT 水平,而且我基本不用數據敏感控件(也是因為用不明白)。
統計方式改造版本一:1、用ADO提取數據。2、根據需求進行統計。作了幾個需求后,發現需求當中有很大一部分是重復的,比如營業額、人數等。
版本二:不考慮整體需求,將需求拆解成可復用的多個函數,比如營業額函數、人數統計函數。幾個需求后發現,代碼復用率是提高了,但如果統計的數據較多,相當占用時間。
版本三:函數繼續拆解,1、用ADO提取數據到內存中。2、在內存中進行數據格式化。3、所有函數對格式化后的數據進行統計。這回變成了提取一次數據,進行N次統計。然后發現大部分的時間都浪費在了取數據。繼續優化,1、關閉ADO控件的敏感數據連接。2、開啟ADO數據緩存。這兩步完成基本上速度就差不多了。3、在ADO數據集的內存表中直接操作(需要對SQL語句進行修改)。
涉及DELPHI技術:TLIST指針的應用,必須保證不存在內存泄露。ADO數據集的操作,保證沒有NULL數據。
進行了一段時間,發現有的功能在前臺、后臺、應用端等都需要,每次改完代碼都得COPY幾次,難免會有遺漏。如果線上部分也需要這個統計,我還得先講解一下統計算法,避免統計結果不一樣。
版本四:采用SOA(面向服務),restful api 接口,所有功能以服務的形式對外提供。避免了各端與線上總修改來修改去的情況。
涉及DELPHI技術:snapdata、rest控件等。編碼部分是最煩人的。
整體過程是一個由點及面的過程,由一個個的需求,最后帶動整體軟件架構的選擇。
其實什么架構無所謂,能解決問題就好。
待續
總結
以上是生活随笔為你收集整理的delphi 项目软件架构升级-行业软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flash新手入门教程】实例讲解引导层
- 下一篇: 电脑自动派单的实现