-
Notifications
You must be signed in to change notification settings - Fork 19
Why OWIN?
OWIN, or the Open Web Interface for .NET, defines a common interface that decouples web applications from web servers. The design of OWIN is inspired by node.js, Rack, and WSGI.
OWIN was created by a group of .NET web developers who all found themselves building essentially the same infrastructural components for running web applications on multiple hosts, e.g. IIS and Kayak. This group started a discussion list (that you are free to join, as well) to determine how to pool their efforts and create a common interface that would work for all.
Where can I learn more about OWIN?
The best sources of examples can be found in the OWIN Sandbox, Gate, and Katana projects.
What is the difference between OWIN/Katana/Gate?
OWIN defines the structure and requirements of HTTP request and response interactions. The assembly codifies the definitions in the spec to allow you to avoid using type aliases in all of your files.
Gate is a reference implementation showing how OWIN can be used in its more raw form and offers a number of helpers and middlewares that make building OWIN applications much easier. While not required, you will find Gate a great resource both for learning and building your own OWIN applications.
Katana supports the Microsoft hosts and frameworks and provides a command line tool for running OWIN applications from the command line. Learn more at the Katana Project Getting Started page.
How do I make my application OWIN compatible?
What are the benefits by making my application / server OWIN compatible?
The primary benefit is that by using OWIN, you decouple your application from a specific web or application server. This means you can run your application on broader number of platforms more easily. The Kayak web server, for example, runs well on *nix systems using Mono. The command line Katana.exe also allows developers using *nix systems to run .NET web applications without jumping into a VM.
Server developers gain a number of new application frameworks and can write to a single, agreed upon interface rather than having to invent their own application API.
What kind of license does this come under?
OWIN, Gate, and Katana are licensed under the Apache 2.0 license.
Can I contribute to this?
Yes. You will need to complete a contributor agreement and submit it to ?. All projects are open to pull requests, so if you would like to contribute, just fork the project, commit your changes to a branch, and submit a pull request.
Why isn't there an OWIN key for cookies, form data, etc.?
The OWIN environment dictionary uses owin.* key names for the core HTTP concepts like verb, status code, etc.. These are fairly simple components that most servers parse and present correctly. However items like cookies, form data, etc. are significantly more complicated and are rarely parsed the same way by two different implementations. It's critical to application portability that the app reliably behave the same on different servers. To accomplish this applications should directly employ a parsing library (like Gate) rather than relying on underlying components that may vary between servers.