SlideShare a Scribd company logo
1 of 28
A Smooth Transition to HTML5
Using MVVM Development Patterns
@b4nn0n
    chrisb@wijmo.com



CHRIS BANNON
WIJMO – UI FOR THE WEB

• 40+ Widgets
• Built on jQuery UI
• Powered by HTML5
• Themed with Themeroller
• Works Everywhere
• Supports MVVM
REAL WORLD EXAMPLES
WHY USE HTML5?




“Virtually every computing
device supports HTML and
JavaScript”
BENEFITS OF USING HTML5

• Mobile
• Performance
• Shared code in multiple platforms
  – Mobile Web
  – Native Mobile (PhoneGap)
  – Desktop Web
  – Native Desktop (Win8)
PRINCIPLES WHEN MIGRATING TO HTML5


• Port your programming knowledge

• Port your patterns & practices

• Port your code conventions

• Port your business logic, not your code
HOW TO MIGRATE TO HTML5
HOW CAN YOU PORT TO HTML5?

Use a familiar development pattern: MVVM
  – Widely used by Flex/Silverlight developers

  – Use Knockout for MVVM in JavaScript

  – Use UI controls with MVVM support for
   quicker development
WHAT IS MVVM?

• Model
  – Data for an application
  – Example: Web service
• ViewModel
  – Pure code representation of UI Model
  – Example: JavaScript Class or Object
• View
  – Visible and Interactive UI
  – Example: HTML, CSS & JavaScript UI
EXAMPLE VIEWMODEL USAGE

var myViewModel = {
    personName: ko.observable('Bob'),
    personAge: ko.observable(123)
};
ko.applyBindings(myViewModel);



<span data-bind="text: personName"></span>
PORTING THE MODEL

Use the same Model/Datasource
  – Most JavaScript apps can use the same
   services
PORTING THE VIEW-MODEL

Port the ViewModel
  – Create JavaScript Objects/Classes that match
   their equivalents in C#

  – Hook up observability using Knockout

  – Remember to focus on porting business logic,
   not code
PORTING THE VIEW

Port the View
  – Create HTML markup that represents your UI
    (similar to what you have in MXML/XAML)
  – Add data-bind attributes to bind markup to the
    View-Model
  – Use data-bind attributes to turn markup into UI
    Controls (like Wijmo widgets)
THE BENEFITS OF USING MVVM
SHORTER DEVELOPMENT CYCLES

• MVVM separates development clearly
 between Data, Code and UI

• Each layer can be developed in parallel
 and individually

• Minimizes turnaround time
IMPROVED RELIABILITY / EASIER MAINTENANCE


• ViewModels are testable
• ViewModels easily integrate with Unit
 Tests
• Unit Tests become assets to the project
 during the lifecycle of the application
• Maintenance made easier with automated
 tests
MORE PREDICTABLE DEVELOPMENT CYCLES


• Our steps in development:
  – Design the View (general appearance and
    behavior)
  – Design the ViewModel to support the View
  – Implement the ViewModel
  – Implement the View

• This allows us to more easily estimate
  time/cost for each step
IMPROVED QUALITY

• Less overlap between developers and
 designers

• Each can focus on their specialty and
 deliver higher quality

• Both can work simultaneously
FLEXIBILITY

• Loose coupling between Views and
 ViewModels

• Multiple Views can use a single
 ViewModel

• Easily make Mobile, Desktop or other
 custom Views against a single ViewModel
STANDARDIZATION

• Use the same binding mechanisms in multiple applications
• Once initially developed these assets can be reused in new
  applications
   – Markup
   – Styles
   – UI Controls
   – Common Input Forms
   – Libraries (Globalization, shared functions, etc)
CHALLENGES WHEN PORTING TO HTML5
DEVELOPMENT TOOLS

JavaScript development tools are not as
mature as Flex/Silverlight’s
  – Compile-time error detection

  – Code re-factoring

  – IntelliSense (Code Auto-complete /
    Suggestions)
UI CONTROLS

Flex/Silverlight have a wider variety of UI
controls available to developers
  – Only basic elements in HTML to use

  – Usually need to use a library of UI Controls

  – More difficult to create controls in HTML than
    in Flex/Silverlight
DATA ACCESS

Flex/Silverlight provide a rich and mature set of
business data tools
  – No concept of data queries
  – Rich data features are not native to collections
    (arrays)
  – Must use ajax to call services and consume data
QUESTIONS?
RESOURCES

• Wijmo MVVM Support
  http://wijmo.com/widgets/mvvm-support/
• Download Wijmo
  http://wijmo.com/downloads/
• Knockout
  http://knockoutjs.com/
• Contact Me
  @b4nn0n
  chrisb@wijmo.com
THANKS FOR JOINING!

More Related Content

What's hot

Single page applications
Single page applicationsSingle page applications
Single page applicationsDiego Cardozo
 
Website development &amp; it's trends
Website development &amp; it's trendsWebsite development &amp; it's trends
Website development &amp; it's trendsSunCart Store
 
Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Shiju Varghese
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebChris Canal
 
Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3Alexandre Malavasi
 
WebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsWebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsPop Apps
 
Web technologies practical guide
Web technologies practical guideWeb technologies practical guide
Web technologies practical guidesamir azazy
 
Combining HTML5 with MVC framework to simplify realtime collaboration for we...
Combining HTML5 with MVC framework to simplify  realtime collaboration for we...Combining HTML5 with MVC framework to simplify  realtime collaboration for we...
Combining HTML5 with MVC framework to simplify realtime collaboration for we...Gopikrishnan Sasikumar
 
Building web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm patternBuilding web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm patternAspenware
 
Full stack devlopment using django main ppt
Full stack devlopment using django main pptFull stack devlopment using django main ppt
Full stack devlopment using django main pptSudhanshuVijay3
 
Features: A better way to package stuff in Drupal
Features: A better way to package stuff in DrupalFeatures: A better way to package stuff in Drupal
Features: A better way to package stuff in DrupalRob Knight
 

What's hot (20)

Single page applications
Single page applicationsSingle page applications
Single page applications
 
Website development &amp; it's trends
Website development &amp; it's trendsWebsite development &amp; it's trends
Website development &amp; it's trends
 
Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0Introduction to ASP.NET MVC 1.0
Introduction to ASP.NET MVC 1.0
 
Lap Around ASP.NET MVC 5
Lap Around ASP.NET MVC 5Lap Around ASP.NET MVC 5
Lap Around ASP.NET MVC 5
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
Jquery
JqueryJquery
Jquery
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3Modern Applications With Asp.net Core 5 and Vue JS 3
Modern Applications With Asp.net Core 5 and Vue JS 3
 
Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?Micro-frontends – is it a new normal?
Micro-frontends – is it a new normal?
 
Eureko frameworks
Eureko frameworksEureko frameworks
Eureko frameworks
 
Lightswitch
LightswitchLightswitch
Lightswitch
 
WebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsWebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page Apps
 
Web technologies practical guide
Web technologies practical guideWeb technologies practical guide
Web technologies practical guide
 
Benefits of developing a Single Page Web Applications using AngularJS
Benefits of developing a Single Page Web Applications using AngularJSBenefits of developing a Single Page Web Applications using AngularJS
Benefits of developing a Single Page Web Applications using AngularJS
 
Combining HTML5 with MVC framework to simplify realtime collaboration for we...
Combining HTML5 with MVC framework to simplify  realtime collaboration for we...Combining HTML5 with MVC framework to simplify  realtime collaboration for we...
Combining HTML5 with MVC framework to simplify realtime collaboration for we...
 
Building web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm patternBuilding web applications using kendo ui and the mvvm pattern
Building web applications using kendo ui and the mvvm pattern
 
Full stack devlopment using django main ppt
Full stack devlopment using django main pptFull stack devlopment using django main ppt
Full stack devlopment using django main ppt
 
Features: A better way to package stuff in Drupal
Features: A better way to package stuff in DrupalFeatures: A better way to package stuff in Drupal
Features: A better way to package stuff in Drupal
 
Fork CMS
Fork CMSFork CMS
Fork CMS
 

Similar to A Smooth Transition to HTML5

Divya ASP Developer
Divya ASP Developer Divya ASP Developer
Divya ASP Developer divya k
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Building databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with KnockoutjsBuilding databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with KnockoutjsNish Anil
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012 Prashant Chaudhary
 
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...jaxconf
 
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...SPTechCon
 
Senior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenthil Ravindranath
 
Mvc presentation
Mvc presentationMvc presentation
Mvc presentationMaslowB
 
Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentMicro Focus
 
Webpage Design Using Templates and Online WYSIWYG Platforms
Webpage Design Using Templates and Online WYSIWYG PlatformsWebpage Design Using Templates and Online WYSIWYG Platforms
Webpage Design Using Templates and Online WYSIWYG Platformsshelanie oliquino
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsRomin Irani
 
Getting started with Xamarin forms
Getting started with Xamarin formsGetting started with Xamarin forms
Getting started with Xamarin formsSolTech, Inc.
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesAndrew Ferrier
 
Advanced MVVM in Windows 8
Advanced MVVM in Windows 8Advanced MVVM in Windows 8
Advanced MVVM in Windows 8Gill Cleeren
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Jeremy Likness
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesQamar Abbas
 

Similar to A Smooth Transition to HTML5 (20)

Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Divya ASP Developer
Divya ASP Developer Divya ASP Developer
Divya ASP Developer
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Building databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with KnockoutjsBuilding databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with Knockoutjs
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012
 
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
Amazon Web Services and PaaS - Enterprise Java for the Cloud Era? - Mark Pric...
 
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
Integrating SharePoint 2010, 2013 and Visual Studio Lightswitch by Rob Windso...
 
Senior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil RavindranathSenior .Net Developer - Senthil Ravindranath
Senior .Net Developer - Senthil Ravindranath
 
Mvc presentation
Mvc presentationMvc presentation
Mvc presentation
 
Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application Development
 
Webpage Design Using Templates and Online WYSIWYG Platforms
Webpage Design Using Templates and Online WYSIWYG PlatformsWebpage Design Using Templates and Online WYSIWYG Platforms
Webpage Design Using Templates and Online WYSIWYG Platforms
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElements
 
Getting started with Xamarin forms
Getting started with Xamarin formsGetting started with Xamarin forms
Getting started with Xamarin forms
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best Practices
 
Advanced MVVM in Windows 8
Advanced MVVM in Windows 8Advanced MVVM in Windows 8
Advanced MVVM in Windows 8
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
 
Adopting MVVM
Adopting MVVMAdopting MVVM
Adopting MVVM
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 
Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
 

More from Chris Bannon

Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016Chris Bannon
 
Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Chris Bannon
 
Inside Wijmo 5, a Large-scale JavaScript Product
Inside Wijmo 5, a Large-scale JavaScript ProductInside Wijmo 5, a Large-scale JavaScript Product
Inside Wijmo 5, a Large-scale JavaScript ProductChris Bannon
 
Wijmo 5 - GrapeCity Echo Tokyo
Wijmo 5 - GrapeCity Echo TokyoWijmo 5 - GrapeCity Echo Tokyo
Wijmo 5 - GrapeCity Echo TokyoChris Bannon
 
AngularJS - GrapeCity Echo Tokyo
AngularJS - GrapeCity Echo TokyoAngularJS - GrapeCity Echo Tokyo
AngularJS - GrapeCity Echo TokyoChris Bannon
 
Welcome to Wijmo 5
Welcome to Wijmo 5Welcome to Wijmo 5
Welcome to Wijmo 5Chris Bannon
 
Data Visualization & HTML5 - Swedish Edition
Data Visualization & HTML5 - Swedish EditionData Visualization & HTML5 - Swedish Edition
Data Visualization & HTML5 - Swedish EditionChris Bannon
 

More from Chris Bannon (8)

Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016Inside Wijmo 5 - GrapeCity Echo 2016
Inside Wijmo 5 - GrapeCity Echo 2016
 
Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5Migrating MVVM Applications to HTML5
Migrating MVVM Applications to HTML5
 
Inside Wijmo 5, a Large-scale JavaScript Product
Inside Wijmo 5, a Large-scale JavaScript ProductInside Wijmo 5, a Large-scale JavaScript Product
Inside Wijmo 5, a Large-scale JavaScript Product
 
Wijmo 5 - GrapeCity Echo Tokyo
Wijmo 5 - GrapeCity Echo TokyoWijmo 5 - GrapeCity Echo Tokyo
Wijmo 5 - GrapeCity Echo Tokyo
 
AngularJS - GrapeCity Echo Tokyo
AngularJS - GrapeCity Echo TokyoAngularJS - GrapeCity Echo Tokyo
AngularJS - GrapeCity Echo Tokyo
 
Welcome to Wijmo 5
Welcome to Wijmo 5Welcome to Wijmo 5
Welcome to Wijmo 5
 
Wijmo 2013v1
Wijmo 2013v1Wijmo 2013v1
Wijmo 2013v1
 
Data Visualization & HTML5 - Swedish Edition
Data Visualization & HTML5 - Swedish EditionData Visualization & HTML5 - Swedish Edition
Data Visualization & HTML5 - Swedish Edition
 

Recently uploaded

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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.pdfsudhanshuwaghmare1
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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...Martijn de Jong
 
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...Miguel Araújo
 
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 DevelopmentsTrustArc
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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)wesley chun
 
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...apidays
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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 CVKhem
 
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 FresherRemote DBA Services
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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...
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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)
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 

A Smooth Transition to HTML5

  • 1. A Smooth Transition to HTML5 Using MVVM Development Patterns
  • 2. @b4nn0n chrisb@wijmo.com CHRIS BANNON
  • 3. WIJMO – UI FOR THE WEB • 40+ Widgets • Built on jQuery UI • Powered by HTML5 • Themed with Themeroller • Works Everywhere • Supports MVVM
  • 5. WHY USE HTML5? “Virtually every computing device supports HTML and JavaScript”
  • 6. BENEFITS OF USING HTML5 • Mobile • Performance • Shared code in multiple platforms – Mobile Web – Native Mobile (PhoneGap) – Desktop Web – Native Desktop (Win8)
  • 7. PRINCIPLES WHEN MIGRATING TO HTML5 • Port your programming knowledge • Port your patterns & practices • Port your code conventions • Port your business logic, not your code
  • 8. HOW TO MIGRATE TO HTML5
  • 9. HOW CAN YOU PORT TO HTML5? Use a familiar development pattern: MVVM – Widely used by Flex/Silverlight developers – Use Knockout for MVVM in JavaScript – Use UI controls with MVVM support for quicker development
  • 10. WHAT IS MVVM? • Model – Data for an application – Example: Web service • ViewModel – Pure code representation of UI Model – Example: JavaScript Class or Object • View – Visible and Interactive UI – Example: HTML, CSS & JavaScript UI
  • 11. EXAMPLE VIEWMODEL USAGE var myViewModel = { personName: ko.observable('Bob'), personAge: ko.observable(123) }; ko.applyBindings(myViewModel); <span data-bind="text: personName"></span>
  • 12. PORTING THE MODEL Use the same Model/Datasource – Most JavaScript apps can use the same services
  • 13. PORTING THE VIEW-MODEL Port the ViewModel – Create JavaScript Objects/Classes that match their equivalents in C# – Hook up observability using Knockout – Remember to focus on porting business logic, not code
  • 14. PORTING THE VIEW Port the View – Create HTML markup that represents your UI (similar to what you have in MXML/XAML) – Add data-bind attributes to bind markup to the View-Model – Use data-bind attributes to turn markup into UI Controls (like Wijmo widgets)
  • 15. THE BENEFITS OF USING MVVM
  • 16. SHORTER DEVELOPMENT CYCLES • MVVM separates development clearly between Data, Code and UI • Each layer can be developed in parallel and individually • Minimizes turnaround time
  • 17. IMPROVED RELIABILITY / EASIER MAINTENANCE • ViewModels are testable • ViewModels easily integrate with Unit Tests • Unit Tests become assets to the project during the lifecycle of the application • Maintenance made easier with automated tests
  • 18. MORE PREDICTABLE DEVELOPMENT CYCLES • Our steps in development: – Design the View (general appearance and behavior) – Design the ViewModel to support the View – Implement the ViewModel – Implement the View • This allows us to more easily estimate time/cost for each step
  • 19. IMPROVED QUALITY • Less overlap between developers and designers • Each can focus on their specialty and deliver higher quality • Both can work simultaneously
  • 20. FLEXIBILITY • Loose coupling between Views and ViewModels • Multiple Views can use a single ViewModel • Easily make Mobile, Desktop or other custom Views against a single ViewModel
  • 21. STANDARDIZATION • Use the same binding mechanisms in multiple applications • Once initially developed these assets can be reused in new applications – Markup – Styles – UI Controls – Common Input Forms – Libraries (Globalization, shared functions, etc)
  • 23. DEVELOPMENT TOOLS JavaScript development tools are not as mature as Flex/Silverlight’s – Compile-time error detection – Code re-factoring – IntelliSense (Code Auto-complete / Suggestions)
  • 24. UI CONTROLS Flex/Silverlight have a wider variety of UI controls available to developers – Only basic elements in HTML to use – Usually need to use a library of UI Controls – More difficult to create controls in HTML than in Flex/Silverlight
  • 25. DATA ACCESS Flex/Silverlight provide a rich and mature set of business data tools – No concept of data queries – Rich data features are not native to collections (arrays) – Must use ajax to call services and consume data
  • 27. RESOURCES • Wijmo MVVM Support http://wijmo.com/widgets/mvvm-support/ • Download Wijmo http://wijmo.com/downloads/ • Knockout http://knockoutjs.com/ • Contact Me @b4nn0n chrisb@wijmo.com

Editor's Notes

  1. Complete kit of UI widgets for HTML5 and jQuery developmentUnmatched Data Visualization  and Grid componentsHandcrafted CSS3 Themes and infinite possibilities  with ThemerollerWorks everywhere – devices and browsers supported40+ jQuery UI Widgets
  2. Design the View (general appearance and behavior of the application)Design the ViewModel to support the ViewImplement the ViewModelImplement the View