ASP.NETCore的Kestrel服務器

什麼是Kestrel服務器

 

Kestrel是開源的(GitHub提供的源代碼),事件驅動的異步I / O服務器,用於在任何平臺上託管ASP.NET應用程序。這是一個監聽服務器和一個命令行界面。您將偵聽服務器安裝在Windows或Linux服務器上,並在計算機上安裝命令行界面(安裝.netcore會自動一整套安裝)。(Kestrel發音: ['kestr(ə)l])node

它是與ASP.NET Core一塊兒由微軟推出的。全部ASP.NET Core應用程序都使用新的MVC框架和Kestrel Web服務器。這些新的應用程序能夠運行在完整的.NET Framework或.NET Core上。
nginx

Kestrel Web服務器的概述

Kestrel被認爲是較新的ASP.NET應用程序的首選Web服務器(請參閱這篇文章與IIS比較, why you need both)。它j機遇 libuv library,與node.js使用的相同。Libuv支持事件驅動的編程風格。它的一些核心工具包括:git

  • 非阻塞網絡支持
  • 異步文件系統訪問
  • 計時器
  • 子進程

它容許ASP.NET Core應用程序在其餘跨平臺的Web服務器(如Jexus,Nginx和Apache)上輕鬆運行,而無需解決不一樣的啓動配置。經過使用Kestrel做爲進程內服務器, 即便有跨平臺支持,應用程序也將具備一致的處理(Startup (Main()Startup.ConfigireServices()Startup.Configure())github

 

Kestrel Web服務器的工做原理

應用程序一般是爲了響應人的行爲而編寫的。使用事件驅動的編程,有一個循環來監聽事件。而後觸發一個回調函數。爲了減小SYS調用的數量,全部其餘工做都在標準.NET工做線程的託管代碼中執行。web

Kestrel提供了一個事件循環和基於回調的I / O通知。Libuv管理從操做系統收集和監視事件。此外,用戶能夠在事件發生時註冊回調。因此,Kestrel使用libuv進行I / O工做,並支持運行多個事件循環。編程

因爲它輕巧,Kestrel不容許你進行SSL termination,URL重寫或GZip壓縮,可是相同的輕量級設計使他比起其餘服務器會更快。實際上,它比靜態和純文本操做的node.js快6倍。安全

Kestrel的好處

Kestrel支持.NET Core支持的全部平臺和版本。此外,它默認包含的ASP.NET Core新項目模板中,能夠提供更好的請求處理的性能在Visual Studio中建立新項目時,項目會自動配置爲在Kestrel中運行。服務器

如前所述,這不是一個功能齊全的網絡服務器,但這正是爲何它很快。若是您以爲須要速度,Kestrel就是答案 - 特別是由於它被設計用於ASP.NETCore的生產。網絡

你能夠作的是在一個功能更全面的網絡服務器(如IIS或NGNIX)以後運行它您可使用HttpPlatformHandler在IIS 後面運行它,或者在Visual Studio 後面使用HttpPlatformHandler在IIS Express 後面運行它並且,您須要在ASP.NET Core項目中支持它,以便開發人員能夠在任何支持的平臺上方便地運行它們。框架

如今,即便您不是跨平臺的,也能夠直接從web服務器命令行上運行ASP.NET。

因爲Kestrel不是一個全功能的Web服務器,您應該讓web程序在在IIS或NGNIX 以後運行(IIS;Jexus或者NGINX代理web程序,提供轉發到Kestrel的形式工做)它旨在使ASP.NET儘量快,但其管理安全性和提供靜態文件的能力有限。若是您使用的是Kestrel做爲web服務器的ASP.NET Core,則 能夠利用 Prefix來實現強大的代碼分析功能。

 What is Kestrel Web Server? How It Works, Benefits, and More 

 

 Kestrel   官網介紹與簡單使用👉快點我,快點我

相關文章
相關標籤/搜索