On November 28th, Scott Koon created a new google group and posted this message:
I created this group in the hope that it could foster cooperation and
the sharing of knowledge between developers in the .NET arena who are
building Sinatra inspired web frameworks.
It turns out that there are a LOT of developers who have created Sinatra-like frameworks for .NET: Jeff, Nancy, Matrin, NSinatra, Frank, Figment, Nina
Scott would love to see 1 primary Sinatra implementation in .NET that everyone can contribute to and use and I agree.
But, over the past few weeks, what has come out of this new group has been much, much more awesome than just a new Sinatra-clone.
OWIN and Knack
- Python has WSGI
- Ruby has Rack
- JavaScript has JSGI and Jack
- Perl has PSGI and Plack
History
If you’re not familiar with the history, here’s a high level breakdown:
- WSGI was created for Python web applications and servers. It was just a specification.
- Rack was created, based on WSGI, and included a specification and a standard library of tools for working with Rack
- Jack was created as a JavaScript port of Rack and later split into a JSGI specification and Jack, which is a collection of JSGI compatible handlers, middleware, and other utilities
- PSGI and Plack appear to follow the same approach as JSGI and Jack (I’m not sure which came first)
So, over the years, a standard has been developing amongst web development communities. It’s useful to have a specification describing a standard interface that web servers and frameworks/applications/middleware can use to work with one another. This means that, if you make a web framework that supports Rack, you can be certain that it will run on all of the web servers that support Rack. And that’s pretty awesome.
OWIN and Knack
A number of people in .NET have decided to follow this standard! OWIN (Open Web Interface for .Net) was created as the specification for .NET web servers to interact with web frameworks/applications.
OWIN support has already been built into a few .NET web servers and frameworks, notably Kayak and Frack.
When I started playing around with OWIN, I couldn’t find anything like Rack/Jack/Plack providing a set of tools specifically created to help developers:
- create OWIN-compatible middleware
- create web frameworks on top of OWIN
- create web application servers that can run OWIN applications
- write micro, low-level web applications directly on top of OWIN
So I created “Owin.Common” and recorded this screencast. After discussion on the google group, this project has been renamed Knack
Screencast
Anyway, that’s it for now! Watch the screencast to see it in action!
Note: Recently reconfigured my video encoding setup
If the MP4 or OGG have any problems, please let me know. The AVI isn’t available yet.