#2 Kestrel as a Powerful Web Server

Hussein Mhadi
5 min readJun 28, 2023

--

Web servers play a critical role in hosting and serving web applications, handling HTTP requests, managing content, and providing the infrastructure needed for web development. In the .NET ecosystem, Microsoft’s web server offerings have evolved over time, with Kestrel emerging as a lightweight, high-performance alternative to its predecessor, Internet Information Services (IIS), so we’ll dive into the Kestrel web server since its inception and compare it to the rest. Web servers, all of which you will see in this article, so I hope you enjoy

Photo by Markus Spiske on Unsplash

What is Kestrel ?

It is a web server developed by Microsoft to be a light and fast alternative to the previous web server (IIS), with features including: light, fast, high-performance, scalable, open-source, and multi-platform. As it can handle (HTTP) requests and manage content and payload, it was developed specifically for the .NET Core environment, to be a powerful tool for this environment, and it is considered a default web server and is not integrated with the work environment (.NET Core), as it is separate from the work environment This made it a powerful tool that allows the development and expansion of the web application and gave flexibility and the possibility of expansion to the Dot Net Core environment, as well as it can deal with (reverse proxy server) to give this feature to the developer the best capabilities that he can collect from this interaction.

History and the reason for its construction

Previously, the .NET environment worked with a web server (IIS) built by Microsoft that was integrated with the .Net environment. It is a very powerful web server and provides all the functionality a web application needs, but due to scaling/flexibility issues this server (IIS) only works on Windows OS, which causes problems and reduces flexibility of work for developers and the problem of compatibility with other systems, after that(on few time) Microsoft introduced a package

System.Web.Hosting.AspNetHostingPermission

that improved albeit in a simple way , but it provided additional features such as “permission control” for the web server (IIS) because it runs under the “System.Web” domain .But it’s still the same, so this server is getting heavy because of the expansion it’s getting. After that Open Web Interface for .NET (OWIN) was introduced in 2013 by Microsoft.

Open Web Interface for .NET (OWIN)

Considered a standard/principles business interface between a web server and a web application in a .NET environment, OWIN acts as a bridge between web servers and web applications, providing benefits including separation between web server and web application, middleware-based architecture, flexibility, self-hosting, portability, and interoperability within .NET ecosystem. It has played a significant role in the development of lightweight, self-hosted web applications and has influenced the design of frameworks such as ASP.NET Core.

In the following year, 2014, Microsoft was preparing to launch the new version of the .NET environment, which was (Dot Net 5), which was later called (Dot Net Core), which Microsoft intended to be open source and carry new features, including (cross-platform) all These events prompted Microsoft (.NET development team) to develop a web server that provides high capabilities, speed, and lightness and also handles (HTTP) requests, also it have core feature is “ isolated web server from .net environment” . All these features are being respects the principles of OWIN.

The birth of Kestrel

Because of all the events that took place, it became the reason for the birth of a new web server .Hence the beginning of building a new web server that provides powerful and light features at the same time. In 2014, the Microsoft development team developed a web server called Kestrel, which provides powerful services and features, using asynchronous programming models, taking advantage of the await / asynchronous pattern. To efficiently handle a large number of concurrent connections. Kestrel also supports HTTP/2, WebSockets, and other modern web protocols and features. In addition to serving as a standalone web server, Kestrel can also work alongside reverse proxy servers such as Nginx or IIS. This allows Kestrel to take advantage of the advanced features offered by reverse proxies, such as load balancing, SSL termination, and caching, while still handling request processing and application-specific logic .

The reason for its popularity among .NET Core developers

Since its introduction, Kestrel has become a popular choice for hosting ASP.NET Core applications due to its performance, cross-platform capabilities, and integration with the ASP.NET Core platform. Kestrel also handles middleware seamlessly, allowing you to take advantage of the rich ecosystem of middleware components available in ASP.NET Core for various functions and features.

Kestrel vs IIS: Kestrel’s role as a back-end host and its relationship to reverse proxies

Kestrel is often used as a back-end host, as it provides high privileges such as load balancing and SSL encryption termination. Being light does not mean that its performance is poor compared to IIS, rather it provides high performance and also provides many functions necessary for hosting work, but it remains less functionality compared to server. Therefore, IIS has always been popular and recommended to use it with (IIS as reverse proxy server) in front of it .

Conclusion

Kestrel has become a popular choice for hosting ASP.NET Core applications due to its performance, cross-platform capabilities, and integration with the ASP.NET Core platform. Its lightweight nature, combined with the ability to work alongside reverse proxy servers, provides a flexible and robust solution to your web hosting needs in the .NET ecosystem. Overall, Kestrel represents a major advance in web server technology, addressing the limitations of traditional servers and offering a modern, scalable, high-performance solution for hosting web applications in a .NET Core environment.

I hope that the article is good in its listing of information, and I also hope that you have obtained sufficient information about this topic. Thank you for reading well. Wait for me in new articles.

Photo by Chris Ried on Unsplash

--

--

Hussein Mhadi
Hussein Mhadi

Written by Hussein Mhadi

Software Engineer/Architect 💡 Founder programmercoffee.xyz☕ Web Developer ,Architecting Solutions,Consulting & Team Leadership 🎯 Writer and Trainer 🔥

No responses yet