依賴注入和服務注冊作為.Net Core最核心的模塊 當然需要記錄一下 個人學習和理解
1.依賴注入 DI
為什么需要DI,目的是什么?
之所以需要DI,是因為我們需要實現控制反轉 (IOC) 。 (DI) 軟件設計模式,這是一種在類及其依賴關系之間實現控制反轉 (IoC) 的技術.他是作為實現IOC的框架和方式
為什么需要控制反轉(IOC),目的是什么?
為了項目的高度可維護,核心是為了項目的解耦合
之前我們使用一個對象的時候,需要一步步的去new一個對象,如:我們獲取西湖這個對象 就去new一個 中國-->浙江省-->杭州市-->西湖。 那么這個西湖就依賴於杭州市依賴於浙江省依賴於中國。。而IOC的目的就是我可以直接獲取西湖這個對象,也不用去new它,也不用去管它到底跟誰有依賴關系,繼承哪個父類,直接拿到這個對象,所有的依賴,都會被IOC容器幫我在內部生成的時候就已經實例好了。
1首先聲明一個Model類,2接着增加一個類的實體上下文對象,3然后去服務注冊這個上下文,4最后就是調用了 對應以下四張圖片
2.服務注冊
服務注冊是項目框架的生成和實現的業務需求的實現。(有內置的 和 自定義的)
服務注冊是在Startup類的ConfigureServices下的。項目在創建(Build)的時候就執行
內置的服務,比如建立一個MVC項目 或者一個WebApi項目。那么在生成項目框架的時候,DIE自動為我們在ConfigureServices里添加了像services.AddControllers()控制器 services.AddRazorPages() 視圖模板 services.AddMvc()等等,這些都是內置的服務,作為的項目的架構。。
自定義的服務:注冊自定義服務的時候必須選擇一個生存周期(.Net Core有內置的三種生命周期 瞬時、單例、作用域。內置的服務其實也有聲明周期,只是已經配置封裝好了,所以看上去是一個services.AddMvc()等等 )
實例:如支付服務 Pay 有兩種方式:支付寶、微信
1首先創建一個服務接口pay,兩種實現方式(微信 支付寶), 2選擇生命周期方式,注冊服務,3具體的服務調用 對應以下圖