上篇記錄了一下Net Core之所以跨平台的根本 -- Kestrel服務器
那么一個Http請求究竟是如何被處理的呢
瀏覽器中輸入一個要訪問的地址 => 然后經過DNS解析 => 拿到IP + Port =>IIS將請求解析為HttpContext => 交給Net FrameWork
瀏覽器中輸入一個要訪問的地址 => 然后經過DNS解析 => 拿到IP + Port =>IIS/Apache/Ngix 轉發 => Kestrel 監聽端口 解析為HttpContext =>請求轉發到代碼
在Net Core中 請求轉發到代碼之后 進入Program Main方法之后 Net Core 控制台程序會啟動一個Host主機 具體配置項在 CreateHostBuilder 方法里
在CreateHostBuilder 方法里完成對 Startup類的初始化
Startup類中 一般會有 構造函數,Configuartion(框架調用的給依賴注入容器配置服務實例) 和 Configure(配置http請求過程 中斷middleware 全部請求都會被該中間件處理 以前的流程全部失效 相比於framework功能級的層面 現在是全部請求的處理過程的請求級層面)
請求在configure一層一層逐個執行中間件 最后一層一層逐個返回 如下圖
總結起來就是 pay for what you use 而區別於之前的pay for all
這也是Net Core http管道處理模型的精髓
以上僅是本人個人體會與總結,如有錯誤之處,還望斧正