ASP.NETCore的Kestrel服务器
什么是Kestrel服務(wù)器
?
Kestrel是開源的(GitHub提供的源代碼),事件驅(qū)動(dòng)的異步I / O服務(wù)器,用于在任何平臺(tái)上托管ASP.NET應(yīng)用程序。這是一個(gè)監(jiān)聽服務(wù)器和一個(gè)命令行界面。您將偵聽服務(wù)器安裝在Windows或Linux服務(wù)器上,并在計(jì)算機(jī)上安裝命令行界面(安裝.netcore會(huì)自動(dòng)一整套安裝)。(Kestrel發(fā)音:?['kestr(?)l])
它是與ASP.NET Core一起由微軟推出的。所有ASP.NET Core應(yīng)用程序都使用新的MVC框架和Kestrel Web服務(wù)器。這些新的應(yīng)用程序可以運(yùn)行在完整的.NET Framework或.NET Core上。
Kestrel Web服務(wù)器的概述
Kestrel被認(rèn)為是較新的ASP.NET應(yīng)用程序的首選Web服務(wù)器(請(qǐng)參閱這篇文章與IIS比較,?why you need both)。它j機(jī)遇?libuv library,與node.js使用的庫(kù)相同。Libuv支持事件驅(qū)動(dòng)的編程風(fēng)格。它的一些核心工具包括:
非阻塞網(wǎng)絡(luò)支持
異步文件系統(tǒng)訪問
計(jì)時(shí)器
子進(jìn)程
它允許ASP.NET Core應(yīng)用程序在其他跨平臺(tái)的Web服務(wù)器(如Jexus,Nginx和Apache)上輕松運(yùn)行,而無(wú)需解決不同的啟動(dòng)配置。通過(guò)使用Kestrel作為進(jìn)程內(nèi)服務(wù)器,?即使有跨平臺(tái)支持,應(yīng)用程序也將具有一致的處理(Startup (Main(),?Startup.ConfigireServices(),?Startup.Configure())
?
Kestrel Web服務(wù)器的工作原理
應(yīng)用程序通常是為了響應(yīng)人的行為而編寫的。使用事件驅(qū)動(dòng)的編程,有一個(gè)循環(huán)來(lái)監(jiān)聽事件。然后觸發(fā)一個(gè)回調(diào)函數(shù)。為了減少SYS調(diào)用的數(shù)量,所有其他工作都在標(biāo)準(zhǔn).NET工作線程的托管代碼中執(zhí)行。
Kestrel提供了一個(gè)事件循環(huán)和基于回調(diào)的I / O通知。Libuv管理從操作系統(tǒng)收集和監(jiān)視事件。此外,用戶可以在事件發(fā)生時(shí)注冊(cè)回調(diào)。所以,Kestrel使用libuv進(jìn)行I / O工作,并支持運(yùn)行多個(gè)事件循環(huán)。
由于它輕巧,Kestrel不允許你進(jìn)行SSL termination,URL重寫或GZip壓縮,但是相同的輕量級(jí)設(shè)計(jì)使他比起其他服務(wù)器會(huì)更快。實(shí)際上,它比靜態(tài)和純文本操作的node.js快6倍。
Kestrel的好處
Kestrel支持.NET Core支持的所有平臺(tái)和版本。此外,它默認(rèn)包含的ASP.NET Core新項(xiàng)目模板中,可以提供更好的請(qǐng)求處理的性能。在Visual Studio中創(chuàng)建新項(xiàng)目時(shí),項(xiàng)目會(huì)自動(dòng)配置為在Kestrel中運(yùn)行。
如前所述,這不是一個(gè)功能齊全的網(wǎng)絡(luò)服務(wù)器,但這正是為什么它很快。如果您覺得需要速度,Kestrel就是答案 - 特別是因?yàn)樗辉O(shè)計(jì)用于ASP.NETCore的生產(chǎn)。
你可以做的是在一個(gè)功能更全面的網(wǎng)絡(luò)服務(wù)器(如IIS或NGNIX)之后運(yùn)行它。您可以使用HttpPlatformHandler在IIS?后面運(yùn)行它,或者在Visual Studio?后面使用HttpPlatformHandler在IIS Express?后面運(yùn)行它。而且,您需要在ASP.NET Core項(xiàng)目中支持它,以便開發(fā)人員可以在任何支持的平臺(tái)上方便地運(yùn)行它們。
現(xiàn)在,即使您不是跨平臺(tái)的,也可以直接從web服務(wù)器命令行上運(yùn)行ASP.NET。
由于Kestrel不是一個(gè)全功能的Web服務(wù)器,您應(yīng)該讓web程序在在IIS或NGNIX?之后運(yùn)行(IIS;Jexus或者NGINX代理web程序,提供轉(zhuǎn)發(fā)到Kestrel的形式工作)。它旨在使ASP.NET盡可能快,但其管理安全性和提供靜態(tài)文件的能力有限。如果您使用的是Kestrel作為web服務(wù)器的ASP.NET Core,則 可以利用?Prefix來(lái)實(shí)現(xiàn)強(qiáng)大的代碼分析功能。
原文地址:https://www.cnblogs.com/xiaoliangge/p/8387772.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的ASP.NETCore的Kestrel服务器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core Razor页面
- 下一篇: asp.net ajax控件工具集 Au