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

时间:2016-08-31 11:24:58

标签: asp.net asp.net-core kestrel-http-server

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

3 个答案:

答案 0 :(得分:31)

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

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

WebListener 仅限Windows 用于ASP.NET Core的HTTP / Web服务器,允许您公开服务器 直接上网 ,无需使用IIS。 WebListener建立在Http.Sys(同样成熟的技术,也支持IIS&#39; HTTP Listener)之上,就像这样 功能丰富的 < em>提供针对各种攻击的保护

另一方面,

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

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

Weblistener用例:

enter image description here

红隼用例:

enter image description here

更新

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

Kestrel 1.x vs 2.x

来源:

  1. Docs.Microsoft.com Web server implementations in ASP.NET Core
  2. Docs.Microsoft.com WebListener web server implementation in ASP.NET Core

答案 1 :(得分:3)

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

enter image description here

答案 2 :(得分:3)

此处找到的ASP.NET 5文档(由Microsoft在2015年8月25日创建的 )列出了在其他答案中找到的图表(请参见右下角书页的第107页,但是第111页) (PDF):https://media.readthedocs.org/pdf/aspnet/theming/aspnet.pdf

如果您使用下列其中一项,

红隼通常会有更好的表现:

  • 与暴露于互联网的应用程序的反向代理结合使用的绝佳选择
  • 与私人虚拟网络(未暴露于互联网)上的其他内部应用程序连接的内部应用程序

WebListener 更安全,更慢,并且具有更多功能。它用于这些情况:

  • 将应用程序暴露给Internet,但无法使用IIS 需要更高的安全性并将服务器直接暴露给Internet。
  • 其他功能:列表项,Windows身份验证,端口共享,带SNI的HTTPS,基于TLS的HTTP / 2(Windows 10),直接文件传输,响应缓存