A lot of people get confused about OWIN and Katana, especially in their relation to vNext. To properly explain the differences between these things, let’s take a step back into the mid 2000s where ASP.NET (WebForms) was starting to see a lot of people moving away from it, towards things like Ruby on Rails. The reason for that being the fact that WebForms was this huge ugly beast, giving developers a bastardized model of the web to work from. WebForms abstracted away much of the “web” part of web development, and gave us things like the now-dreaded ViewState.
But WebForms wasn’t all bad. It filled an important need: to bridge the gap between traditional desktop development and web development, allowing millions of WinForms developers to use their existing skills to create web applications. To address this need of developers in the .NET space having a web framework closer to the stateless model provided by HTTP, Microsoft created the MVC (Model-View-Controller) Framework.
The MVC Framework was and is fantastic. While being difficult for some developers to get accustomed to, it was exactly what was needed to bring .NET web development back to the forefront. But there was still one little problem: The dreaded System.Web DLL. It’s an enormous library containing everything but the kitchen sink (and even that might be stashed somewhere in there).
That’s where OWIN comes in. The Open Web Interface for .NET, a specification describing an abstraction layer separating web servers and the applications that run on them. It’s important to understand that OWIN itself is not a library or piece of code, just the specification for one. What most people consider to be “Owin” is actually Microsoft’s implementation of the OWIN specification, Project Katana.
While MVC 5 is still reliant on System.Web today, and therefore does not support Katana (or OWIN), Web API applications can already be built solely on Katana. But that is all changing with MVC 6. MVC 6 applications fully support OWIN, and the templates included in Visual Studio 2015 are built atop of vNext.
But what is vNext you ask? vNext is the next iteration of Katana. As David Fowler mentioned on the asp.net forums,
vNext is the successor to Katana (which is why they look so similar). Katana was the beginning of the break away from System.Web and to more modular components for the web stack. You can see vNext as a continuation of that work but going much further (new CLR, new Project System, new http abstractions).
Everything that exists today in Katana will make it’s way into vNext.
So with that being said, OWIN is not Katana, and neither is vNext. But vNext is almost here, leading the way to an exciting time to be a .NET developer!
If you’re interested in learning more or developing Middleware for OWIN, check out my article about Injecting Custom Middleware into the ASP.NET Pipeline.