'''OWIN''' (Open Web Interface for .NET) is a standard for an interface between .NET webWeb applications and webWeb servers. It is a community-owned open-source project. Prior to OWIN, Microsoft's [[ASP.NET]] technology was designed on top of [[Internet Information Services|IIS]], and webWeb applications could not easily be run on another webWeb server (although note that despite this the Mono community developed several ASP.NET compatible webWeb servers, such as [[XSP (software)|XSP]]). OWIN aims to decouple the relationship between ASP.NET applications and IIS by defining a standard interface. Developers of webWeb servers can be sure that, if they implement OWIN correctly, ASP.NET applications will run on their server. Similarly, new webWeb frameworks could be developed as an alternative to ASP.NET. So long as they target OWIN, they will run on any OWIN compatible webWeb server, including IIS.
In this regard, OWIN aims to do for .NET what [[Java Servlet]] and [[Servlet containers]] do for the [[Java virtual machine|JVM]].
Line 6 ⟶ 7:
== OWIN as middleware ==
In addition to decoupling webWeb frameworks and webWeb servers, OWIN allows chaining together [[middleware]] into a pipeline. A webWeb framework can interact with OWIN without knowing whether it is interacting directly with the underlying web server, or with one or more layers of middleware (each implementing OWIN) on top of the webWeb server. This allows infrastructure concerns, such as [[authentication]], to be split out into separate modules. This is desirable as it decouples them from the application's own code, and makes them reusable across applications. In Project Katana, Microsoft has made into OWIN modules several ASP.NET features that were previously part of the core ASP.NET framework. This allows them to be reused in other webWeb frameworks, and also ensures a cleaner separation from the application using them.