依賴注入(DI)
將類別與類別間,搭配介面(interface)的形式進行注入,讓程式可以更靈活的抽換,有較高的變換彈性。達到控制反轉的效果。
控制反轉(IoC)
一種程式設計方式,把功能拆成介面與實作,在使用時才來決定這個介面要使用哪一個實作方式,降低程式碼靈活性不足的情形。
假設程式架構如下
介面IOutputService有方法Write()
類別OutputService繼承IOutputService,並實作Write()方法
類別Application注入介面IOutputService,執行Write()方法
類別Program呼叫Application來輸出內容
執行後顯示
加入Auofac
NuGet下載Auofac
註冊Component和Service
調整類別Program的程式碼
註冊完後執行,就會看到一樣的輸出內容。
RegisterAssemblyTypes
在註冊Component和Service時,可以使用SACN的方式大量註冊。
BeginLifetimeScope
為了避免Autofac新建立完物件,沒有釋放掉而造成記憶體爆炸,可以使用使用Using和BeginLifetimeScope(),建立的物件在Using結尾都會自動被釋放。
後記
可將註冊Component和Service的程式碼另外寫在其他Class(假設類別命名為AutofacConfig)中,再到Global.asax中註冊。
這樣未來在抽換介面與實作時,只要將AutofacConfig裡的註冊做調整即可。