06 June 2012 OWIN, Web Robert Muehsig

OWIN steht für “Open Web Interface for .NET” und ist eine Spezifikation wie .NET Web Server und Web Applikation miteinander kommunizieren.

.NET Web Server – meintest du den IIS?

Hier kommt quasi gleich zu Beginn der erste Höhepunkt: Es gibt noch andere “.NET” Web Server, der IIS ist natürlich der Standard, aber natürlich auch eine äußerst “heftige” Applikation.

OWIN – Big Picture

Louis DeJardin, ein Microsoft Mitarbeiter im ASP.NET Team, hat ein kleines Bild erstellt um OWIN und die Zusammenhänge seines OWIN-Sandbox Projekt näher zu erläutern. Dazu gibt es auch noch einen ausgezeichneten Blogpost, welchen ich hier in Teilen auch wiedergebe.

image

Gehen wir näher auf die einzelnen Teile ein:

Katana.exe ist eine Art “Sandbox” für den gesamten Webstack.

Erster blauer Kasten mit “server.dll”, “Kayak”, “HttpListener”: Das sind die verschieden “Web Server”. Die server.dll repräsentiert am Ende das, was wir auch vom IIS her kennen. Der HttpListener ist ebenfalls eine Betriebssystem / Framework Komponente und wurde z.B. auch in der WCF und WebApi Welt bereits mehrfach genutzt. Kayak hingegen ist ein .NET Web Server in C# geschrieben (!).

Die orange Linie: Das ist das, was OWIN am Ende beschreibt. Danach folgt die “Middleware”, später im Code sieht man dies unter dem Namespace “Gate”

Am Ende der Pipeline stehen verschiedene Web Frameworks, darunter z.B. NancyFx oder die WebApi. SignalR ist ebenfals “OWIN” kompatibel”.

OWIN Sandbox Projekt

Dieses Projekt ist (nach meinen Recherchen) aktuell der einfachste Weg ins OWIN Universum.

image

Im Download enthalten ist eine Solution mit verschiedenen Web-Projekten samt verschiedenen Arten OWIN zu nutzen.

Wenn man nun die Projekte aus dem Visual Studio startet sieht man keine großen Überraschungen.

 

 

 

 

 

 

 

 

 

 

Jetzt kommt Katana ins Spiel:

Lädt man Katana runter (bzw. bezieht es via Chocolatey) kommt eigentlich erst wirklich der magische Moment:

cinst katana
git clone https://github.com/owin/owin-sandbox.git
cd owin-sandbox\src\Case05_JustNancy
msbuild
katana --server kayak

 

(Der MSBuild Befehl klappt nur, wenn man das Programm entsprechend in der Powershell registriert hat bzw. aus der VS Shell kommt).

Wir weisen mit dem unten aufgeführten Befehl Katana an einen Kayak Server zu starten – und siehe da:

image

image

Gänzlich ohne IIS Express, Cassini oder HttpListener können wir NancyFX nutzen!

Tipp: Visual Studio Instanzen sollten geschlossen sein – ansonsten scheint es Konflikte zu geben, wer sich auf den Socket verbinden kann und wer nicht.

Freiheit schafft Kreativität

Ich weiß zwar noch nicht ganz wozu ich es jetzt einsetzen müsste, aber in den anderen Web Frameworks ist dieses Vorgehen bereits mehrfach erprobt – insbesondere in der Ruby Welt und hat dort eine ganz Reihe von Web Frameworks inspiriert. Die Unabhängigkeit kann interessante neue Konstellationen hervorbringen und wird auch von Microsofts ASP.NET Team offen verfolgt. Cool, oder?

Weitere Links

Hanselman hat natürlich auch schon darüber gebloggt bzw. ein Podcast mit dem Schöpfer von Kayak vor einer ganzen Weile aufgenommen.

Auf GitHub gibt es im OWIN Wiki auch einige Ausblicke und Informationen.


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!