IOC控制反轉:說的是創建對象實例的控制權從代碼控制剝離到IOC容器控制,實際就是你在xml文件控制,側重於原理。
DI依賴注入:說的是創建對象實例時,為這個對象注入屬性值或其它對象實例,側重於實現。
不准確理解:DI就是IOC的一種具體實現
那么在.net 平台,或者說c#開發使用的容器有哪些呢?
先看看微軟自己的玩意
1.Unity
這個是比較官方的,可以說是微軟比較早的,不斷更新也是使用多的。
2.ServiceCollection
需要引入Microsoft.Extensions.DependencyInjection
其實有這2個玩意的存在,主要是微軟的平台開發有幾個團隊,現在與我們開發相關的有原來的.net framework,.net core還有微軟的雲服務團隊,另外asp.net core也好像是專門開發的。所以幾個團隊都開發的有自己的東西。
當前情況下,微軟必定有些相同的東西,用在不同開發平台(或者是庫)。
再看看其它使用的
3.Autofac
根據了解的情況,我感覺這款應該是使用最多的,至於使用就不多說了,但是根據資料,並不是最強的,當然我沒有測試過.
方便易用。
4.Ninject
這也是一款使用較多,比較穩定的容器。
5.Spring.NET
使用並不多,來自Java的spring的轉換,當然是成熟穩定的
6.TinyIoC
簡單易用,小項目推薦
7.StructureMap
個人感覺是比較高效的
8.Simple Injector
簡單易用
總體講,沒有特別必要,還是使用大家都在使用的Autofac