SlideShare a Scribd company logo
NoSQL, MVC, and Rich Forms
by Michael Kennedy | @mkennedy | michaelckennedy.net




                                           DEVELOPMENTOR
Introduction
    * Introduction to NoSQL
    * Why NoSQL
    * CRUD with NoSQL databases
    * HTML Helpers
    * Model Binding
    * Unobtrusive Validation
    * Unified Client and Server Validation
    * View Models
    * JavaScript-Friendly Environment
    * Single-Page Applications (MVC 4)
●



                                             DEVELOPMENTOR
What's Your Experience with NoSQL?




                       DEVELOPMENTOR
What is NoSQL?


 The NoSQL movement is about re-evaluating the
 constraints and scalability of data storage systems in
 the light of the way modern web applications generate
 and consume data.




                                       DEVELOPMENTOR
What is NoSQL?


 The NoSQL movement is about re-evaluating the
 constraints and scalability of data storage systems in
 the light of the way modern web applications generate
 and consume data.




                                       DEVELOPMENTOR
Why NoSQL?



                      Starting from an RDBMS is virtually
                      an axiom of software development.




                                        When was the last time you
                                        consciously evaluated
                                        alternatives to an RDBMS?
Axiom: A proposition whose truth is
so evident that no reasoning or
demonstration can make it plainer.
                                        DEVELOPMENTOR
Why NoSQL?

  You can keep your ‘object / relational
  impedance mismatch’, thank you very much!




                                   DEVELOPMENTOR
MongoDB:
A Powerful NoSQL Database

  Combining the best features of document
  databases, key-values stores, and RDBMS.



    http://www.mongodb.org/




                                    DEVELOPMENTOR
MongoDB:
Just an Example




                  DEVELOPMENTOR
Is NoSQL only for Start-ups?




                        DEVELOPMENTOR
Is NoSQL only for Start-ups?




                        DEVELOPMENTOR
Getting Started




                  DEVELOPMENTOR
The Project: Amazoon




                       DEVELOPMENTOR
The Data Model: Amazoon




                      DEVELOPMENTOR
Programming NoSQL




   Find several provider libraries on NuGet, including the
   Official 10Gen C# driver.
                                                DEVELOPMENTOR
Demo - Part 1:
Amazoon Needs a Data Layer


Time to upgrade Amazoon:

Amazoon needs to be able to do basic queries
and inserts / updates.




                               DEVELOPMENTOR
Demo - Part 1:
Amazoon Needs a Data Layer




                             DEVELOPMENTOR
The GET, POST, Redirect Pattern

                                 GET
                                /book
                                      /edit/4
                                             2


Edit data locally

                                     an  ges
                    POST dit/42 + ch
                          /e
                    /book
                                                         t                   update
                                                   r  ec
                                               ed
                                                  i                          data
                                             -R 2
                                          2 /4
                                        30 ow
                                     TP k/sh
                                  HT oo
                                    /b




                                                             DEVELOPMENTOR
The GET, POST, Redirect Pattern

1


                2

3

      4                     DEVELOPMENTOR
Demo - Part 2:
Forms, Model Binding, and HTML Helpers


"Pure" HTML forms are valid but not optimal in
MVC. Make use of @Html extensions.

   Html.BeginForm(), Html.TextBoxFor(), etc.

Usually, this is far easier with Model Binding.



                                  DEVELOPMENTOR
Demo - Part 2:
Forms, Model Binding, and HTML Helpers


Time to upgrade Amazoon:

Amazoon needs an admin section where we
can create categories and books.




                             DEVELOPMENTOR
Demo - Part 2:
Forms, Model Binding, and HTML Helpers




                           DEVELOPMENTOR
Demo - Part 2:
Forms, Model Binding, and HTML Helpers


Well, that mostly worked. But it was clunky on
several levels.

* ViewBag is untyped and non-discoverable
* Many parameters "capture" the form values
* What about validation?



                                 DEVELOPMENTOR
Demo - Part 3:
View Models and Validation


Now that we got the site working with the new
features, let's clean it up.

* View Models (Model Binding at the next level)
* Validation (is easier with View Models)




                                DEVELOPMENTOR
Demo - Part 3:
View Models and Validation




                             DEVELOPMENTOR
Demo - Part 3:
View Models and Validation




                             DEVELOPMENTOR
Demo - Part 4:
Adding Real Usability with Client-Side Code


Time to upgrade Amazoon (again):

Comments and discussions around books.
These are already in place, but the full-page
refresh is not usable on these potentially large
pages.



                                  DEVELOPMENTOR
Demo - Part 4:
Adding Real Usability with Client-Side Code




                              DEVELOPMENTOR
Demo - Part 4:
Adding Real Usability with Client-Side Code




                              DEVELOPMENTOR
Fully Client-Side MVC Applications

MVC 4 introduces the concept of Single-Page
Applications (think gmail). These combine
many technologies:

* MVC and ASP.NET Web API
* Knockout.js
* Upshot.js
* HTML5

                               DEVELOPMENTOR
Fully Client-Side MVC Applications




http://bit.ly/sanderson-spa
                              DEVELOPMENTOR
I Want My Management Tools




                      DEVELOPMENTOR
Scaling-Out is Easier With NoSQL
So you say it's fast, eh? What do you mean by fast?


    Dropping ACID with MongoDB on USTREAM




                                            DEVELOPMENTOR
Conclusion (MVC)
Just some of the features we've explored in MVC:

   * HTML Helpers
   * Model Binding
   * Unobtrusive Validation
   * Unified Client and Server Validation
   * View Models
   * JavaScript-Friendly Environment
   * Single-Page Applications (MVC 4)



                                            DEVELOPMENTOR
Conclusion (NoSQL)

Just some of the features we've explored in NoSQL:

   * Your database is a choice you make for each project
   * NoSQL => Non-relational
   * Strongly supports horizontal scale-out
   * LINQ works great




                                      DEVELOPMENTOR
More from DevelopMentor
http://www.develop.com/training-courses/web

                                              * Guerrilla .NET
                                                (May 7th in Boston)

                                              * Essential ASP.NET
                                              MVC

                                              * JavaScript and jQuery

                                              * HTML5

                                              * + lots more

                                              @mkennedy
                                              @DevelopMentor_
                                                   DEVELOPMENTOR

More Related Content

What's hot

Mean full stack development
Mean full stack developmentMean full stack development
Mean full stack development
Scott Lee
 
Project Dpilot Documentation
Project Dpilot DocumentationProject Dpilot Documentation
Project Dpilot Documentation
DeepAnshu Sharma
 
Flywaydb
FlywaydbFlywaydb
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL Database
Andreas Jung
 
WordPress at Scale Webinar
WordPress at Scale WebinarWordPress at Scale Webinar
WordPress at Scale Webinar
Pantheon
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
Balajihope
 
CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Code
indiver
 
What is a good technology stack today?
What is a good technology stack today?What is a good technology stack today?
What is a good technology stack today?
Netlight Consulting
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
Krishnaprasad k
 
Javascript evolution
Javascript evolutionJavascript evolution
Javascript evolution
vinukumar_vs
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
Sascha Sambale
 
Asp #2
Asp #2Asp #2
Asp #2
Joni
 
Orchestrating MySQL
Orchestrating MySQLOrchestrating MySQL
Orchestrating MySQL
Ivan Zoratti
 
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
GeeksLab Odessa
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
Taller Negócio Digitais
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDB
Yuval Ararat
 
Tech Stack Ideas
Tech Stack IdeasTech Stack Ideas
Tech Stack Ideas
nsclark
 
Moving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScaleMoving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScalemmoline
 
Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack DiscussionZaiyang Li
 

What's hot (20)

Mean full stack development
Mean full stack developmentMean full stack development
Mean full stack development
 
Project Dpilot Documentation
Project Dpilot DocumentationProject Dpilot Documentation
Project Dpilot Documentation
 
Flywaydb
FlywaydbFlywaydb
Flywaydb
 
Why we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL DatabaseWhy we love ArangoDB. The hunt for the right NosQL Database
Why we love ArangoDB. The hunt for the right NosQL Database
 
WordPress at Scale Webinar
WordPress at Scale WebinarWordPress at Scale Webinar
WordPress at Scale Webinar
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
CFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful CodeCFWheels - Pragmatic, Beautiful Code
CFWheels - Pragmatic, Beautiful Code
 
What is a good technology stack today?
What is a good technology stack today?What is a good technology stack today?
What is a good technology stack today?
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Javascript evolution
Javascript evolutionJavascript evolution
Javascript evolution
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Asp #2
Asp #2Asp #2
Asp #2
 
Orchestrating MySQL
Orchestrating MySQLOrchestrating MySQL
Orchestrating MySQL
 
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
JS Lab`16. Андрей Колодницкий: "Разработка REST сервисов на SailsJS"
 
Lamp technology
Lamp technologyLamp technology
Lamp technology
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
Melbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDBMelbourne User Group OAK and MongoDB
Melbourne User Group OAK and MongoDB
 
Tech Stack Ideas
Tech Stack IdeasTech Stack Ideas
Tech Stack Ideas
 
Moving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScaleMoving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScale
 
Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack Discussion
 

Viewers also liked

Building beautiful websites with bootstrap a case study (DevelopMentor webcast)
Building beautiful websites with bootstrap  a case study (DevelopMentor webcast)Building beautiful websites with bootstrap  a case study (DevelopMentor webcast)
Building beautiful websites with bootstrap a case study (DevelopMentor webcast)
Michael Kennedy
 
Nosql databases for the .net developer
Nosql databases for the .net developerNosql databases for the .net developer
Nosql databases for the .net developerJesus Rodriguez
 
Step by Step - AngularJS
Step by Step - AngularJSStep by Step - AngularJS
Step by Step - AngularJS
Infragistics
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
Jussi Pohjolainen
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
MS SQL SERVER: Time series algorithm
MS SQL SERVER: Time series algorithmMS SQL SERVER: Time series algorithm
MS SQL SERVER: Time series algorithm
DataminingTools Inc
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
Cihad Horuzoğlu
 
Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.jsCihad Horuzoğlu
 

Viewers also liked (9)

Building beautiful websites with bootstrap a case study (DevelopMentor webcast)
Building beautiful websites with bootstrap  a case study (DevelopMentor webcast)Building beautiful websites with bootstrap  a case study (DevelopMentor webcast)
Building beautiful websites with bootstrap a case study (DevelopMentor webcast)
 
Nosql databases for the .net developer
Nosql databases for the .net developerNosql databases for the .net developer
Nosql databases for the .net developer
 
Step by Step - AngularJS
Step by Step - AngularJSStep by Step - AngularJS
Step by Step - AngularJS
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
MS SQL SERVER: Time series algorithm
MS SQL SERVER: Time series algorithmMS SQL SERVER: Time series algorithm
MS SQL SERVER: Time series algorithm
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.js
 

Similar to BUILDING WEB APPS WITH ASP.NET MVC AND NOSQL

Plone FSR
Plone FSRPlone FSR
Plone FSR
fulv
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
learning react
learning reactlearning react
learning react
Eueung Mulyana
 
MERN PPT
MERN PPTMERN PPT
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
Chalermpon Areepong
 
HPC Cloud Burst Using Docker
HPC Cloud Burst Using DockerHPC Cloud Burst Using Docker
HPC Cloud Burst Using Docker
IRJET Journal
 
How backbone.js is different from ember.js?
How backbone.js is different from ember.js?How backbone.js is different from ember.js?
How backbone.js is different from ember.js?
SoftProdigy - We know software!
 
.NET 8Developer Roadmap By Scholarhat PDF
.NET 8Developer Roadmap  By Scholarhat PDF.NET 8Developer Roadmap  By Scholarhat PDF
.NET 8Developer Roadmap By Scholarhat PDF
Scholarhat
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpChalermpon Areepong
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
Gary Pedretti
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
Momentum Design Lab
 
Introduction to meteor
Introduction to meteorIntroduction to meteor
Introduction to meteor
NodeXperts
 
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
cNguyn506241
 
Reactjs
ReactjsReactjs
React js vs react native a comparative analysis
React js vs react native a comparative analysisReact js vs react native a comparative analysis
React js vs react native a comparative analysis
Shelly Megan
 
Amit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
Simon Storm
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
Lanate Drummond
 
Categorizing Docker Hub Public Images
Categorizing Docker Hub Public ImagesCategorizing Docker Hub Public Images
Categorizing Docker Hub Public Images
Roberto Hashioka
 

Similar to BUILDING WEB APPS WITH ASP.NET MVC AND NOSQL (20)

Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
learning react
learning reactlearning react
learning react
 
MERN PPT
MERN PPTMERN PPT
MERN PPT
 
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
ZZ BC#7.5 asp.net mvc practice  and guideline refresh! ZZ BC#7.5 asp.net mvc practice  and guideline refresh!
ZZ BC#7.5 asp.net mvc practice and guideline refresh!
 
HPC Cloud Burst Using Docker
HPC Cloud Burst Using DockerHPC Cloud Burst Using Docker
HPC Cloud Burst Using Docker
 
How backbone.js is different from ember.js?
How backbone.js is different from ember.js?How backbone.js is different from ember.js?
How backbone.js is different from ember.js?
 
Node js
Node jsNode js
Node js
 
.NET 8Developer Roadmap By Scholarhat PDF
.NET 8Developer Roadmap  By Scholarhat PDF.NET 8Developer Roadmap  By Scholarhat PDF
.NET 8Developer Roadmap By Scholarhat PDF
 
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvpZZ BC#7 asp.net mvc practice and guideline by NineMvp
ZZ BC#7 asp.net mvc practice and guideline by NineMvp
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Introduction to meteor
Introduction to meteorIntroduction to meteor
Introduction to meteor
 
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
 
Reactjs
ReactjsReactjs
Reactjs
 
React js vs react native a comparative analysis
React js vs react native a comparative analysisReact js vs react native a comparative analysis
React js vs react native a comparative analysis
 
Amit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JS
 
Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14Docker dev ops for cd meetup 12-14
Docker dev ops for cd meetup 12-14
 
A Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing EssayA Brief Note On Asp.Net And Cloud Computing Essay
A Brief Note On Asp.Net And Cloud Computing Essay
 
Categorizing Docker Hub Public Images
Categorizing Docker Hub Public ImagesCategorizing Docker Hub Public Images
Categorizing Docker Hub Public Images
 

Recently uploaded

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 

Recently uploaded (20)

De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 

BUILDING WEB APPS WITH ASP.NET MVC AND NOSQL

  • 1. NoSQL, MVC, and Rich Forms by Michael Kennedy | @mkennedy | michaelckennedy.net DEVELOPMENTOR
  • 2. Introduction * Introduction to NoSQL * Why NoSQL * CRUD with NoSQL databases * HTML Helpers * Model Binding * Unobtrusive Validation * Unified Client and Server Validation * View Models * JavaScript-Friendly Environment * Single-Page Applications (MVC 4) ● DEVELOPMENTOR
  • 3. What's Your Experience with NoSQL? DEVELOPMENTOR
  • 4. What is NoSQL? The NoSQL movement is about re-evaluating the constraints and scalability of data storage systems in the light of the way modern web applications generate and consume data. DEVELOPMENTOR
  • 5. What is NoSQL? The NoSQL movement is about re-evaluating the constraints and scalability of data storage systems in the light of the way modern web applications generate and consume data. DEVELOPMENTOR
  • 6. Why NoSQL? Starting from an RDBMS is virtually an axiom of software development. When was the last time you consciously evaluated alternatives to an RDBMS? Axiom: A proposition whose truth is so evident that no reasoning or demonstration can make it plainer. DEVELOPMENTOR
  • 7. Why NoSQL? You can keep your ‘object / relational impedance mismatch’, thank you very much! DEVELOPMENTOR
  • 8. MongoDB: A Powerful NoSQL Database Combining the best features of document databases, key-values stores, and RDBMS. http://www.mongodb.org/ DEVELOPMENTOR
  • 9. MongoDB: Just an Example DEVELOPMENTOR
  • 10. Is NoSQL only for Start-ups? DEVELOPMENTOR
  • 11. Is NoSQL only for Start-ups? DEVELOPMENTOR
  • 12. Getting Started DEVELOPMENTOR
  • 13. The Project: Amazoon DEVELOPMENTOR
  • 14. The Data Model: Amazoon DEVELOPMENTOR
  • 15. Programming NoSQL Find several provider libraries on NuGet, including the Official 10Gen C# driver. DEVELOPMENTOR
  • 16. Demo - Part 1: Amazoon Needs a Data Layer Time to upgrade Amazoon: Amazoon needs to be able to do basic queries and inserts / updates. DEVELOPMENTOR
  • 17. Demo - Part 1: Amazoon Needs a Data Layer DEVELOPMENTOR
  • 18. The GET, POST, Redirect Pattern GET /book /edit/4 2 Edit data locally an ges POST dit/42 + ch /e /book t update r ec ed i data -R 2 2 /4 30 ow TP k/sh HT oo /b DEVELOPMENTOR
  • 19. The GET, POST, Redirect Pattern 1 2 3 4 DEVELOPMENTOR
  • 20. Demo - Part 2: Forms, Model Binding, and HTML Helpers "Pure" HTML forms are valid but not optimal in MVC. Make use of @Html extensions. Html.BeginForm(), Html.TextBoxFor(), etc. Usually, this is far easier with Model Binding. DEVELOPMENTOR
  • 21. Demo - Part 2: Forms, Model Binding, and HTML Helpers Time to upgrade Amazoon: Amazoon needs an admin section where we can create categories and books. DEVELOPMENTOR
  • 22. Demo - Part 2: Forms, Model Binding, and HTML Helpers DEVELOPMENTOR
  • 23. Demo - Part 2: Forms, Model Binding, and HTML Helpers Well, that mostly worked. But it was clunky on several levels. * ViewBag is untyped and non-discoverable * Many parameters "capture" the form values * What about validation? DEVELOPMENTOR
  • 24. Demo - Part 3: View Models and Validation Now that we got the site working with the new features, let's clean it up. * View Models (Model Binding at the next level) * Validation (is easier with View Models) DEVELOPMENTOR
  • 25. Demo - Part 3: View Models and Validation DEVELOPMENTOR
  • 26. Demo - Part 3: View Models and Validation DEVELOPMENTOR
  • 27. Demo - Part 4: Adding Real Usability with Client-Side Code Time to upgrade Amazoon (again): Comments and discussions around books. These are already in place, but the full-page refresh is not usable on these potentially large pages. DEVELOPMENTOR
  • 28. Demo - Part 4: Adding Real Usability with Client-Side Code DEVELOPMENTOR
  • 29. Demo - Part 4: Adding Real Usability with Client-Side Code DEVELOPMENTOR
  • 30. Fully Client-Side MVC Applications MVC 4 introduces the concept of Single-Page Applications (think gmail). These combine many technologies: * MVC and ASP.NET Web API * Knockout.js * Upshot.js * HTML5 DEVELOPMENTOR
  • 31. Fully Client-Side MVC Applications http://bit.ly/sanderson-spa DEVELOPMENTOR
  • 32. I Want My Management Tools DEVELOPMENTOR
  • 33. Scaling-Out is Easier With NoSQL So you say it's fast, eh? What do you mean by fast? Dropping ACID with MongoDB on USTREAM DEVELOPMENTOR
  • 34. Conclusion (MVC) Just some of the features we've explored in MVC: * HTML Helpers * Model Binding * Unobtrusive Validation * Unified Client and Server Validation * View Models * JavaScript-Friendly Environment * Single-Page Applications (MVC 4) DEVELOPMENTOR
  • 35. Conclusion (NoSQL) Just some of the features we've explored in NoSQL: * Your database is a choice you make for each project * NoSQL => Non-relational * Strongly supports horizontal scale-out * LINQ works great DEVELOPMENTOR
  • 36. More from DevelopMentor http://www.develop.com/training-courses/web * Guerrilla .NET (May 7th in Boston) * Essential ASP.NET MVC * JavaScript and jQuery * HTML5 * + lots more @mkennedy @DevelopMentor_ DEVELOPMENTOR