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.