Distinction between Kestrel and Katana Distinction between Kestrel and Katana asp.net asp.net

Distinction between Kestrel and Katana


Katana is Microsoft's OWIN implementation and also includes some middleware components for security/authentication, serving static files, and a few other things.

Kestrel is Microsoft's cross-platform development web server that can be used with ASP.NET 5.

ASP.NET 5 does not implement OWIN, but has a "bridge" to enable OWIN components to be used in ASP.NET 5 applications, including running on Kestrel.


I still don't get a clear picture after reading other answers under this question, so I made some research and here's my conclusion:

  • OWIN is a specification, which defines an programming interface between a web server(like Kestrel and the ones provided by Katana) and a web application(the code by you).
  • Kestrel comes from ASP.NET Core. It's a OWIN compatible web server.
  • Katana comes from ASP.NET 4.X. It's a set of things of Microsoft's OWIN implementation, including OWIN servers.

Last but not least:

  • ASP.NET 5 is dead and replaced by ASP.NET Core. So don't mention it any more.

    (Update at 2019/06/28: "Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5" - BY MS https://devblogs.microsoft.com/dotnet/introducing-net-5/. That means there will be ASP.Net 5, which is in fact the next generation of ASP.Net Core)

  • OWIN is the key/essential thing in both ASP.NET 4.X and ASP.NET Core.

For more, you may read https://www.quora.com/Is-ASP-NET-Core-a-replacement-for-OWIN-Katana


May be an old question, but since a quick google search led me here i think no one else asked a similar question.

Quoting ASP.NET 5 Documentation:

Kestrel

Kestrel is a cross-platform web server based on libuv, a cross-platform asynchronous I/O library. Kestrel is open-source, and you can view the Kestrel source on GitHub. You add support for Kestrel by including “Kestrel” in your project’s dependencies listed in project.json.

Choosing a server

If you intend to deploy your application on a Windows server, you should run IIS as a reverse proxy server that manages and proxies requests to Kestrel. If deploying on Linux, you should run a comparable reverse proxy server such as Apache or Nginx to proxy requests to Kestrel.

For self-hosting scenarios, such as running in Service Fabric, we recommend using Kestrel without IIS. However, if you require Windows Authentication in a self-hosting scenario, you should choose WebListener.

So, my understanding is: If Kestrel was only a development server, its not anymore and is somehow replacing Katana and OWIN.