上文介紹了我選擇EasyUi作為前端框架的原因,並發放了最新Demo。本文將對這個Demo進行一些介紹,以方便你能夠順利運行起來。
這個Demo運行起來以后,是EasyUi的一個簡單CRUD操作,數據庫中也只有一個簡單的表,整個操作不帶任何業務邏輯。
看到這里,不少朋友難免感到失望,搞這么復雜一個架構,就只用來實現一個簡單的CRUD操作,不是大炮打蚊子嗎?
不要急,我的目的不是教你如何實現CRUD,我還沒有這么無聊,我是希望通過這個簡單的CRUD操作,幫你引出一些框架特性,大致包括下面內容。
- 分層架構,雖然是一個簡單的CRUD,但基本的構造塊都包含進來了,還有一些沒介紹到的構造,比如領域服務等,我會在后續提供其它示例時再引入。我前面也已經介紹過一些構造,還沒介紹到的會補上來。
- 抽象和封裝CRUD操作,雖然CRUD貌不驚人,但不論多復雜的系統,多少有一些CRUD的機械工作,對於簡單的系統,CRUD則占據大半江山,所以對CRUD抽象和封裝是有必要的。
- Mvc控件封裝,我將以封裝EasyUi控件為例,為你詳細介紹如何把Html封裝起來,並使用Lambda表達式為你做更多的工作。
- 依賴注入,對於這種比較復雜的架構,依賴注入框架是必須的,如果沒有它,這種架構用起來就非常痛苦了。
- 查詢封裝,我已經花了很多篇幅來介紹對查詢的一些封裝支持。通過這個示例為你介紹簡單查詢,你會感受到查詢封裝的必要性,你平時那些雜亂無章的查詢條件判斷已經消失無蹤了。對於復雜的查詢,需要配合Linq 語句,更復雜的采用Sql,我以前通過存儲過程的方式解決,不過發現分頁和條件判斷不太方便,最近我將Dapper引入,並封裝了Sql查詢組件,用來自動拼接Sql,提供了條件自動判斷和分頁等功能,待有需要的時候我會放出給大家參考。
- 全局異常處理。通過一個簡單的全局異常處理模型,並配合自定義異常Warning,可以解決大部分異常處理問題。
- 日志封裝。系統一旦部署出去,你的斷點調試就不管用了,這時查找問題將主要依賴日志。哪怕在開發階段,斷點調試也不是一個高效的排錯手段,通常在查看日志無法解決問題時才進行斷點調試。大部分人采用Log4.Net進行日志處理,是不是引入Log4.Net就萬事大吉了呢。Log4.Net只是一個底層組件,幫你把需要記錄的信息保存一下而已。至於需要記錄哪些信息,這是你應該考慮的,如果你的每條日志都需要記錄大量的系統信息,比如Ip、線程號一類的東西,你不進行封裝,就意味着開發人員每次調用日志組件時,需要自己手工設置。日志更高級的用法,甚至能幫你進行性能調優。
- Excel文件導出封裝。文件導出是一個常規操作,大部分時候都會導出為Excel格式。我以前采用簡單的CSV格式,CSV格式使用逗號分隔各列數據,主要優勢是簡單,毛病是沒有樣式,更別說多表頭。本次引入NPOI,並對多表頭設置進行了高度封裝,以大家熟悉的RowSpan和ColumnSpan的方式進行設置,大副簡化了NPOI的操作。
- 測試數據生成。我們平時開發一個新模塊,為了進行測試,一般需要錄入一些數據,這些操作多半是手工進行。大部分人都知道偷懶,只是意思一下,隨便錄入幾條,不過很多問題只有達到一定數據量才能有效測試。通過幾個簡單擴展和封裝,就可以為簡單模塊生成批量測試數據。
- 代碼生成。無論如何努力的封裝和抽象,你最終發現還是有一些代碼需要來回復制,這就是代碼生成器上場的時候到了。我將為你簡單介紹CodeSmith,以及CodeSmith自帶的EF Code First模板,你會發現簡單修改就可以用於生產環境了。不僅如此,還會把我整理的CodeSmith模板分享出來,這套模板是根據Util量身定制的。
在看完以上介紹后,希望你能夠增強對本系列文章的信心。
我這個系列主要分享的是應用程序框架的搭建和封裝經驗,這些代碼只是給你參考用的。我並不會隨時關注性能問題,因為我平時的項目要求並不高,所以代碼中總是采用最省力的方式,比如反射,查詢時獲取全部字段等,我僅在確實碰到性能問題時才進行局部調優。
下面先介紹Demo的目錄結構。
Applications包含一個VS解決方案,它是你能夠運行的應用程序,這個解決方案采用了DDD架構分層。
為了示例的真實性,我將應用程序和應用程序框架分到了兩個VS解決方案中,這一點非常重要,這樣可以顯著減少應用程序的編譯時間,另一個好處是可以對團隊成員透明,減少復雜度。所以Applications依賴一些DLL,這些DLL被指定到一個目錄,這就是Release。管理DLL有很多方式,標准方式是Nuget,如果你喜歡,請自行創建。
Util目錄包含另一個VS解決方案,這個就是應用程序框架。我已經將Release目錄中的DLL刪除,這樣做是為了節省空間,你只需要編譯Util解決方案,相關的DLL就會生成到根目錄的Release中,這是因為我更改了每個類庫的生成路徑。
當你打開Util解決方案,你會發現某些項目中包含名稱為00-Source的目錄,這個目錄中包含了某個第三方開源框架的源碼,這樣做的唯一原因是為了減少生成的DLL。如果你以后也准備這樣干,需要注意將該開源框架的條件編譯符號復制到你的項目。
TestBin目錄用於放置測試項目生成的DLL,沒有特別的用途,只是方便統一管理測試DLL,以免每個目錄都包含一堆垃圾。
Libraries目錄是依賴的一些第三方DLL。
Data目錄包含一個Sql Server 2005的備份文件,里面是一個單表,有1萬行測試數據。
上面介紹了目錄情況,現在你得把Demo運行起來。
第一步打開Util解決方案編譯。
第二步打開Applications中的解決方案,編譯。
第三步還原Sql Server數據庫,記住還原,不要附加。
第四步修改連接字符串,這些基礎的不要我說了吧。
第五步,設置Managements.Presentation項目為啟動項目,運行。
如果沒什么意外的話,你應該能跑起來了,如果不行,注意你的開發環境與我的可能有差異。我使用的是VS 2013,MVC 4.0,還有一些人發現他的MVC版本是4.0.1,你本機如果沒有Mvc 4.0的DLL,找別人給你發幾個4.0的DLL就可以了。
目前發出的Demo沒有包含上面所述的全部功能,我會在即將介紹到相關功能時更新,請關注。
還有些朋友反應看不太懂,不要急,這是正常人的反應,看別人的東西總是很頭痛,你可以暫時不要看Util解決方案,先把Applications解決方案看熟,我后面會逐步介紹各構造塊。
后續Demo,不再通過EMAIL方式發放,以免污染評論區。
最后,希望大家狂點推薦,少點反對,嘿嘿。
.Net應用程序框架交流QQ群: 386092459,歡迎有興趣的朋友加入討論。
謝謝大家的持續關注,我的博客地址:http://www.cnblogs.com/xiadao521/