天天看點

Autofac3 在MVC4中的運用原理

    這是一種新的開發模式,注入開發模式,或者叫它IOC模式,說起IOC你可以這樣去了解它,它為你的某個實作流出一個注入點,你生産的對象,可以根據你之前的配置進行組合。  IOC全稱是Inversion of Control,即反轉控制,或者說是依賴注入更為合适。選擇别糾結這些全稱的專業詞。我們可以用别外一些方式去了解它,IOC,是一種設計模式。它的延生所要實作的是把藕合從代碼中移出去,統一放到XML檔案中,通過一個容器在需要的時候把這個依賴關系形成,即把需要的接口實作注入到需要它的類中,這可能就是“依賴注入”說法的來源了。 

而注入點的位置及方式也是多種多樣的,我們今天主要說一個通過HTTP請求進行注入的方式,IOC工具使用高效的Autofac,對它的認識你可以看這篇文章。

首先看一下我們這個項目的知識點:

MVC4一個對UI層進行分層的架構模式,在微軟的MVC4中加入了開源的Razor引擎

EF(Entity Framework)這無疑是微軟自己比較成功的ORM(Object Relational Mapping)工具(即對象關系映射,目前資料庫是關系型資料庫ORM 主要是把資料庫中的關系資料映射稱為程式中的對象),它執行效率上要高于linq to sql,甚至你自己編寫的ado.net腳本。

Autofac這是在orchard項目中被廣泛的IOC工具,它支援類型,反泛,HTTP等注入

對于這個系統的autofac部分,我們将它的注入點放在controller的構造函數中,将生産的對象配置在global中,當然,你也可以設定在config檔案,或者你自己的檔案中。

我認為它的工作方式應該是:

網站啟動=>從global中得到ioc配置資訊=>http request請求頁面=>通過controller中的參數進行實作的建立=>action中使用建立好的對象

OK,有了這樣一個理論基礎,我們來看一下代碼吧:

EF部分的DATA層

 Services層(BLL層)核心代碼:

WEB層MVC部分代碼:(注意:我們的WEB層不應該有對DATA層的引用,WEB層一般隻注入SERVICE的對象,這一點是需要注意的,即不要直接調用資料庫倉庫)

而注入參數我們放在global中,看一下核心代碼:

學習交流群:364976091