Jump to content

Draft:Kestrel Web Server

From Wikipedia, the free encyclopedia



Kestrel is a free and open source web server that is created by Microsoft Corporation. It's the primary web server in .NET ecosystem and used mainly as an integral piece of ASP.NET Core nevertheless it's still possible to plug in custom web servers to ASP.NET Core through IServer interface. Usage of Kestrel outside of ASP.NET Core is very limited since Kestrel is designed to power ASP.NET Core, Kestrel is licensed under MIT license.[1][2][3]

Kestrel utilizes Async IO (SocketAsyncEventArgs) with tasks as It's concurrency model to achieve high throughput while internally optimizing usage of strings to byte arrays and containing small amount of platform specific unmanaged "memory unsafe" code for performance of hot critical paths.

History

[edit]

Kestrel originally started when ASP.NET Core 1.0 was released, in this stage Kestrel was not ready as an edge server due to security testing being incomplete during earlier stages. As of ASP.NET Core 2.0 Kestrel is edge ready meaning it can receive requests without having a reverse proxy such as IIS or Nginx.[4]

Feature Set

[edit]
Protocol Platform Notes
HTTP/1.1 Windows, Linux, Mac OS
HTTP/2 Windows, Linux, Mac OS
SPDY Outdated
HTTP/3 Windows, Linux libmsquic required except for Windows

Kestrel no longer supports SSL and marks them as depreciated.

TLS/SSL Version Notes
SSL 1 Insecure - Not supported
SSL 2 Insecure - Depreciated
SSL 3 Insecure - Depreciated
TLS 1.0 Insecure - Depreciated
TLS 1.1 Insecure - Depreciated
TLS 1.2
TLS 1.3

YARP

[edit]

There is a reverse proxy based on Kestrel named YARP (Yet Another Reverse Proxy) it is highly configurable and originally created in Microsoft due to internal development because developers at Microsoft would create multiple reverse proxies and instead of reinventing the wheel each time engineers decided for a standardized reverse proxy across the company.

YARP is more customizable than nginx and it suits as an easy way to create web application firewalls compared to writing nginx modules or modifying nginx itself.[5][6][7][8]

See also

[edit]

References

[edit]
  1. ^ dotnet/aspnetcore, .NET Platform, 2024-11-24, retrieved 2024-11-25
  2. ^ dotnet-bot. "IServer Interface (Microsoft.AspNetCore.Hosting.Server)". learn.microsoft.com. Retrieved 2024-11-25.
  3. ^ "What is Kestrel (vs IIS / Express)". Stack Overflow. Retrieved 2024-11-25.
  4. ^ "Web server implementations in ASP.NET Core | Microsoft Docs". 2017-03-30. Archived from the original on 2017-03-30. Retrieved 2024-11-25.
  5. ^ dotnet-bot. "SslProtocols Enum (System.Security.Authentication)". learn.microsoft.com. Retrieved 2024-11-25.
  6. ^ gewarren (2021-09-15). "Breaking change: Kestrel: Default supported TLS protocol versions changed - .NET". learn.microsoft.com. Retrieved 2024-11-25.
  7. ^ "YARP Documentation". microsoft.github.io. Retrieved 2024-11-25.
  8. ^ wtgodbe (2024-03-14). "Use HTTP/3 with the ASP.NET Core Kestrel web server". learn.microsoft.com. Retrieved 2024-11-25.