EFW框架源代碼下載V1.3:http://pan.baidu.com/s/1c0dADO0
EFW框架實例源代碼下載:http://pan.baidu.com/s/1eQCc69G
自己也經歷了一些Web項目,但對MVC的理解還是比較片面的,那就講解一下我認識MVC的經歷,這樣沒有理論教導,只有一些學習的引導以及感悟吧;在現實項目中可能更注重開發效率與成果,所以對新的技術或理論都是比較保守的,也跟所在的行業是個比較保守的行業有關吧;其實自己對業務架構清晰,代碼結構整潔還是比較關心的,所以對一些好的技術理論也是有所關注;
1.asp時代
最早接觸Web開發是用Asp做網站開發,就是在html標簽中嵌入asp腳本代碼,數據庫也一般用的Access,當然程序功能也沒那么復雜無非就那么幾個欄目,首頁、公司簡介、產品、聯系我們、留言板等;雖然功能簡單但是一些代碼復用還是想了一些辦法,比如把連接數據庫的代碼單獨一個conn.asp文件,還有用戶驗證、頁眉、頁腳等,那時候一般都是用文件引用的方式來復用代碼;多年沒接觸asp,偶然去看了些流行的CMS代碼,根本看不懂了,那么多代碼文件沒有一個是html文件,基本都是動態生成的吧,index.asp打開也是一堆的腳本;能寫出這些代碼或看懂代碼的人怎么也是技術牛人吧,但如我這般的人還是占大多數吧,怎么也是一個結構簡單明了,代碼清晰整潔的框架更適合我們吧。
2.donet桌面程序時代
后來進入行業軟件公司用.net做桌面程序,那時候還是用vs2003開發,系統為兩層結構,客戶端直連數據庫,操作數據庫的代碼都是直接寫在界面代碼中的,就這樣上千個客戶端同時使用也是挺正常的;一些重復的功能一般都是封裝成業務控件,使用的時候很方便把控件拖進去就行了,還有一些常用的基礎數據就封裝成公共的類庫;
現在想來這種方法還是有很多優點的:
1.首先就是上手快,一個.Net新手馬上就能修改程序bug,
2.查找問題維護也比較方便,因為結構簡單根據界面上的操作按鈕一步步就可以找到問題代碼修正就行,也不會說對其他功能會有影響;
同時缺點也是很突出的:
1.隨着業務功能越來越復雜,代碼變得越來越難控制,程序中有幾個復雜的界面,一個文件代碼的行數就達到1萬以上,后來增加一個新功能變得越來越痛苦;
2.程序代碼的移植性很差,隨着業務的擴展需要開發一些新的模塊,而新模塊的大部分功能在老模塊中都有的,現在要把這些功能代碼剝離出來是很痛苦的,千絲萬縷,真是斬不斷理還亂;
3.三層架構時代
在這些優點與缺點的磨練中,平時也就尋找一些解決辦法,得整理出一種結合兩者的開發模式;三層架構、MVC、ORM、AOP、面向對象、設計模式等都想利用起來,當然中間的一些技術還是挺復雜,如MVC、設計模式的理論,NHibernate的配置都是苦學無果,不過最后自己還是整出個簡易的開發框架,當然三層架構和面向對象是少不了的,ORM自己弄了個單表操作,設計模式用了個工廠模式;剛好也有一個不大不小的項目需要重新開發,既然帶隊就得把新的開發模式給使用起來吧,幸好團隊成員也都是非常支持使用新的,經過幾個月的努力奮斗系統終於也給弄出來了,開發過程中有喜也有憂,喜的是這種新的開發模式用起來還是比較順手的,寫出來的代碼也比以前好看,憂的是大家對面向對象的思想理解不一致或存在偏差,導致對象比較多,有些還不倫不類;不過想想不也是有個過程的,不還有重構這一條路嗎。后來系統上線時候,后面的人員接收維護也都覺得比以前代碼好,那是真的開心。
4.ExtJs+AspX
真正發揮這個框架的作用還在后面,有新的客戶為了后期維護方便需要系統是B/S架構的,那么需要將現有C/S的程序改成B/S的,經過大家評估還是可行的,既然系統是用三層架構開發的,邏輯層已經分離了,那么只要把Winform界面替換成Web界面就行了,工作量還是比較小的;這樣又開始了新一輪的征戰,界面框架最后定了ExtJs,因為另一個部門就是用的ExtJs+Java開發的系統,為了減少技術的風險最后就定了ExtJs,最后發現這玩意是一個錯誤的選擇,ExtJs太復雜了像我們這些新手根本一下掌握不了;最后搭建成B/S的框架是這樣的,ExtJs+AspX,ExtJS界面開發,aspx調用后台邏輯層進行數據轉換輸出;雖然大部分人都是第一次做web系統,但還是跌跌撞撞的做出來了,后面的維護確實還是挺頭痛,特別是Extjs做的界面那部分,一個js文件也是老長,javascript本來調試起來就不方便,維護就更困難了;后來也看了人家java部門的代碼,對比起來,人家的確實還是清晰好看多了,經過一番分析可能是兩方面問題:
一是、我們這邊第一次接觸JS代碼編寫所以難免寫法不是很規范,對里面的控件封裝使用都不熟練。
二是、我們的界面功能確實比那邊的要復雜,因為我們都是把Winform的界面照搬用Extjs實現的,一些用Winform很容易實現的功能用Web方式就非常麻煩,沒有做深層次的分析轉換,所以Js代碼變得很難維護是再所難免的;
5.JqueryEasyUI+HTTPHandler+Controller
經過了上面的經驗教訓,既然ExtJS這么難學就找個容易學的,就換成了JqueryEasyUI,Aspx做數據處理太浪費了,想把cs代碼移到獨立一個類庫中去,后來就發現了ashx,再后來使用HTTPHandler把http請求完全分離,並擴展出了WebController統一進行數據的處理;最后框架就變成了如今這樣,JqueryEasyUI+HTTPHandler+Controller。后來用這個框架進行了幾個Web系統的開發,效果都不錯,特別是學習成本與開發效率都是很突出的;
為了適用各種情況,對框架又做了一些擴展,比如:進行手機網站開發,界面框架換成JqueryMobile,那后台Controller也擴展出支持JqueryMobile的數據處理控制器;后來又加入了更多的界面框架和控制器,ExtJS、QUI、JqueryUI等;
隨着框架的越來越完善,反過來想這種開發模式還是比較類似MVC模式的,想着以后給新人講解開發模式的時候也有個理論依據,所以拿出來探討一下,對比其他的MVC框架,總結出優缺點與適合的場景。