Autofac 快速入门
Autofac 是 .NET 下的一個開源 Ioc 容器的實現庫,雖然實際上系統自帶有一個 Microsoft.Extensions.DependencyInjection,已經提供了基礎的依賴注入的能力。但是我發現很多人喜歡用 Autofac,因為這個 Ioc 容器提供的功能更多更加強大。
首先簡單介紹一下控制反轉,依賴注入,雖然這個應該網上有很多文章都有講過,但還是介紹一下自己的看法(不保證是對的)。
傳統的面向過程開發的思維模式是由一個個的過程對數據進行疊加的操作,這段數據在內存中不斷的變化,然后被 IO 輸出。而面向對象開發的思維模型是在一個對象群集中,由一個靠近邊界的對象接受來自邊界外的消息以后,該對象 A 發現處理該消息還需要進行其他的操作,于是 A 傳遞一個新的消息給對象 B,然后 B 傳遞新消息傳給 C 。。。可能一直延續多次,直到這個消息鏈條一直被處理完成。
然而這樣就存在一個問題,由誰來構建這個群集中的對象,并保證他們能夠正確的創建和消亡。最簡單的方法就是由需要他的對象自己創建,大多數時候我們就是這樣做的,加入構造對象 A 需要 B 的實例,那么就創建 B 的實例并將 B 的實例傳遞給A 的構造函數,但是當對象間的依賴關系變得復雜以后,靠手動創建對象將是一件非常麻煩的事情。原因在于你假如你依賴 3 個對象,而這三個對象的創建又依賴于其他的對象,那么這個依賴關系的鏈條將變得非常的長。
即使你能夠通過一些幫助的函數來抽象出部分重復的依賴關系的準備過程。但是還有一個問題沒有解決,那就是過于復雜的耦合問題,因為所有的依賴關系都被硬編碼到了源代碼當中,當你想要更改的的的時候的時候幾乎是不可能的,例如本質上 A 依賴于 B 的原因是因為他需要一個能夠處理 Print 消息的組件。
前面說的由依賴者自己準備被依賴者的反面就是控制反轉,而依賴由外部提供給依賴者局勢依賴注入。或者可以說,他倆沒區別,茴香豆的五種寫法,客制化/定制化,字兒有區別,意義沒有。
實現 DI 或者說 Ioc 由兩種方法:
一般認為定位器模式是反模式。
前面提到 DI 容器實際上主要功能只有一個就是依賴的管理,但是問題在于怎么管理。
Autofac 提出了一些概念:
// TODO API 介紹
總結
以上是生活随笔為你收集整理的Autofac 快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Autofac中的AsSelf()作用
- 下一篇: slqmf刀模工具_SLQMF刀模软件下