Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OWIN

 OWIN

Neuerfindung des Microsoft Web Stacks

Presentation was hold in Nurnberg, Germany at the Developer Week 2014 (DWX14)

Robert Muehsig

June 15, 2014
Tweet

More Decks by Robert Muehsig

Other Decks in Programming

Transcript

  1. OWIN
    Neuerfindung
    des Microsoft Web Stacks
    #dwx14
    #dwx14
    1

    View Slide

  2. Hi!
    Robert Mühsig
    @robert0muehsig
    CodeInside.eu
    Nerd & ASP.NET MVP
    OneOffixx AG Schweiz
    2

    View Slide

  3. OWIN?
    3
    Fancy Akronym?

    View Slide

  4. Es ist eine
    Spezifikation.
    4

    View Slide

  5. Aber…
    für was und
    warum?
    5

    View Slide

  6. Open Web
    Interface for
    .NET
    6

    View Slide

  7. Zeitreise ins
    Jahr 2002
    7

    View Slide

  8. 8

    View Slide

  9. ASP.NET Geschichtsstunde
    WebForms
    Zielgruppe: ASP & WinForms Devs
    „One-Size-Fits-All“ Framework
    Enge Bindung an den IIS
    Testing: Meh.
    9

    View Slide

  10. In 2007…
    ASP.NET MVC.

    View Slide

  11. ASP.NET Weiterentwicklungen
    „Seperation of Concerns“
    Mehr Kontrolle
    Bessere Testbarkeit
    „Out-Of-Band“ Releases
    11

    View Slide

  12. System.Web.dll
    „We fix one bug and open seven new
    ones“
    &
    Performance 
    ASP.NET = System.Web.dll
    12

    View Slide

  13. Ein Blick auf
    andere
    Plattformen
    13

    View Slide

  14. Andere Plattformen
    Ruby
    Node.js
    Phyton
    Gemeinsamkeit:
    Modular und Leichtgewichtig
    14

    View Slide

  15. OWIN Inspiration
    Diese Frameworks haben eine
    Schnittstelle zwischen
    Server
    &
    Frameworks
    15

    View Slide

  16. Ruby „Rack“
    16

    View Slide

  17. Ruby „Rack“
    17
    app = lambda do |env|
    body = "Hello, World!"
    [200, {"Content-Type" => "text/plain", "Content-Length"
    => body.length.to_s}, [body]]
    end
    run app

    View Slide

  18. Ruby „Rack“
    18
    Server
    Passenger for nginx & Apache
    WEBrick

    Frameworks
    Ruby on Rails
    Sinatra

    View Slide

  19. Ruby „Rack“
    19
    Middleware
    Logging
    Caching

    Pipeline Pattern

    View Slide

  20. Node.js
    20
    // Load the http module to create an http server.
    var http = require('http');
    // Configure our HTTP server to respond with Hello World to all requests.
    var server = http.createServer(function (request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.end("Hello World\n");
    });
    // Listen on port 8000, IP defaults to 127.0.0.1
    server.listen(8000);
    // Put a friendly message on the terminal
    console.log("Server running at http://127.0.0.1:8000/");

    View Slide

  21. ☑ Motivation
    21

    View Slide

  22. OWIN
    Community getrieben
    Version 1.0
    22
    using AppFunc = Func<
    IDictionary, // Environment
    Task>; // Done

    View Slide

  23. OWIN – Environment Dictionary
    Key Type
    owin.RequestScheme String
    owin.RequestMethod String
    owin.RequestPath String
    owin.RequestBody Stream
    owin.RequestHeaders IDictionary
    owin.ResponseStatusCode Int
    owin.ResponseHeaders IDictionary
    owin.ResponseBody Stream
    23

    View Slide

  24. OWIN
    24
    Host
    • IIS
    • OWIN Host
    • ? (Windows Service …)

    View Slide

  25. OWIN
    25
    Server
    • SystemWeb
    • HttpListener
    • Nowin
    Host

    View Slide

  26. OWIN
    26
    Middleware
    • Web API
    • Auth
    • SignalR
    • NancyFx
    • SimpleWeb
    • …
    Server
    Host

    View Slide

  27. OWIN
    27
    Application
    • Custom App Code
    Middleware
    Server
    Host

    View Slide

  28. Katana
    Microsofts OWIN Implementierung
    Open Source 
    28

    View Slide

  29. Katana
    - Modules
    - Auth
    - Static File
    - CORS
    - IIS & HttpListener Owin Kompatibilität
    - OwinHost.exe
    29

    View Slide

  30. DEMO
    30

    View Slide

  31. Möglichkeiten
    über
    Möglichkeiten
    31

    View Slide

  32. Beispiele
    32
    WebApp mit SelfHosting Möglichkeiten
    SelfHosting im Unit-Testing
    Kombieren verschiedener Frameworks

    View Slide

  33. OWIN WebApps on Mono
    33
    Nicht ausprobiert, aber sollte gehen.
    (Nowin sollte auch da gehen…)

    View Slide

  34. OWIN &
    ASP.NET vNext
    34

    View Slide

  35. Wie wird das umgesetzt?
    35
    Zielsetzung:
    Alle Szenarien die mit Katana möglich sind, sollten
    auch in vNext unterstützt werden.
    Problemstellung heute:
    „typeless“-OWIN vs. Katanas OWIN
    Implementierungen
    Zusammenarbeit mit OWIN Spec Group

    View Slide

  36. Zusammenfassung
    OWIN: Spec
    Katana: Microsoft´s OWIN Implementierung
    Wer .NET WebApps baut sollte OWIN
    im Blick haben.
    36

    View Slide