当自托管 ASP.NET 核心时 - 它是否使用 http.sys(如果可用)?
When self-hosting ASP.NET Core - does it use http.sys if available?
http.sys
是 Windows 中的内核模式驱动程序,可大大加快传入 HTTP 请求的处理和路由。它是在 Windows NT 4 的日子里添加的,以便与 Apache 相比为当时新生的 IIS 提供基准提升。
对于那些不熟悉的人:它是一个劫持传入 HTTP 请求的组件(在端口 80 和 443 上,您也可以将其配置为监视其他端口)并根据其配置将它们路由到不同的用户态应用程序,请参阅 MSDN 了解更多信息详情:https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx
今天,如果您使用 IIS 来托管您的应用程序,您将利用 http.sys
。
但是,我找不到任何说明自托管 ASP.NET 核心应用程序是否会使用 http.sys
(如果存在)的信息。
虽然 Kestrel 不使用或不支持 http.sys(它还必须 运行 on Linux 而没有 http.sys),您可以使用 WebListener (also here, which uses http.sys and usage example here) 来实现这一点。但是,出于显而易见的原因,仅在 Windows 上。
与 Kestrel 不同,WebListener 被认为是生产就绪的,这意味着您可以使用它来托管面向 Internet 的应用程序。另一边的 Kestrel 还没有,所以在撰写本文时官方建议始终在反向代理(IIS、nginx 等)后面使用 Kestrel。
http.sys
是 Windows 中的内核模式驱动程序,可大大加快传入 HTTP 请求的处理和路由。它是在 Windows NT 4 的日子里添加的,以便与 Apache 相比为当时新生的 IIS 提供基准提升。
对于那些不熟悉的人:它是一个劫持传入 HTTP 请求的组件(在端口 80 和 443 上,您也可以将其配置为监视其他端口)并根据其配置将它们路由到不同的用户态应用程序,请参阅 MSDN 了解更多信息详情:https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx
今天,如果您使用 IIS 来托管您的应用程序,您将利用 http.sys
。
但是,我找不到任何说明自托管 ASP.NET 核心应用程序是否会使用 http.sys
(如果存在)的信息。
虽然 Kestrel 不使用或不支持 http.sys(它还必须 运行 on Linux 而没有 http.sys),您可以使用 WebListener (also here, which uses http.sys and usage example here) 来实现这一点。但是,出于显而易见的原因,仅在 Windows 上。
与 Kestrel 不同,WebListener 被认为是生产就绪的,这意味着您可以使用它来托管面向 Internet 的应用程序。另一边的 Kestrel 还没有,所以在撰写本文时官方建议始终在反向代理(IIS、nginx 等)后面使用 Kestrel。