好久沒寫博客了,打算把學習ASP.NET.Core的知識點記錄下來。
.NETCore是微軟推薦的新的框架,那么我們要明白,我們是基於微軟專家的基礎上去學習,微軟專家主要做了什么?
微軟專家定義了一套規范的接口,來實現客戶端請求到服務器返回。我們用他們的,就要清楚這一點。進入正題:
依賴注入是什么?網上介紹的文章很多不多說,這么做主要主要是為了解耦合,使我們開發出可維護,可測試的代碼和程序,說白了就是定義了一套接口,我們寫一個類去繼承這個接口,那么這個類就需要實現這個接口的方法(功能和屬性),這就是依賴注入。
中間件是什么?再講之前,我先問你幾個基本問題?
1).Net是面向對象的,那么面向對象是什么?
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。聽上去就是這樣的,我的理解
是描述一個對象的解決問題的步驟中的行為和具備的屬性。這個對象有一些屬性和方法,就具有封裝,繼承,多態,抽象的特征。大學學習程序的時候,我是左耳進右耳出的,理解了
就過了,沒有去深究,打好基礎很重要。這里我們就拿繼承來說說:
繼承:C#中繼承只支持單繼承(既繼承一個父類),但卻支持多個接口。這點和java差不多(大學學的java,忘記差不多了)。為什么我要講繼承,因為我們用微軟的接口,就是一個繼承呀。我們去寫類的時候要記住:在C#中可以通過sealed關鍵字來申明一個不可被繼承的類,C#將在編譯階段保證這一機制。所以我們寫一個類去繼承微軟定義的接口的時候,就可以實現微軟給我們的功能 了。這里有一點很重要,繼承后的執行順序問題,請看下面的例子:
調試運行,可以看到派生順序是:Base → A → B → C,也驗證了剛剛我們所提到的構造順序。
上述代碼的整個構造順序如下圖所示:
理解就ok。
2)什么是委托?
委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。我的理解就是動態的調用方法。我委托一個人去做一件事,也就是委托。
這就是委托,這里調用就是Invoke,當然也可以有異步的調用。
什么是中間件?用來處理發送到Pipeline中的請求,是實現應用程序委托的組件。這就是中間件。
那么我們什么時候知道請求過來呀,就是因為不知道,所以我們需要委托,當請求過來的時候,直接Invoke調用就ok了,這個委托就叫做RequestDelegate。
實現方法就是:public async Task Invoke(HttpContext context){}來實現的調用。那么在中間件實例化,可以帶上日記,注入的服務等等。
如果有錯誤,請指出,謝謝。