Asp.Net Core 基礎知識--StartUp類

StartUp類簡介:
1)、什麼是Startup類?
StartUp類是DotNetCore環境下,用於配置應用所需要的服務和應用請求通道的一個基礎服務的類,它一般在應用程序啓動過程中,給應用程序配置主機時(Program類下的CreateWebHostBulider方法)調用.UseStartup()進行指定。
在這裏插入圖片描述
2)、StartUp類的作用:
Startup類具有兩個方法。ConfigureServices方法和Configure方法,這兩種方法的就是用於註冊及配置應用所需的服務,
2.1)、註冊服務
2.1.1)、那麼什麼是服務?
服務是一個提供應用功能的可重用組件,在ConfigureServices方法中進行註冊和配置,並且可以通過依賴注入(DI)或者ApplicationServices 在整個應用程序中使用。
例如 Asp.Net Core 的Mvc規則,還有數據庫,以及開發中所需要的各式各樣的服務,都需要在這裏進行註冊配置。
2.1.1.1)、值得一提的是,ConfigureServices方法裏面是自帶有依賴注入的,但是可能大家更習慣使用著名的AutoFac這個服務,那麼我們要做的首先有兩件事。
第一、將AutoFac服務註冊進來,不過就像上圖一樣,我一般喜歡直接在配置主機的時候直接使用主機的ConfiguerServices方法進行註冊(當然,那個方法名是我封裝後的,不要跟着寫,你會找不到方法的,還有關於在哪個方法裏面進行註冊,個人覺得沒啥區別,可能我現在太菜,沒有完全理解透 2019/12/26更新:見下文)
第二、將ConfigureServices方法的返回值改爲 IServiceProvider。
第三、開始進行依賴註冊的相關配置
2.2)、創建應用的請求處理管道
2.2.1)、何爲請求處理管道:
請求處理管道,是由一系列中間件組件組成的。例如,中間件可能處理對靜態文件的請求或者將HTTP請求重新定向到HTTPS。每個中間件在HttpContext上執行異步操作,然後調用管道中的下一個中間件或者終止請求。這時候我們就應該將配置處理管道請求的代碼添加到Stratup.Configure方法中,可通過中間件組件添加到IApplicationBuilder實例來配置請求通道。
在這裏插入圖片描述
2.2.2)、何爲中間件:
中間件是一種裝配到應用管道以處理HTTP請求和響應的軟件,每個組件都需要選擇是否將請求傳遞到管道中的下個組件,並且可以在下個組件前後執行工作。請求委託(Request delegates)用於構建請求管道,處理每個HTTP請求。通過Use、Run和Map拓展方法來配置委託。可將一個單獨的請求委託並行指定爲匿名方法(並行中間件),或者在可重用的類中對其進行定義,這些可重用的類和並行匿名方法就是中間件,也被稱爲中間組件,從上圖中我們可以看出,每個組件均可在下個委託執行的前後進行操作。這樣每個組件都可以在下個組件的執行前後去進行異常操作。
2.2.2)、添加到請求管道:
每個中間件,可通過Use拓展方法將中間件組件添加進請求管道中,例如MVC的 UseMvc()方法,請求管道中的每個中間件組件負責調用管道中的下一個組件,或者在適當的時候造成短路,當委託不將請求傳入下個委託時,他被稱爲“讓請求管道短路”,通常需要及時的短路,這樣可以避免許多不必要的工作,如果中間件添加到管道中並且位於進一步處理的中間件前時,它們仍需要處理next.Invoke語句後面的代碼。
2.2.3)、Use、Run和Map
2.2.3.1)、Use
Use主要作用是使鏈路進行連接或者短路。
2.2.3.2)、Run
Run主要是一種約定,某些中間件組件可在管道的末尾運行Run
在這裏插入圖片描述
效果圖:
在這裏插入圖片描述
(後補上的)
2.2.3.3)、Map
Map主要是用作約定來創建分支,Map基於給定請求路徑的匹配項來創建請求管道分支,
如果請求路徑以給定的路徑進行請求,則執行相應的分支
在這裏插入圖片描述
效果如下:
v1
在這裏插入圖片描述
v2
在這裏插入圖片描述
3)、Startup的ConfigureServer()和Confgure()方法與IWebHosst的ConfigureServer()和Confgure()
3.1)、上文說到Startup的ConfigureServer()和Confgure()方法一個的作用以及具體是幹什麼的,但是並沒有說的特別詳細,主要還是理解的淺,當然這次也不是多深,還是淺淺的瞭解一下
//下班了有時間再寫
突然來臨的結語:
其實這麼突然結束,主要是我也不知道還有啥可以寫的,主要是沒有深入的去寫(主要還是太菜)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章