ASP.NET Core服务器综述
ASP.NET Core應(yīng)用通過一個進(jìn)程內(nèi)的HTTP服務(wù)器實例實現(xiàn)運行,這個服務(wù)器實例偵聽HTTP請求并將請求作為組成HttpContext的一組請求功能集暴露給我們的應(yīng)用程序。
ASP.NET Core搭載兩個服務(wù)器實現(xiàn):
Kestrel是一個基于libuv的跨平臺HTTP服務(wù)器,libuv是一個跨平臺的異步I/O庫
WebListener是一個基于HTTP.SYS內(nèi)核驅(qū)動的“Windows專用”HTTP服務(wù)器
Kestrel
Kestrel是包含在ASP.NET Core新項目模板中默認(rèn)的web服務(wù)器。如果你的應(yīng)用只接收來自內(nèi)部網(wǎng)絡(luò)的請求,你可以只使用Kestrel本身。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 965px; height: 173px;">
如果你將你的應(yīng)用部署在公共網(wǎng)絡(luò)上,我們建議你使用IIS,Nginx或者Apache作為反向代理服務(wù)器。一個反向代理服務(wù)器接收來自網(wǎng)絡(luò)的HTTP請求并且在經(jīng)過一些初步處理后將請求傳遞到Kestrel服務(wù)器。過程如下圖所示。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">
對edge deployments(從公共網(wǎng)絡(luò)上接觸到流量的部署方式)使用反向代理最重要的一個原因就是安全性。因為Kestrel相對較新,對抵御安全攻擊至今還沒有一個完整的功能補充。安全性處理包括但不限于適當(dāng)?shù)某瑫r,大小的限制,以及并發(fā)連接限制等問題。有關(guān)何時使用Kestrel與反向代理的更多信息,請參見Kestrel。
IIS with Kestrel
當(dāng)你使用IIS或者IIS Express作為對ASP.NET Core的反向代理時,ASP.NET Core應(yīng)用將運行在由該IIS工作進(jìn)程分離出的一個進(jìn)程中。在該IIS進(jìn)程中,存在著一個特殊的IIS模塊,它被用來協(xié)調(diào)反向代理的關(guān)系。它就是ASP.NET Core模塊。ASP.NET Core模塊的主要功能包括啟動ASP.NET Core應(yīng)用,當(dāng)應(yīng)用崩潰時處理重啟,向應(yīng)用傳送HTTP流量。更多的信息,請參考ASP.NET Core Module。
Nginx with Kestrel
有關(guān)如何在Linux使用Nginx作為對Kestrel的反向代理服務(wù)器的更多信息,請參考Publish to a Linux Production Environment。
Apache with Kestrel
有關(guān)如何在Linux使用Apache作為對Kestrel的反向代理服務(wù)器的更多信息,請參考Using Apache Web Server as a reverse proxy。
Jexus with Kestrel
有關(guān)如何在Linux使用Jexus作為對Kestrel的轉(zhuǎn)發(fā)服務(wù)器的更多信息,請參考?Jexus 5.8.2 正式發(fā)布為Asp.Net Core進(jìn)入生產(chǎn)環(huán)境提供平臺支持
WebListener
如果你在Windows上運行你的ASP.NET Core應(yīng)用,你可以會遇到以下場景——你既想要在公共網(wǎng)絡(luò)上部署你的應(yīng)用,又不能使用IIS,這時,WebListener會是一個可供替代的選擇。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">
當(dāng)你只想要在內(nèi)網(wǎng)中部署你的應(yīng)用時,WebListener可以被用來代替Kestrel,特別是當(dāng)你需要Weblistener服務(wù)器支持功能中的某項而Kestrel恰好不支持的時候。
frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 658px; height: 167px;">
對于內(nèi)部網(wǎng)絡(luò)場景,為了能達(dá)到最好的性能表現(xiàn),我們通常推薦Kestrel服務(wù)器,但是在另一些場景中,你可以想要使用某項僅WebListener支持的功能。關(guān)于WebListener功能的更多信息,請參考WebListener。
ASP.NET Core 服務(wù)器基礎(chǔ)組件說明
IApplicationBuilder在Startup類中的Configure方法暴露了IFeatureCollection類的ServerFeatures屬性。Kestrel和WebListener服務(wù)器都只提供了一個單一的功能,IServerAddressesFeature,但是不同的服務(wù)器實現(xiàn)可能會顯示額外的功能。
IServerAddressesFeature可以用來找出哪些服務(wù)器實例端口在運行時被綁定。
ServerFeatures?的注釋為“Gets the set of HTTP features the application's server providers”。
自定義服務(wù)器
你可以創(chuàng)建自定義服務(wù)器實現(xiàn)以用來替代Kestrel或者WebListener。Open Web Interface for .NET(OWIN) guide?說明了怎么去實現(xiàn)一個Nowin-based?IServer。你可以自由地實現(xiàn)你的應(yīng)用所需的功能接口,但至少必須支持IHttpRequestFeature和IHttpRequestFeature接口。
原文地址:http://www.cnblogs.com/Wddpct/p/6123644.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core服务器综述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core WebList
- 下一篇: .NET Core New csproj