ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服務註冊和管道
語雀:
https://www.yuque.com/yuejiangliu/dotnet/olbl88
視頻地址:https://www.bilibili.com/video/av38392956/?p=3web
自定義接口對象獲取信息 如今不想從配置源裏面獲取信息,本身寫一個服務,首先弄一個接口叫作IWelcomeService
假設接口有這麼一個方法getMessage()
那麼不管是哪一個對象或者服務實現了這個接口,那麼我就能夠從實現了該接口的對象或者服務裏來獲取這個信息
把鼠標放在這,按Ctrl+.選擇第一條在新的文件裏面生成
而後這個接口就聲明到了這裏
這時候提示沒有定義這個GetMessage方法
仍是把鼠標放在這,Ctrl+.
x修改返回類型爲string,如今就定義完了
建立WelComeService實現該接口,而後在接口上Ctrl+.實現該接口
接口實現完了
返回這段字符串
把它移動到這個文件裏
如今就是一個單獨的類了
如今接口有個實現了該接口的類也有了
這裏也調用了GetMessage()的方法
打開命令行
dotnet run 直接報錯了
主要的錯誤信息:意思就是沒法找到實現了IWelcome的接口的對象
須要註冊一個服務,對應着這個IWelcomeService
下面這兩個服務都已經註冊過了 是asp.net core 默認的配置,IWelcomeService是咱們本身定義的接口,這個接口尚未進行註冊
ConfigureServices方法就是用來註冊服務的
這是一些預先設置的註冊的服務的一些形式。
IWelcomeService是咱們自定義的,有這麼這幾種方式註冊。
下面使用單例模式進行註冊的形式。在整個web項目的生命週期裏,最多隻會出現一個WelcomeService的實例
AddTransient:每次請求,每次有其餘的類或者方法請求IWelcomeService的時候,它都創建一個新的WelcomeService的實例,它
是很是輕量級的
AddScoped:,每次http請求,一次web請求就會生成一次實例,在這個web請求期間,若是屢次請求,那麼他仍是使用同一個WelcomeService實例
這裏咱們使用到單例模式,再次運行項目
asp.net
中間件決定如何處理這個請求,中間件其實就是一個對象,每一箇中間件的角色和功能都不同,每一箇中間件功能都侷限在特定的領域內,
因此咱們整個web應用,將會使用不少箇中間件
管道是雙向設計的,一個請求進入管道會按照我添加的順序依次進入中間件,我首先添加的是Logger,那麼請求就先通過logger,下一個添加的是受權中間件,就會通過受權的中間件,最後是路由的,就會走路由的中間件
假設路由中間價產生了一個響應,那麼這個響應就原路返回,路由--受權--logger和進入的時候路徑是相反的
咱們須要按照特性的順序來設置咱們的中間件組成咱們的web應用的功能
ide