Asp.net core實戰6: 新增你的配置資訊
阿新 • • 發佈:2018-11-19
1.依賴注入及服務註冊
微軟也採用了叫做DI依賴注入或稱作IOC控制反轉的東西進行解耦。基本上解決了不同服務之間的過分侵入性設計,通過依賴注入實現不同服務之間的解耦,只關注自己那部分的功能實現,而不是過多的考慮依賴問題。
你需要將你所需使用的Service(簡單地說就是一個模組的功能,不管是類庫也好,一個類也好)註冊到Container,這樣呢,Container就知道有你這個模組的存在了。別人想用你這個模組的時候,直接來Container裡取就好了,就不會再出現在類裡面出現多次new 操作了。
例如,你要註冊一下MVC功能:
2.MVC管道處理
MVC管道是有先後順序的,前一箇中間件優先處理請求,並有權決定是否繼續傳遞給下一個中介軟體繼續處理請求。所以,一般日誌,身份驗證都會放到前面優先執行。
IHostingEnvironment是一個執行託管的環境,Development是開發時,Production是生產環境。他們配置了一些異常處理資訊。
UserStaticsFiles適用於處理靜態檔案,這個為什麼放到前面呢?因為靜態檔案再通過MVC管道處理的話會降低效能,優先處理就好了。直接返回檔案。
MVC中介軟體就是處理Request的常規步驟了,它會根據路由對映到相關的Controller或者具體的Action方法上去處理請求。
下圖是一個靜態檔案請求的流程:
反向代理接受請求轉發到Asp.net core應用,通過Kestrel傳給中介軟體進行處理,中介軟體通過異常處理器發現沒有異常,順利傳送到靜態檔案處理中介軟體,靜態檔案直接返回,短路了HTTP請求,不再傳遞給MVC模組,直接原路返回響應。