最近在學習ASP.NET MVC,使用Unity作為依賴註入容器.分別在WebAPI和MVC中使用.這篇文章介紹WebAPI,MVC的在下篇文章中介紹.下麵是學習的一點經驗. 一 IOC簡單介紹 IoC(Inversion Of Control)即控制反轉,其具體就是由容器來控制業務對象之間的依賴關 ...
最近在學習ASP.NET MVC,使用Unity作為依賴註入容器.分別在WebAPI和MVC中使用.這篇文章介紹WebAPI,MVC的在下篇文章中介紹.下麵是學習的一點經驗.
一 IOC簡單介紹
IoC(Inversion Of Control)即控制反轉,其具體就是由容器來控制業務對象之間的依賴關係,而不是像傳統方式中由代碼來直接控制。控制反轉的本質,是控制權由應用代碼轉到了外部容器,控制權的轉移即是所謂的反轉。控制權的轉移帶來的好處就是降低了業務對象之間的依賴程度,即實現瞭解耦。
IoC的實現策略有兩種:
1)依賴查找:容器中的受控對象通過容器的API來查找自己所依賴的資源和協作對象。這種方式雖然降低了對象間的依賴,但是同時也使用到了容器的API,造成了我們無法在容器外使用和測試對象;
2)依賴註入(又稱DI:Dependency Injection):對象只提供普通的方法讓容器去決定依賴關係,容器全權負責組建的裝配,它會把符合依賴關係的對象通過屬性或者是構造函數傳遞給需要的對象。通過屬性註射依賴關係的做法稱為設值方法註入,將構造子參數傳入的做法稱為構造子註入。
依賴註入的好處如下:
查詢依賴操作和應用代碼分離;
受控對象不會使用到容器的特定的API,這樣我們的受控對象可以搬出容器單獨使用。
二:WebAPI
1 安裝Nuget包
2 安裝完成後,會自動生成UnityConfig.cs.修改其中的代碼
下麵新建BuildUnityContainer方法
創建Unity容器 我用了兩種方法
第一種 在代碼里直接寫Map
第二種 在配置文件中讀取Container
MapPath中傳的是config文件的位置,示例中是新建了一個ConfigFiles文件夾,並新建配置文件TestUnity.config
配置文件中type中寫入命名空間+方法,命名空間(不包含文件夾);
3 配置完成後,在啟動程式中添加
4 這樣就可以使用依賴註入了