SlideShare uma empresa Scribd logo
1 de 26
Three web frameworks
       All .NET
      One hour
          Go


                       Christian Horsdal
                          @chr_horsdal
                   horsdal.blogspot.com
Thanks to the sponsors
Who Am I?
•   Lead Software Architect @ Mjølner Informatics
•   Denmark
•   Husband and Father
•   Some who enjoys
    –   Clean code
    –   TDD’ing
    –   When Denmarks wins at football
    –   Simplicity
    –   Whisky
Why?

• There are alternatives to ASP.NET
    – Even on .NET
    – Know them!


• Style matters


• Tradeoffs, tradeoffs, tradeoffs
    – Conventions <-----> explicitness
    – DRY <-----> separation of concerns
    – Abstract <-----> concrete
Why?

• Run anywhere

• IoC/DI to the bone

• Embrace HTTP

• OSS and community driven
What will you learn?
A taste of some alternatives




                    • FubuMVC

                    • OpenRasta

                    • Nancy
Sample
FubuMVC – At a glance
• One Model In One Model Out
   – Aka OMIOMO
   – Aka Russian Doll


• Convention over Configuration

• Really cool built-in diagnostics

• Everything is POCOs
FubuMVC – ShortUrl Overview
GET “/”   • No params




          HomeController
                            • Returns HomeViewModel
            .get_Home




                           HomeView.cshtml   • Takes HomeViewModel
FubuMVC – ShortUrl Overview
POST “/”    • UrlShorteningModel




           HomeController     • Takes UrlShorteningModel
            .post_Home        • Returns UrlShorteningViewModel




                            post_url_result.cshtml   • Takes UrlShorteningVM
FubuMVC – ShortUrl Overview

GET “/42”
            • ShortenedUrlModel




                                     • Takes ShortenedUrlMode
            HomeController.get_Url
                                     • Returns FubuContinuation
FubuMVC



Show me the code!
OpenRasta– At a glance
• Three things:
  – Resources
  – Handlers
  – Codecs


• Automatic conneg

• Everything is POCOs
OpenRasta – Shorturl Overview
• Resource:
  – “/”
                        GET “/”   POST “/”   GET “/42”
  – “/{shortenedUrl}”
  – Home
OpenRasta – Shorturl Overview


• Handler
  – HomeHandler

                      Home resource
                      HomeHandler
OpenRasta – Shorturl Overview


                          GET “/”     POST “/”      GET “/42”




• “Codecs”
                                    Home resource
  – WebForms viewengine             HomeHandler
  – Form data
OpenRasta



Show me the code!
Nancy– At a glance
• Lightweight, low ceremony
   – Just works
   – But easily swappable
   – DSLs

• Built in diagnostics

• Automatic conneg

• Testability is first class
Nancy – Shorturl Overview

• Modules
 – ShortUrlModule

                     HTTP              Handler
                              Routes              Response
                    request            function
Nancy – Shorturl Overview


• Routes
  – Get[“/”]
  – Post[“/”]               HTTP              Handler
                                     Routes              Response
                           request            function
  – Get[“/{shortenedUrl}”]
Nancy – Shorturl Overview




                       HTTP              Handler
                                Routes              Response
                      request            function

• A lambda for each
Nancy



Show me the code!
Why, again?
 There are alternatives to ASP.NET
    Know them!



 Style matters



 Tradeoffs, tradeoffs, tradeoffs
What might you have learned?
  A taste of some altenatives

                • FubuMVC
                    – OMIOMU


                • OpenRasta
                    – Resources, Handlers, Codecs


                • Nancy
                    – DSL
FubuMVC, OpenRasta, Nancy

WHEN, WHAT, WHERE?
Please rate this session
Scan the code, go online, rate this session


                                                  Christian Horsdal
                                                     @chr_horsdal
                                              horsdal.blogspot.com

Mais conteúdo relacionado

Mais procurados

Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
WO Community
 
Rex - Lightning Talk yapc.eu 2013
Rex - Lightning Talk yapc.eu 2013Rex - Lightning Talk yapc.eu 2013
Rex - Lightning Talk yapc.eu 2013
Jan Gehring
 
Neutrondev ppt
Neutrondev pptNeutrondev ppt
Neutrondev ppt
marunewby
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Richard Lee
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
Amit Thakkar
 

Mais procurados (20)

Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
Writing a fast HTTP parser
Writing a fast HTTP parserWriting a fast HTTP parser
Writing a fast HTTP parser
 
Node.js essentials
 Node.js essentials Node.js essentials
Node.js essentials
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
 
Dexador Rises
Dexador RisesDexador Rises
Dexador Rises
 
Apache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whaleApache Camel in the belly of the Docker whale
Apache Camel in the belly of the Docker whale
 
Lightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NETLightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NET
 
Basic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.jsBasic Understanding and Implement of Node.js
Basic Understanding and Implement of Node.js
 
Rex - Lightning Talk yapc.eu 2013
Rex - Lightning Talk yapc.eu 2013Rex - Lightning Talk yapc.eu 2013
Rex - Lightning Talk yapc.eu 2013
 
SVN essentials
SVN essentialsSVN essentials
SVN essentials
 
Neutrondev ppt
Neutrondev pptNeutrondev ppt
Neutrondev ppt
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
Setting up a local WordPress development environment
Setting up a local WordPress development environmentSetting up a local WordPress development environment
Setting up a local WordPress development environment
 
Building GUI App with Electron and Lisp
Building GUI App with Electron and LispBuilding GUI App with Electron and Lisp
Building GUI App with Electron and Lisp
 
Dcjq node.js presentation
Dcjq node.js presentationDcjq node.js presentation
Dcjq node.js presentation
 
The Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compilerThe Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compiler
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.js
 
WebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossibleWebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossible
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 

Semelhante a Three Other Web Frameworks. All .NET. All OSS. One Hour. Go

Spider进化论
Spider进化论Spider进化论
Spider进化论
cjhacker
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
Tomas Doran
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptx
sanjanabal
 
Performance out
Performance outPerformance out
Performance out
Jack Huang
 
Performance out
Performance outPerformance out
Performance out
Jack Huang
 
Performance out
Performance outPerformance out
Performance out
Jack Huang
 
Performance out
Performance outPerformance out
Performance out
Jack Huang
 

Semelhante a Three Other Web Frameworks. All .NET. All OSS. One Hour. Go (20)

Spider进化论
Spider进化论Spider进化论
Spider进化论
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
Best practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloudBest practices for highly available and large scale SolrCloud
Best practices for highly available and large scale SolrCloud
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptx
 
2 7
2 72 7
2 7
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
title
titletitle
title
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
RESTful modules in zf2
RESTful modules in zf2RESTful modules in zf2
RESTful modules in zf2
 
Realtime web2012
Realtime web2012Realtime web2012
Realtime web2012
 

Mais de Christian Horsdal

DCI ANUG - 24th November 2010
DCI ANUG - 24th November 2010DCI ANUG - 24th November 2010
DCI ANUG - 24th November 2010
Christian Horsdal
 
DCI - ANUG 24th November 2010
DCI - ANUG 24th November 2010DCI - ANUG 24th November 2010
DCI - ANUG 24th November 2010
Christian Horsdal
 

Mais de Christian Horsdal (11)

Testing microservices.ANUG.20230111.pptx
Testing microservices.ANUG.20230111.pptxTesting microservices.ANUG.20230111.pptx
Testing microservices.ANUG.20230111.pptx
 
Scoping microservices.20190917
Scoping microservices.20190917Scoping microservices.20190917
Scoping microservices.20190917
 
Event sourcing anug 20190227
Event sourcing anug 20190227Event sourcing anug 20190227
Event sourcing anug 20190227
 
Consolidating services with middleware - NDC London 2017
Consolidating services with middleware - NDC London 2017Consolidating services with middleware - NDC London 2017
Consolidating services with middleware - NDC London 2017
 
Intro to.net core 20170111
Intro to.net core   20170111Intro to.net core   20170111
Intro to.net core 20170111
 
Middleware webnextconf - 20152609
Middleware   webnextconf - 20152609Middleware   webnextconf - 20152609
Middleware webnextconf - 20152609
 
ASP.NET vNext ANUG 20140817
ASP.NET vNext ANUG 20140817ASP.NET vNext ANUG 20140817
ASP.NET vNext ANUG 20140817
 
Four .NET Web Frameworks in Less Than an Hour
Four .NET Web Frameworks in Less Than an HourFour .NET Web Frameworks in Less Than an Hour
Four .NET Web Frameworks in Less Than an Hour
 
Nancy + rest mow2012
Nancy + rest   mow2012Nancy + rest   mow2012
Nancy + rest mow2012
 
DCI ANUG - 24th November 2010
DCI ANUG - 24th November 2010DCI ANUG - 24th November 2010
DCI ANUG - 24th November 2010
 
DCI - ANUG 24th November 2010
DCI - ANUG 24th November 2010DCI - ANUG 24th November 2010
DCI - ANUG 24th November 2010
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Three Other Web Frameworks. All .NET. All OSS. One Hour. Go

  • 1. Three web frameworks All .NET One hour Go Christian Horsdal @chr_horsdal horsdal.blogspot.com
  • 2. Thanks to the sponsors
  • 3. Who Am I? • Lead Software Architect @ Mjølner Informatics • Denmark • Husband and Father • Some who enjoys – Clean code – TDD’ing – When Denmarks wins at football – Simplicity – Whisky
  • 4. Why? • There are alternatives to ASP.NET – Even on .NET – Know them! • Style matters • Tradeoffs, tradeoffs, tradeoffs – Conventions <-----> explicitness – DRY <-----> separation of concerns – Abstract <-----> concrete
  • 5. Why? • Run anywhere • IoC/DI to the bone • Embrace HTTP • OSS and community driven
  • 6. What will you learn? A taste of some alternatives • FubuMVC • OpenRasta • Nancy
  • 8. FubuMVC – At a glance • One Model In One Model Out – Aka OMIOMO – Aka Russian Doll • Convention over Configuration • Really cool built-in diagnostics • Everything is POCOs
  • 9. FubuMVC – ShortUrl Overview GET “/” • No params HomeController • Returns HomeViewModel .get_Home HomeView.cshtml • Takes HomeViewModel
  • 10. FubuMVC – ShortUrl Overview POST “/” • UrlShorteningModel HomeController • Takes UrlShorteningModel .post_Home • Returns UrlShorteningViewModel post_url_result.cshtml • Takes UrlShorteningVM
  • 11. FubuMVC – ShortUrl Overview GET “/42” • ShortenedUrlModel • Takes ShortenedUrlMode HomeController.get_Url • Returns FubuContinuation
  • 13. OpenRasta– At a glance • Three things: – Resources – Handlers – Codecs • Automatic conneg • Everything is POCOs
  • 14. OpenRasta – Shorturl Overview • Resource: – “/” GET “/” POST “/” GET “/42” – “/{shortenedUrl}” – Home
  • 15. OpenRasta – Shorturl Overview • Handler – HomeHandler Home resource HomeHandler
  • 16. OpenRasta – Shorturl Overview GET “/” POST “/” GET “/42” • “Codecs” Home resource – WebForms viewengine HomeHandler – Form data
  • 18. Nancy– At a glance • Lightweight, low ceremony – Just works – But easily swappable – DSLs • Built in diagnostics • Automatic conneg • Testability is first class
  • 19. Nancy – Shorturl Overview • Modules – ShortUrlModule HTTP Handler Routes Response request function
  • 20. Nancy – Shorturl Overview • Routes – Get[“/”] – Post[“/”] HTTP Handler Routes Response request function – Get[“/{shortenedUrl}”]
  • 21. Nancy – Shorturl Overview HTTP Handler Routes Response request function • A lambda for each
  • 23. Why, again?  There are alternatives to ASP.NET  Know them!  Style matters  Tradeoffs, tradeoffs, tradeoffs
  • 24. What might you have learned? A taste of some altenatives • FubuMVC – OMIOMU • OpenRasta – Resources, Handlers, Codecs • Nancy – DSL
  • 26. Please rate this session Scan the code, go online, rate this session Christian Horsdal @chr_horsdal horsdal.blogspot.com