diff --git a/aspnetcore/fundamentals/servers/index.md b/aspnetcore/fundamentals/servers/index.md index 8cc0b8f10c..c565c9d576 100644 --- a/aspnetcore/fundamentals/servers/index.md +++ b/aspnetcore/fundamentals/servers/index.md @@ -21,7 +21,7 @@ An ASP.NET Core app runs with an in-process HTTP server implementation. The serv ASP.NET Core ships with the following: -* [Kestrel server](xref:fundamentals/servers/kestrel) is the default, cross-platform HTTP server implementation. Kestrel provides the best performance and memory utilization, but it doesn't have some of the advanced features in HTTP.sys such as port sharing. +* [Kestrel server](xref:fundamentals/servers/kestrel) is the default, cross-platform HTTP server implementation. Kestrel provides the best performance and memory utilization, but it doesn't have some of the advanced features in HTTP.sys. For more information, see [Kestrel vs. HTTP.sys](#korh) in this document. * IIS HTTP Server is an [in-process server](#hosting-models) for IIS. * [HTTP.sys server](xref:fundamentals/servers/httpsys) is a Windows-only HTTP server based on the [HTTP.sys kernel driver and HTTP Server API](/windows/desktop/Http/http-api-start-page). @@ -32,6 +32,26 @@ When using [IIS](/iis/get-started/introduction-to-iis/introduction-to-iis-archit The [ASP.NET Core Module](xref:host-and-deploy/aspnet-core-module) is a native IIS module that handles native IIS requests between IIS and the in-process IIS HTTP Server or Kestrel. For more information, see . + + +## Kestrel vs. HTTP.sys + +Kestrel has the following advantages over HTTP.sys: + + * Better performance and memory utilization. + * Cross platform + * Agility, it's developed and patched independent of the OS. + * Programmatic port and TLS configuration + * Extensibility that allows for protocols like [PPv2](https://github.com/aspnet/AspLabs/blob/master/src/ProxyProtocol/ProxyProtocol.Sample/ProxyProtocol.cs) and alternate transports. + +Http.Sys operates as a shared kernel mode component with the following features that kestrel does not have: + + * Port sharing + * Kernel mode windows authentication. [Kestrel supports only user-mode authentication](xref:security/authentication/windowsauth#kestrel). + * Fast proxying via queue transfers + * Direct file transmission + * Response caching + ## Hosting models Using in-process hosting, an ASP.NET Core app runs in the same process as its IIS worker process. In-process hosting provides improved performance over out-of-process hosting because requests aren't proxied over the loopback adapter, a network interface that returns outgoing network traffic back to the same machine. IIS handles process management with the [Windows Process Activation Service (WAS)](/iis/manage/provisioning-and-managing-iis/features-of-the-windows-process-activation-service-was). @@ -57,8 +77,8 @@ ASP.NET Core ships with [Kestrel server](xref:fundamentals/servers/kestrel), whi ## Kestrel - [Kestrel server](xref:fundamentals/servers/kestrel) is the default, cross-platform HTTP server implementation. Kestrel provides the best performance and memory utilization, but it doesn't have some of the advanced features in HTTP.sys such as port sharing. - + [Kestrel server](xref:fundamentals/servers/kestrel) is the default, cross-platform HTTP server implementation. Kestrel provides the best performance and memory utilization, but it doesn't have some of the advanced features in HTTP.sys. For more information, see [Kestrel vs. HTTP.sys](#korh) in this document. + Use Kestrel: * By itself as an edge server processing requests directly from a network, including the Internet.