應用程序框架實戰二十九:Util Demo介紹

  上文介紹了我選擇EasyUi做爲前端框架的緣由,併發放了最新Demo。本文將對這個Demo進行一些介紹,以方便你可以順利運行起來。前端

  這個Demo運行起來之後,是EasyUi的一個簡單CRUD操做,數據庫中也只有一個簡單的表,整個操做不帶任何業務邏輯。數據庫

  看到這裏,很多朋友不免感到失望,搞這麼複雜一個架構,就只用來實現一個簡單的CRUD操做,不是大炮打蚊子嗎?前端框架

  不要急,個人目的不是教你如何實現CRUD,我尚未這麼無聊,我是但願經過這個簡單的CRUD操做,幫你引出一些框架特性,大體包括下面內容。架構

  1. 分層架構,雖然是一個簡單的CRUD,但基本的構造塊都包含進來了,還有一些沒介紹到的構造,好比領域服務等,我會在後續提供其它示例時再引入。我前面也已經介紹過一些構造,還沒介紹到的會補上來。
  2. 抽象和封裝CRUD操做,雖然CRUD貌不驚人,但不論多複雜的系統,多少有一些CRUD的機械工做,對於簡單的系統,CRUD則佔據大半江山,因此對CRUD抽象和封裝是有必要的。
  3. Mvc控件封裝,我將以封裝EasyUi控件爲例,爲你詳細介紹如何把Html封裝起來,並使用Lambda表達式爲你作更多的工做。
  4. 依賴注入,對於這種比較複雜的架構,依賴注入框架是必須的,若是沒有它,這種架構用起來就很是痛苦了。
  5. 查詢封裝,我已經花了不少篇幅來介紹對查詢的一些封裝支持。經過這個示例爲你介紹簡單查詢,你會感覺到查詢封裝的必要性,你平時那些雜亂無章的查詢條件判斷已經消失無蹤了。對於複雜的查詢,須要配合Linq 語句,更復雜的採用Sql,我之前經過存儲過程的方式解決,不過發現分頁和條件判斷不太方便,最近我將Dapper引入,並封裝了Sql查詢組件,用來自動拼接Sql,提供了條件自動判斷和分頁等功能,待有須要的時候我會放出給你們參考。
  6. 全局異常處理。經過一個簡單的全局異常處理模型,並配合自定義異常Warning,能夠解決大部分異常處理問題。
  7. 日誌封裝。系統一旦部署出去,你的斷點調試就無論用了,這時查找問題將主要依賴日誌。哪怕在開發階段,斷點調試也不是一個高效的排錯手段,一般在查看日誌沒法解決問題時才進行斷點調試。大部分人採用Log4.Net進行日誌處理,是否是引入Log4.Net就萬事大吉了呢。Log4.Net只是一個底層組件,幫你把須要記錄的信息保存一下而已。至於須要記錄哪些信息,這是你應該考慮的,若是你的每條日誌都須要記錄大量的系統信息,好比Ip、線程號一類的東西,你不進行封裝,就意味着開發人員每次調用日誌組件時,須要本身手工設置。日誌更高級的用法,甚至能幫你進行性能調優。
  8. Excel文件導出封裝。文件導出是一個常規操做,大部分時候都會導出爲Excel格式。我之前採用簡單的CSV格式,CSV格式使用逗號分隔各列數據,主要優點是簡單,毛病是沒有樣式,更別說多表頭。本次引入NPOI,並對多表頭設置進行了高度封裝,以你們熟悉的RowSpan和ColumnSpan的方式進行設置,大副簡化了NPOI的操做。
  9. 測試數據生成。咱們平時開發一個新模塊,爲了進行測試,通常須要錄入一些數據,這些操做多半是手工進行。大部分人都知道偷懶,只是意思一下,隨便錄入幾條,不過不少問題只有達到必定數據量纔能有效測試。經過幾個簡單擴展和封裝,就能夠爲簡單模塊生成批量測試數據。
  10. 代碼生成。不管如何努力的封裝和抽象,你最終發現仍是有一些代碼須要來回複製,這就是代碼生成器上場的時候到了。我將爲你簡單介紹CodeSmith,以及CodeSmith自帶的EF Code First模板,你會發現簡單修改就能夠用於生產環境了。不只如此,還會把我整理的CodeSmith模板分享出來,這套模板是根據Util量身定製的。

  在看完以上介紹後,但願你可以加強對本系列文章的信心。併發

  我這個系列主要分享的是應用程序框架的搭建和封裝經驗,這些代碼只是給你參考用的。我並不會隨時關注性能問題,由於我平時的項目要求並不高,因此代碼中老是採用最省力的方式,好比反射,查詢時獲取所有字段等,我僅在確實碰到性能問題時才進行局部調優。app

  下面先介紹Demo的目錄結構。框架

  Applications包含一個VS解決方案,它是你可以運行的應用程序,這個解決方案採用了DDD架構分層。性能

  爲了示例的真實性,我將應用程序和應用程序框架分到了兩個VS解決方案中,這一點很是重要,這樣能夠顯著減小應用程序的編譯時間,另外一個好處是能夠對團隊成員透明,減小複雜度。因此Applications依賴一些DLL,這些DLL被指定到一個目錄,這就是Release。管理DLL有不少方式,標準方式是Nuget,若是你喜歡,請自行建立。測試

  Util目錄包含另外一個VS解決方案,這個就是應用程序框架。我已經將Release目錄中的DLL刪除,這樣作是爲了節省空間,你只須要編譯Util解決方案,相關的DLL就會生成到根目錄的Release中,這是由於我更改了每一個類庫的生成路徑。spa

  當你打開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/

相關文章
相關標籤/搜索