2012年在杭州承接的第一個軟件項目經驗淺談 -- 門戶網站數據庫、ASP.NET程序性能改進

去年受到博客園鐵哥的影響力,放棄工作在家裏開始做起自由職業者了,很快有一年時間了,這一年裏明顯感覺到身體好了很多,精神狀態也有好轉。
  春節後就一直沒生意在家裏看看孩子,雖然也有幾個小單子但是由於報價太低都婉言拒絕了讓更需要的人去承接吧,好好休息好,承接效益相對好的項目就可以了,前些天有一個重慶的朋友在網上聯繫我,希望能把他的網站進行性能優化。


  正好在手上沒事情做,其次應該多承接互聯網的項目了不能老是幹內部信息管理系統了,由於這個心態很快就承接了這個性能優化的項目,其實還是犯了同樣的老毛病,客戶的需求不明確就開始進行網站的優化工作了,以後需要改改不怎麼深入評估項目風險就急着進行開發的性子了。

 客戶的網站是2006年開發的,隨時基礎數據的積累越來越多,系統裏有些表都有幾十萬條記錄了,由於當時開發的人員的水平有限,同時也沒進行這麼多數據量的壓力測試,軟件後臺的很多功能都無法正常使用了。已經非常影響後臺的審覈操作了,在這樣無法給客戶及時審覈數據,那客戶就會流失很多。
 

  嶄新的MacBook air 4G內存配置的,在本地打開一個後臺管理頁面都需要等好幾分鐘時間,更何況筆記本是毫無其他用戶的併發壓力下,性能就這麼慢了,更何況天天在廣域網上每天有10萬個IP訪問量的網站,這個服務器的後臺其實已經在崩潰的邊緣了,幾次升級硬件後,還是無法滿足正常工作的需要了,客戶只能從程序的性能上下功夫了。

  其實客戶找外包肯掏銀子改進系統,大多是已經沒辦法的情況下才進行的,還好有那麼多菜鳥否則,自由職業者也沒的飯吃了。由於程序開發的比較早,很多頁面都存在安全隱患,注入漏洞等等,而且客戶也不是專業做軟件開發的,也不大可能長期養着幾個開發人員,那好幾年的成本也是吃不消的,所以客戶還是會傾向於外包這個網站的性能改進工作,而不是去招聘一個開發人員,普通的開發人員對大數據的優化,軟件的性能優化也未必能有什麼大進展的。
 

  因爲,不能大改原有的系統架構,數據庫結構,而且天天在跑的服務器也不是想隨便調試就可以調試,隨時更新就可以更新的,還要考慮系統的穩定性等等。同時原有的業務功能也蠻多的,一些菜鳥光熟悉原有的系統業務邏輯就要耗費好多天時間了,再加上把以前多個人寫的凌亂的程序都維護好,還是需要很多年的造詣纔可以得心應手的進行改進。
 

  一直以來只看C#程序也有一個好處,就是看別人寫的代碼,掃一眼就差不多能知道問題在哪裏,應該怎麼優化,甚至是從哪裏入手,幾個步驟進行優化都心裏有低了。

  1:由於長期維護通用權限管理系統組件,這個組件裏有高性能的數據庫訪問組件,把目前這個系統的很多數據庫訪問方法,都用通用權限管理的數據庫訪問組件進行替換就可以了,這樣最起碼數據庫的訪問性能是最高的。
 

  2:通用權限管理系統裏有專門針對大數據庫分頁做的幾個優化有性能良好的分頁控件,把原系統的分頁控件用通用權限管理系統裏的分頁控件一替換後,性能接近提高了10倍以上,幾十萬條記錄的分頁效果幾乎一點就出來了。
 

  3:通用權限管理系統裏也有很多商業邏輯、數據庫操作函數的封裝,而且這些函數都支持多種數據庫,同時不會有注入安全漏洞,稍微分析一下用戶網站裏的sql語句,然後把這些替換爲通用權限管理系統的相應的函數,那網站的安全漏洞就會少很多。
 

  4:把後臺的用戶登錄替換爲通用權限管理的用戶登錄界面、把通用權限管理系統的幾個用戶權限相關的表導入到用戶的網站,然後再把用戶現有的管理等數據導入到通用權限管理系統中,這樣後臺管理的安全性也徹底提高了,而且可以有靈活的權限配置功能了,可以任意擴展後臺的權限控制管理了。
 

  5:接着再把通用權限管理的後臺給安裝到網站服務器上,方便網站的管理員進行日常管理,操作簡單、靈活可以得心應手了,平時也是1個人在維護系統,而且是通過遠程桌面操作的,所以C\S的後臺管理程序也無所謂的,這個不是針對N多前臺用戶的,只是針對少數管理人員偶爾用用,不大可能後臺管理員的帳戶經常在變動的事情,偶爾甚至幾個月設置一次就可以了。
 

  6:網站後臺管理的登錄頁面、菜單框架、每個功能頁面都不夠美觀,與通用權限管理的頁面效果差一個層次,所以乾脆把通用權限管理的菜單效果,頁面都直接搬過來就可以了,而且以前的後臺管理菜單是寫死的,無法靈活擴展,無法按需求給不同的管理人員配置不同的菜單操作權限。
 

  7:網站的用戶是否登錄等判斷等等安全性方面的函數都沒通用權限管理系統裏寫的規範,所以這部分也都進行了替換。
 

  這個客戶是重慶的以前從來沒見過,也是通過博客認識的,記得2011年4月份的時候,我寫過幾篇文章有關大數據的性能優化方面的,客戶看了文章後找上來的,雖然那個文章寫了接近一年都沒任何反映,但是多等等,總會有客戶找上來的,寫文章的好處也體現出來了。

  再忙乎幾周這個網站的性能優化工作就應該可以完成了,客戶前後對比一下絕對會滿意這次改進的,因爲很多頁面的打開速度至少提高了10倍,不用他積壓幾千條未審覈的數據了,想什麼時候審覈就可以什麼時候審覈了,因爲不用每點一下等待好幾分鐘了,現在只要1-2秒就可以了。

  有時候也會迷茫,學技術幹啥用?有了項目,有活兒乾的時候,特別是能幫客戶解決揪心的技術上的麻煩問題時,纔會感覺到技術的力量也是無窮的,學技術這麼多年沒白浪費時間,天天維護通用通用權限管理系統沒白浪費時間,裏面的很多功能都在做項目時可以反覆利用、通用權限管理就是積累接近10年的寶貴代碼庫,C#日常開發的《葵花寶典》。

  我們不能總是抱怨社會不公平,社會怎麼怎麼了等等N個消極的思想阻止自己的進步,只要我們好好在做事情,準備工作做了充分,機會總是會送上門來的。但是爲了迎接將來的機會,我們現在就要做好準備工作,天天好好維護通用權限管理系統組件,應該沒錯,這個條路當初沒選錯。
 

將權限管理、工作流管理做到我能力的極致,一個人只能做好那麼很少的幾件事情。
About
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章