一個簡單實用的,基於EF的三層架構


      到底什么樣的框架才是好框架呢?或許不同人有不同的看法.我個人覺一個好的框架,最重要的要是簡單實用,能快速適開發,可維護性高(不會出現復制黏貼的代碼),並能快速響應各種業務場景的變化的框架,同時性能不會太差.我覺的這樣的框架,就是一個好的框架.而且,我覺的做框架,千萬不能設計過度,不然會得不償失.最關鍵要看你的業務場景,千萬不要因為模式而模式,更多的看考慮它的實用性. 就像我接觸的我們公司一個基於EF的三層,架構,我就覺得里面有一些不好的設計.主要表現如下.

  1. 每個類的一些基本的操作,如增加修改,刪除.都是通過代碼生成器生成的.其實我是很反對用代碼生成器的.用代碼生成的代碼,就相當於我們在寫代碼中,進行復制黏貼.這個在我們設計上是很杜絕的. 我們以前做項目,都是不用代碼生成器.用代碼生成器,只會生成那個實體類.
  2. Bll層和DAL層,職責不分明.我看我做的那項目,寫的代碼比較亂.有些把業務層的東西,寫在dal層. 這個也是框架的問題導致,因為bll層,沒有事務,所以把事務里面的業務,也寫在dal層里.同時有些人也為了方便,把訪問數據的邏輯都放在bll層. 總之讓人感覺很混亂.
  3. 是用IOC技術,把所有的bll層,dal層都是基於接口的方式去實現.到現在為止,我都覺的這個東西有點設計過度了.因為大部分項目,都不會去換dal層,bll層.如果硬要把所有的bll層,dal層都用IOC來做,會帶來如下問題.(1) 我們想增加一個方法,經常要在4個地方寫函數. (2)想用F12跟進去查看代碼,是跟不進去的.只能跟到接口那里.  (3)最要命的就是它那個報錯.經常會報配置錯誤,其實一查根本不是配置錯誤.只是生成的類有問題

  其實EF框架,還是很好用的,尤其在快速開發上,有不可替代的優勢.而且性能上,我也做過壓力測試,跟ado.net,差不了多少.因此,我就想開發一個基於EF的三層架構,請看下面的相關類圖.
 

該框架,主要實現如下功能.

  1. 所有的dal層和bll層都有個基類,在基類里把所有的基本操作封裝起來.
  2. 在dal層里,並沒有真正的操作數據庫,只是根據ef生成相應的語句,真正執行是在bll層里.
  3. 在bll層里有context對象,用來是控制bll層里的事務.
  4. Service層,是用來給外部提供系統調用的,可以是wcf,也可以webservice,也可以webapi 的方式.
  5. Web 層可的數據,可以來自bll層,也可以來自service層.(在案例中還沒有實現)

  這框架的優點和缺點,我將下次再介紹,有興趣的朋友,可以先下載代碼來看看.同時也歡迎各位朋友評價這框架..

  下載路徑  http://pan.baidu.com/share/link?shareid=464738&uk=3322219884 (demo是vs2012的,用其他版本打開可能會存在問題)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM