I've mentioned some work on Twitter but it's definitely worth reiterating here. I've done some refactoring to simplify the public API in the Gate.dll project and clean things up a bit, and that's reflected in the master branch. There ares still a few 'helpers' in there right now, but I'd like to see Gate.dll just be enough for hosts and applications to 'bootstrap' themselves with respect to one another.
From a host side, that means taking a dependency on Gate and calling:
var theUsersApp = AppBuilder.BuildConfiguration(configurationString);
The configuration string arg refers to an assembly/type/method that takes a single AppBuilder parameter. The BuildConfiguration method takes care of poking through assemblies, finding a match, and instantiating the type, and calling the configuration. The return value is an OWIN-compatible delegate that can be run by the host's OWIN support.
From the application side, it looks like this:
class Startup {
public void Configuration(AppBuilder builder) {
builder
.Map("/api", b => b
.Use(RequireAuthenticationMiddleware.Create)
.Run(NancyFx.Create))
.Use(GzipCompressMiddleware.Create)
.Run(StaticSite.Create);
}
}
(These middleware are just conceptual examples.)
Note that frameworks do not need to take a dependency on Gate. Gate is just a way for users to get their OWIN-compatible delegates loaded up into a hosting scenario.
As far as the OWIN spec itself, I consider it finalized.
Personally, I've been holding off on doing a big push within the community until I have something to demo. ;) I do have a day job and have a lot of other stuff going on in life, but I've been working hard most weeknights and every weekend for several months to get that demo together.
There are already OWIN adapters within the Gate project for
ASP.NET and WCF.
I've also mentioned to Andreas over Twitter that I have a spike of an OWIN stack consisting of Kayak, Gate, and Nancy on my machine. It uses a Kayak CLI which I'm hoping to push into master Kayak next week.
So, my roadmap looks like this:
- Create NuGet packages for Gate.dll and Gate.Kayak.dll.
- Write tests for and push up Kayak.Cli.exe project, create NuGet package
- Get Andreas/Steven to make a NuGet package for Nancy.Hosting.Owin ;)
- Publish screencast on pulling in the deps from NuGet, building, and running a Nancy/Gate/Kayak project.
Hope this helps. I'm very excited about the project. Unfortunately working on it is not my day job, but I'm moving as quickly as I can with the limited time I have for it. I will be presenting the stack at Monospace in late July (really need to write a blog post about that) so presumably it will be done by then. ;)