WebListener vs Kestrel:为什么选择一个而不是另一个?优点缺点?

dok*_*ker 24 asp.net kestrel-http-server asp.net-core

两个独立但相似的服务器的原因是什么?有什么区别?我可以在码头工具中运行吗?两者都支持相同的东西,比如所有身份验证类型?

Shi*_*iva 37

Kestrel vs Weblistener - 我已经强调了下面的根本区别.

(单词是微软的,我只是为了简洁和清晰而编辑它.请参阅底部链接的来源).


WebListener是用于ASP.NET Core 的仅限Windows的 HTTP/Web服务器,它允许您直接将服务器公开到Internet,而无需使用IIS.WebListener构建于Http.Sys之上(同样成熟的技术也支持IIS的HTTP侦听器),因为它非常丰富,提供针对各种攻击的保护.

另一方面,Kestrel是用于ASP.NET Core 的跨平台 Web服务器,旨在在代理(例如IIS或Nginx)后面运行,不应直接面向Internet部署.红隼相对较新,并没有全面的防御攻击.它也不像 WebListener 那样功能丰富,并且具有超时限制,大小限制和并发用户限制.


从本质上讲,选择归结为Web应用程序的部署方案.

Weblistener用例:

在此输入图像描述

红隼用例:

在此输入图像描述

更新:

出于安全原因,Kestrel以前总是需要使用具有边缘部署的反向代理(暴露于来自Internet的流量).在ASP.Net Core 2.x中使用Kestrel不再是这种情况.查看文档以获取更多信息.Kestrel Web服务器文档

Kestrel 1.x vs 2.x

资料来源:

  1. Docs.Microsoft.com ASP.NET Core中的Web服务器实现
  2. Docs.Microsoft.com ASP.NET Core中的WebListener Web服务器实现


div*_*481 4

以下比较将帮助您选择哪一个更好

在此输入图像描述

  • 您能注明该表的来源吗? (5认同)