本教程會對基本的.Net Core 進行一個大概的且不會太深刻的講解, 在您看完本系列以後, 能基本甚至熟練的使用.Net Core進行Web開發, 感覺到.Net Core的魅力.html
本教程知識點大致分爲如下幾個階段數據庫
想必你們都知道ASP.Net Core MVC默認自帶了DI容器的, 咱們能夠很方便的進行使用, 來方便管理對象和生命週期, 那麼這一節我就會詳細講解服務註冊, 順便簡單講解一下管道, 讓你們知道了基本的MVC運行流程.瀏覽器
回顧一下上一節的內容, 咱們從配置文件中獲取了輸出的字符, 也介紹各個配置的 "優先級" (實際上是配置覆蓋), 那麼咱們這一節以服務的方式輸出這個字符串, 而後用過DI進行註冊服務, 快速瞭解服務註冊.安全
DI容器呢, 依賴接口, 因此咱們先新建一個接口, 就叫 IWelcome , 接口裏面定義個方法, 叫GetWelcomMsg, 而後再建個類, 實現這個接口, 這樣, 咱們的一個最基本的服務就作好了. 代碼結構和代碼以下圖 (我建了個文件夾, 存放這些服務):併發
代碼編寫完以後, 咱們嘗試在Configure方法裏面注入引用這個接口, 由於咱們獲取配置信息的時候也是直接在這個方法裏面注入使用的, 那咱們來試試, 代碼以下圖 : 性能
一切都很正常, 方法也能調用, 咱們跑起來試試看, 能不能正常使用. 單元測試
一點都不意外, 它報錯了, 報錯信息以下圖 : 學習
意思就是沒法解析IWelcome這個服務, 也是就沒法注入這個服務. 測試
那麼爲何 IConfiguration, IHostingEnvironment, IApplicationBuilder等等之類的接口, 咱們能直接注入使用呢, 那是ASP.Net Core MVC裏面的源包裏面, 已經自動爲咱們註冊好了這幾個服務, 咱們直接可使用. 咱們要使用自定義的服務或者組件, 須要咱們本身進行註冊.優化
說到自定義服務註冊, 就不得不說服務註冊的幾種方式, 或者說是幾種不一樣的註冊方法. 總共分爲三種, 也就是三個註冊服務的方法.
咱們看看 Startup 這個類, 會發現它裏面有個ConfigureServices方法, 看名字就知道, 它是配置服務用的, 有個IServiceCollection接口參數, 這個接口就是.Net Core默認提供的DI服務的接口管理對象, 咱們全部註冊的服務均可以經過這個接口進行管理或操做. 若是使用第三方包, 如Autofac另說, 這裏不介紹Autofac的使用.
那麼咱們就能夠經過IServiceCollection接口進行咱們自定義服務的註冊了, 上面提到了有三個註冊服務的方法, 分別是 :
1. AddSingleton (單例模式註冊服務, 也就是在整個應用程序中, 只會建立一個接口對象, 全部的請求都會使用這個接口對象, 可能會有併發問題)
2. AddTransient (管道機制註冊服務. 也是在每一個請求發生的時候, 都會建立一個接口對象, 給當前請求使用)
3. AddScoped (會話機制註冊服務. 也就是在當前會話中, 只會建立一個接口對象. 什麼是一個會話, 能夠簡單理解爲當前瀏覽器打開到關閉, 這個過程就是一整個會話的過程)
那麼這裏, 咱們先使用AddSingleton單例模式註冊服務, 代碼以下 :
services.AddSingleton<IWelcome, Welcome.Services.Welcome>();
上面提到的三個方法, 使用方式都同樣, 都是兩個泛型參數, 第一個泛型參數是接口, 第二個是泛型參數是接口實現類.
那麼再運行一個咱們的程序, 能夠看到瀏覽器正常輸出咱們的字符串了.
至於上面三個不一樣生命週期的註冊方法, 怎麼使用, 看服務的用途, 通常我推薦使用AddScoped註冊服務
到這裏, 咱們一個簡單的服務就從定義到實現到註冊到使用就完成了. 是否是很簡單呢.
下面咱們簡單講講ASP.Net Core MVC的管道
這裏我只會簡單講解ASP.Net Core MVC的管道運行流程, 不會講解從監聽端口到轉發到ASP.Net Core MVC裏面是怎麼實現的
好比咱們如今發起一個Get請求, 在MVC收到這個請求的時候, 咱們的管道流程就開始運行了, 它會最早觸發Logger這個中間件, 就是日誌中間件, 這個中間件裏面能夠獲取不少信息, 好比請求頭部信息, 參數信息等等, 甚至咱們能夠對這些信息進行修改. 這些信息也會在控制檯輸出, 若是用的是dotnet run命令運行這個MVC程序的話, 這裏不放截圖了, 大家能夠本身試試
在日誌中間件執行完以後, 就會執行其它的中間件, 若是咱們啓用了其它的中間件. 好比咱們啓用了身份驗證中間件, 那麼在日誌中間件執行完成以後, 就會執行身份驗證中間件, 進行身份驗證, 若是驗證成功了, 繼續下一步處理, 若是驗證失敗了, 就作其它處理, 好比重定向到登陸頁面等等.
在這一步執行完成以後, MVC管道就會進入路由匹配的過程. 若是匹配成了, 就正常返回HTML或JSON或XML數據等等, 若是匹配失敗了, 就404錯誤等等.
這就是ASP.Net Core MVC管道的一個基本流程, 其實裏面作的事情遠遠不止這些, 這裏就不作深刻的講解, 若是有須要, 自行學習. 由於講一個真正的管道機制, 一會兒也講不完. 這裏的目的只是要你們基本瞭解ASP.Net Core MVC的基本運行流程.
到這裏, 這一節的內容就結束了. 上面提到了中間件這個東西, 那下一節咱們就講究什麼是中間件, 怎麼使用中間件.
若是在使用.Net Core遇到任何問題, 都加羣進行討論, 羣號: 1羣: 225982985. 2羣: 726648662. 3羣: 654015377