04 November 2012 OWIN Robert Muehsig

Mitte Oktober war ich in Mailand auf der WebNetConf mit einem Vortrag über OWIN vertreten. Viele von euch denken jetzt: Was zur Hölle ist OWIN?

Und genau darum ging es auch in dem Talk ;)

Grundzüge lassen sich auch in diesem Post nachlesen: OWIN- um was geht es da und warum ist es cool?

Präsentation:

Anmerkungen:

Die Präsentation funktioniert natürlich nicht für sich selbst. Die meisten Sachen lassen sich am besten nachvollziehen wenn man sich mal Owin.org anschaut und das Katanaproject.

Ich hatte 3 “Samples” gezeigt:

- Eine komplett neues OWIN Projekt wie auf der Katanaproject Seite beschrieben.

- Samples aus dem Katanaproject. Hierbei musste ich zum Teil Anpassungen machen, welche zum Teil jetzt auch schon behoben sind. Andere Samples wurden gar entfernt, da sie eher verwirren ;)

- Self-Hosted OWIN mit Nancy und SignalR von hier

Hier mal mein kleiner Spicker, den ich auch während des Talks genutzt hatte, vielleicht für den einen oder anderen nützlich (im Zusammenhang mit der Präsentation)

==============1. Sample ======================

Empty WebApp

Install-Package Microsoft.AspNet.Owin 
Install-Package Gate.Middleware 

web.config:
<appsettings>
  <add value="true" key="owin:HandleAllRequests" />
  <add value="true" key="owin:SetCurrentDirectory" />
</appsettings>
<system.webserver>
  <modules runallmanagedmodulesforallrequests="true" />
</system.webserver>

Startup.cs:
using Gate.Middleware;
using Owin;

namespace ThisShouldMatchYourAssemblyName
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseShowExceptions();
            app.Run(new Wilson());
        }
    }
}


==> Visual Studio F5
==> Katana.exe (inside C:\Users\Robert\Desktop\WebNetConf\Samples\1_EmptyWebApp\EmptyWebApp\EmptyWebApp)


======== 2. Katana Samples ===========

Download at http://katanaproject.codeplex.com/SourceControl/changeset/view/486788fd7c3b

build.cmd

Fix for:
Build started 18.10.2012 22:03:35.
Project "C:\Users\Robert\Desktop\WebNetConf\Samples\2_Katana\src\Katana.Server.
AspNet.WebApplication\Katana.Server.AspNet.WebApplication.csproj" on node 1 (de
fault targets).
C:\Users\Robert\Desktop\WebNetConf\Samples\2_Katana\src\Katana.Server.AspNet.We
bApplication\Katana.Server.AspNet.WebApplication.csproj(154,3): error MSB4019:
The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10
.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm tha
t the path in the  declaration is correct, and that the file exists on
disk.
===> v11.0 

VS as Admin!!!!!!

-> Katana.Sample.HelloWorld => self hosted => F5

-> Katana.Sample.Mvc4.WebApplication (only in VS) :/

    public class Startup
    {
        public void Configuration(IAppBuilder builder)
        {
            var configuration = new HttpConfiguration(new HttpRouteCollection(HttpRuntime.AppDomainAppVirtualPath));
            configuration.Routes.MapHttpRoute("Default", "{controller}");

            builder.UsePassiveValidator();
            builder.UseShowExceptions();
            builder.UseHttpServer(configuration);

            // DOES NOTHING :(
            //builder.Map("/wilson", new Wilson());
            // Routing inside RouteConfig.cs

            // NEEDED FOR ASP.NET MVC STUFF
            builder.Run(this);

        }
    }

            RouteTable.Routes.MapOwinRoute("/wilson", builder => builder
                .UseShowExceptions()
                .Run(Wilson.App()));


Fix for AspNet not firing:
Install Microsoft.AspNet.Owin X

-> Katana.Sample.SelfhostWebSockets :/

-> Katana.Server.AspNet.WebApplication (only VS / Katana with probs )

http://localhost:1932/TheApp/Hello/ => WebAPI (in Global.asax)

C:\Users\Robert\Desktop\WebNetConf\Samples\2_Katana\src\Katana.Server.AspNet.Web
Application>katana --boot aspnet
builder.Properties are invalid
builder.Properties should contain "server.Name"
builder.Properties should contain "{server-name}.Version" where {server-name} is
 "server.Name" value

--> Katana.Server.AspNet.WebSocketsApp (only vs)

======== 3. Console Nancy SignalR ===========
VS (self hosted katana)
http://localhost:8080/ => NancyFX
http://localhost:8080/signalr/hubs => JS from SignalR


Written by Robert Muehsig

Software Developer - from Saxony, Germany - working on primedocs.io. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de