Web server implementations in ASP.NET Core
Kestrel
Kestrel is the default web server included in ASP.NET Core project templates.
Use Kestrel:
By itself as an edge server processing requests directly from a network, including the Internet.
With a reverse proxy server, such as Internet Information Services (IIS), Nginx, or Apache.
HTTP.sys
If ASP.NET Core apps are run on Windows, HTTP.sys is an alternative to Kestrel. Kestrel is generally recommended for best performance. HTTP.sys can be used in scenarios where the app is exposed to the Internet and required capabilities are supported by HTTP.sys but not Kestrel.
HTTP.sys can also be used for apps that are only exposed to an internal network.
Custom servers
If the built-in servers don't meet the app's requirements, a custom server implementation can be created. The Open Web Interface for .NET (OWIN) guide demonstrates how to write a Nowin-based IServer implementation.
Last updated