簡體   English   中英

HTTP.sys 與 Kestrel:為什么選擇其中之一? 優點缺點?

[英]HTTP.sys vs Kestrel: Why choose one over the other? Pros Cons?

兩個獨立但相似的服務器的原因是什么? 有什么區別? 我可以在 docker 中同時運行嗎? 是否都支持相同的東西,比如所有的身份驗證類型?

Kestrel 與 HTTP.sys - 我在下面強調了基本差異。

(這些詞是微軟的,我只是為了簡潔和清晰起見對其進行了編輯。請參閱底部鏈接的來源)。


更新:

出於安全原因,Kestrel 以前總是需要在邊緣部署(暴露於來自 Internet 的流量)中使用反向代理。 使用 ASP.Net Core 2.x 中的 Kestrel,情況不再如此。 查看文檔以獲取更多信息。 Kestrel Web 服務器文檔

紅隼 1.x 與 2.x

Weblistener 在 ASP.NET Core 2.0 中更名為 HTTP.sys

資料來源:

  1. ASP.NET Core 中的Docs.Microsoft.com Web 服務器實現
  2. Docs.Microsoft.com HTTP.sys Web 服務器在 ASP.NET Core 中的實現

HTTP.sys是用於 ASP.NET Core的僅限 Windows 的HTTP/Web 服務器,它允許您將服務器直接公開到 Internet,而無需使用 IIS。 HTTP.sys 建立在 Http.Sys(同樣成熟的技術,也支持 IIS 的 HTTP 偵聽器)之上,因此功能非常豐富,提供對各種攻擊的保護

另一方面, Kestrel是 ASP.NET Core 的跨平台Web 服務器,旨在在代理(例如 IIS 或 Nginx)之后運行,不應直接面向 Internet 部署 Kestrel 相對較新,沒有完整的攻擊防御措施 它也沒有HTTP.sys那樣豐富的功能,並帶有超時限制、大小限制和並發用戶限制。


本質上,選擇歸結為您的 Web 應用程序的部署方案。

HTTP.sys 用例:

在此處輸入圖片說明

紅隼用例:

在此處輸入圖片說明

以下比較將幫助您選擇哪個更好

在此處輸入圖片說明

此處找到的 ASP.NET 5 文檔(由 Microsoft 於 2015 年 8 月 25 日創建)列出了在另一個答案中找到的圖表(參見右下書頁的第 107 頁,但 PDF 的第 111 頁): https://media .readthedocs.org/pdf/aspnet/theming/aspnet.pdf

如果您用於以下其中一項, Kestrel通常具有更好的性能:

  • 如果與暴露於 Internet 的應用程序的反向代理結合使用,則是不錯的選擇
  • 內部應用程序與私有虛擬網絡上的其他內部應用程序連接(不暴露於 Internet)

WebListener更安全、更慢,並且具有更多功能。 它用於以下情況:

  • 將應用程序暴露給 Internet 但不能使用 IIS 需要更高的安全性並將服務器直接暴露給 Internet。
  • 附加功能:列表項、Windows 身份驗證、端口共享、HTTPS with SNI、HTTP/2 over TLS (Windows 10)、直接文件傳輸、響應緩存

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM