位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C# > 問(wèn)題詳情

C# IIS 和 Kestrel

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-12-10

    直到現(xiàn)在,當(dāng)開(kāi)發(fā)人員談到ASP.NET時(shí),都會(huì)想到,Web應(yīng)用程序?qū)⑦\(yùn)行在Microsoft Windows服務(wù)器的Internet Information Services (IIS)中;I!S是Microsoft開(kāi)發(fā)的—Web服務(wù)器,可響應(yīng)客戶(hù)端發(fā)出的HTTP和 HTTPS請(qǐng)求。但因?yàn)镮IS不能在Linux或macOS上運(yùn)行,所以需要有一種方法讓HS將請(qǐng)求發(fā)送給能在那些操作系統(tǒng)上運(yùn)行的Web服務(wù)器。這個(gè)問(wèn)題的答案是使用Kestrel,這是ASP.NETCore項(xiàng)目中包含的一個(gè)新的跨平臺(tái)Web服務(wù)器。

    如圖所示,當(dāng)配置Kestrel與IIS —同運(yùn)行時(shí),客戶(hù)端的HTTP請(qǐng)求將被轉(zhuǎn)發(fā)給Kestrel Web服務(wù)器。然后,Kestrel通過(guò)傳遞HttpContext類(lèi)與ASP.NET Core源代碼交互,HttpContext類(lèi)包含關(guān)于HTTP請(qǐng)求的信息,如會(huì)話管理信息、查詢(xún)字符串、區(qū)域性信息、客戶(hù)端證書(shū)等。

image.png

    除IIS,Apache和Nginx也是可供使用的Web服務(wù)器,它們只在目標(biāo)操作系統(tǒng)(如Windows、Linux或 macOS)中運(yùn)行。ASP.NET Core在運(yùn)行時(shí),可以沒(méi)有任何特定于操作系統(tǒng)的Web服務(wù)器,因?yàn)镵estrel就是一個(gè)Web服務(wù)器。以這種方式運(yùn)行時(shí),常稱(chēng)為自托管,因?yàn)閃eb應(yīng)用程序和必要的組件包含在一個(gè)專(zhuān)用容器中。通過(guò)這種方式將Web應(yīng)用程序捆綁在一起,使得通過(guò)XCOPY等部署Web應(yīng)用程序變得很容易。而且,可移植性是云優(yōu)化的程序的一個(gè)基本特征。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部