C# IIS 和 Kestrel
直到現(xiàn)在,當(dāng)開發(fā)人員談到ASP.NET時,都會想到,Web應(yīng)用程序?qū)⑦\(yùn)行在Microsoft Windows服務(wù)器的Internet Information Services (IIS)中;I!S是Microsoft開發(fā)的—Web服務(wù)器,可響應(yīng)客戶端發(fā)出的HTTP和 HTTPS請求。但因為IIS不能在Linux或macOS上運(yùn)行,所以需要有一種方法讓HS將請求發(fā)送給能在那些操作系統(tǒng)上運(yùn)行的Web服務(wù)器。這個問題的答案是使用Kestrel,這是ASP.NETCore項目中包含的一個新的跨平臺Web服務(wù)器。
如圖所示,當(dāng)配置Kestrel與IIS —同運(yùn)行時,客戶端的HTTP請求將被轉(zhuǎn)發(fā)給Kestrel Web服務(wù)器。然后,Kestrel通過傳遞HttpContext類與ASP.NET Core源代碼交互,HttpContext類包含關(guān)于HTTP請求的信息,如會話管理信息、查詢字符串、區(qū)域性信息、客戶端證書等。
除IIS,Apache和Nginx也是可供使用的Web服務(wù)器,它們只在目標(biāo)操作系統(tǒng)(如Windows、Linux或 macOS)中運(yùn)行。ASP.NET Core在運(yùn)行時,可以沒有任何特定于操作系統(tǒng)的Web服務(wù)器,因為Kestrel就是一個Web服務(wù)器。以這種方式運(yùn)行時,常稱為自托管,因為Web應(yīng)用程序和必要的組件包含在一個專用容器中。通過這種方式將Web應(yīng)用程序捆綁在一起,使得通過XCOPY等部署Web應(yīng)用程序變得很容易。而且,可移植性是云優(yōu)化的程序的一個基本特征。
點擊加載更多評論>>