SlideShare a Scribd company logo
MVVM for Modern App Dev




                            Jeremy Likness
                            Senior Consultant, Project Manager
                            Twitter: @JeremyLikness
                            Blog: http://csharperimage.jeremylikness.com/



consulting   training   debugging                                           wintellect.com
CodeStock is proudly partnered with:




                RecruitWise and Staff with Excellence - www.recruitwise.jobs



             Send instant feedback on this session via Twitter:
             Send a direct message with the room number to @CodeStock
                d codestock 503 This session is great!

         For more information on sending feedback using Twitter while at
        CodeStock, please see the “CodeStock README” in your CodeStock
                                     guide.
Aspect is helping customer-centric organizations
  deliver a next-generation customer experience
   through software solutions that fully exploit
  enterprise communications and collaboration
platforms with particular advantage to Microsoft-
               centric organizations.
what we do
    consulting      training    design     debugging

 who we are
   Founded by top experts on Microsoft – Jeffrey Richter, Jeff Prosise, and John Robbins –
   we pull out all the stops to help our customers achieve their goals through advanced
   software-based consulting and training solutions.

 how we do it                                           Training
                                                        •   On-site instructor-led training
    Consulting & Debugging                              •   Virtual instructor-led training
    •   Architecture, analysis, and design services     •   Devscovery conferences
    •   Full lifecycle custom software development
    •   Content creation                                Design
    •   Project management                              •   User Experience Design
    •   Debugging & performance tuning                  •   Visual & Content Design
                                                        •   Video & Animation Production


consulting    training   debugging                                               wintellect.com
Agenda
 • What is MVVM?
 • Why use MVVM?
 • 10 Reasons to Use MVVM
 • MVVM Frameworks
 • What is the Cost?
 • Demo: Portable Library
 • Demo: Web Applications
 • Questions



consulting   training   debugging   wintellect.com
What is MVVM?




consulting   training   debugging   wintellect.com
What is MVVM?
 • Do you ever have to start work on an application before the
   design team is ready?
 • Do you make updates in parallel with the design team?
 • Do you unit test your solutions?
 • Do you reuse code and components both within and across
   projects?
 • Do you ever have to change the user interface, and wouldn’t
   it be nice to do it without having to hit your code as well?
 • MVVM solves these types of problems!



consulting   training   debugging                      wintellect.com
What is MVVM?                                To any given Model there is
                                         attached one or interface between
                                           An Editor is an more Views, each a
                                              user and one or more views. It
                                                 View being capable of
                                     Something that is of interest to the
                                                  provides the user with a
                                            showing one or more pictorial
                                       user. suitable be concrete, like a for
                                              It could command system,
                                        representations of the Model on the
 • Thing-Model-View-Editor                 exampleor an on
                                             house in the form of menus that
                                                            integrated
                                       A Model could activehardcopy. A
                                              screen and
                                                   is an be abstract, like a
                                                                representation
                                      circuit. Itmay change dynamically
 • 12 May 1979 – Trygve Reenskaug         View is also able to perform such
                                         new idea or to the in the form of It
                                          of an abstraction
                                                        opinions about a
                                         operations in a computingcontext.
                                           accordingupon the Model that is
                                                 data
                                                               current
                                           paper. It could be a whole, the
                                                provides the Views with
                                                reasonabely associated
                                                         system.
                                       like a computer, or a part, like and
                                                necessarythat View.       a
                 Thing                                with coordination
                                                  circuit element.
                                                    command messages.




consulting   training    debugging                         wintellect.com
What is MVVM? The Model
 • Domain object
 • Application solution
 • Data/Information and/or Behavior
 • Possible persistence information (id, GUID, etc.)
 • Separate from “how it got there”
 • Let’s be specific:
      • C#
      • VB
      • JavaScript
      • Etc.


consulting     training   debugging                    wintellect.com
What is MVVM? The View
 • What the user “sees” / experiences
 • User-friendly format for presentation
 • Multiple inputs (gestures)
 • Behaviors
 • Events
 • Data-bindings
 • Let’s be specific:
      • XAML
      • HTML5



consulting   training   debugging          wintellect.com
What is MVVM? The View Model
 • The “controller” – holds state
 • Doesn’t know about the view
 • Exposes methods and commands
 • Coordinates with services
 • “Owns” models, and knows how to retrieve/update them
 • Might be used in multiple views
 • Can communicate with other view models
 • Let’s be specific:
      • C#
      • JavaScript, etc.

consulting   training   debugging                 wintellect.com
What is MVVM
                                    What a
Presentation Layer                  View!




                                              The Interface




                                             Don’t deal with
                                               all of this




consulting   training   debugging                 wintellect.com
What is MVVM? The View Model




consulting   training   debugging   wintellect.com
10 Reasons to Use MVVM
 1. Separation of concerns/de-coupling.
 2. Designer/developer workflow.
 3. Unit testing.
 4. Data-binding.
 5. Code reuse.
 6. Modularity.
 7. Refactoring containment.
 8. Extensibility.
 9. Tools support (Windows Phone 7, MVVM Light, etc.)
 10.Pattern vocabulary.
consulting   training   debugging                   wintellect.com
10 Reasons to Use MVVM

 1.Designer/developer
  workflow.
 2.Unit testing.


consulting   training   debugging   wintellect.com
MVVM Frameworks
 1. PRISM (Guidance/Quickstart)
 2. MVVM Light
 3. Jounce
 4. Caliburn / Caliburn.Micro
 5. Cinch
 6. nRoute
 7. Catel
 8. Knockout.JS
 9. Kendo UI


consulting   training   debugging   wintellect.com
How Much Does it Cost?
 •Learning Curve (Developers)
 •Bigger down payment (architecture,
  infrastructure)
      - Low interest rates and minimum monthly
        payments!
 •Visibility (de-coupling can backfire)
 •Unnecessary complexity


consulting   training   debugging         wintellect.com
demo
   MVVM




consulting   training   debugging   wintellect.com
Questions?




                            Jeremy Likness
                            Senior Consultant, Project Manager
                            Twitter: @JeremyLikness
                            Blog: http://csharperimage.jeremylikness.com/



consulting   training   debugging                                           wintellect.com

More Related Content

Similar to MVVM for Modern Applications

Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
Qamar Abbas
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
Betclic Everest Group Tech Team
 
Building databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with KnockoutjsBuilding databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with Knockoutjs
Nish Anil
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture
Jiby John
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
Ulrich Krause
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
Ulrich Krause
 
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
OpenWhisk
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
Sonia Baratas Alves
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
Chris Bannon
 
Architectural Design Pattern: Android
Architectural Design Pattern: AndroidArchitectural Design Pattern: Android
Architectural Design Pattern: Android
Jitendra Kumar
 
Models used in iOS programming, with a focus on MVVM
Models used in iOS programming, with a focus on MVVMModels used in iOS programming, with a focus on MVVM
Models used in iOS programming, with a focus on MVVM
Andrei Popa
 
MVC
MVCMVC
MVC.pptx
MVC.pptxMVC.pptx
MVC.pptx
HassanAliKhan36
 
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
 
Software Engineering 2014
Software Engineering 2014Software Engineering 2014
Software Engineering 2014
Shuichi Kurabayashi
 
Design Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMDesign Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVM
Mudasir Qazi
 
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
RapidValue
 
Development and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsDevelopment and QA dilemmas in DevOps
Development and QA dilemmas in DevOps
Matteo Emili
 
A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5
Chris Bannon
 
MVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,MobileMVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,Mobile
naral
 

Similar to MVVM for Modern Applications (20)

Mobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelinesMobile App Architectures & Coding guidelines
Mobile App Architectures & Coding guidelines
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Building databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with KnockoutjsBuilding databound JavaScript apps with Knockoutjs
Building databound JavaScript apps with Knockoutjs
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
IBM Bluemix OpenWhisk: Interconnect 2016, Las Vegas: CCD-1088: The Future of ...
 
IBM Bluemix Openwhisk
IBM Bluemix OpenwhiskIBM Bluemix Openwhisk
IBM Bluemix Openwhisk
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
 
Architectural Design Pattern: Android
Architectural Design Pattern: AndroidArchitectural Design Pattern: Android
Architectural Design Pattern: Android
 
Models used in iOS programming, with a focus on MVVM
Models used in iOS programming, with a focus on MVVMModels used in iOS programming, with a focus on MVVM
Models used in iOS programming, with a focus on MVVM
 
MVC
MVCMVC
MVC
 
MVC.pptx
MVC.pptxMVC.pptx
MVC.pptx
 
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
 
Software Engineering 2014
Software Engineering 2014Software Engineering 2014
Software Engineering 2014
 
Design Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVMDesign Pattern - MVC, MVP and MVVM
Design Pattern - MVC, MVP and MVVM
 
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
 
Development and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsDevelopment and QA dilemmas in DevOps
Development and QA dilemmas in DevOps
 
A Smooth Transition to HTML5
A Smooth Transition to HTML5A Smooth Transition to HTML5
A Smooth Transition to HTML5
 
MVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,MobileMVC(Model View Controller),Web,Enterprise,Mobile
MVC(Model View Controller),Web,Enterprise,Mobile
 

Recently uploaded

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
David Brossard
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 

Recently uploaded (20)

20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
OpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - AuthorizationOpenID AuthZEN Interop Read Out - Authorization
OpenID AuthZEN Interop Read Out - Authorization
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 

MVVM for Modern Applications

  • 1. MVVM for Modern App Dev Jeremy Likness Senior Consultant, Project Manager Twitter: @JeremyLikness Blog: http://csharperimage.jeremylikness.com/ consulting training debugging wintellect.com
  • 2. CodeStock is proudly partnered with: RecruitWise and Staff with Excellence - www.recruitwise.jobs Send instant feedback on this session via Twitter: Send a direct message with the room number to @CodeStock d codestock 503 This session is great! For more information on sending feedback using Twitter while at CodeStock, please see the “CodeStock README” in your CodeStock guide.
  • 3. Aspect is helping customer-centric organizations deliver a next-generation customer experience through software solutions that fully exploit enterprise communications and collaboration platforms with particular advantage to Microsoft- centric organizations.
  • 4. what we do consulting training design debugging who we are Founded by top experts on Microsoft – Jeffrey Richter, Jeff Prosise, and John Robbins – we pull out all the stops to help our customers achieve their goals through advanced software-based consulting and training solutions. how we do it Training • On-site instructor-led training Consulting & Debugging • Virtual instructor-led training • Architecture, analysis, and design services • Devscovery conferences • Full lifecycle custom software development • Content creation Design • Project management • User Experience Design • Debugging & performance tuning • Visual & Content Design • Video & Animation Production consulting training debugging wintellect.com
  • 5. Agenda • What is MVVM? • Why use MVVM? • 10 Reasons to Use MVVM • MVVM Frameworks • What is the Cost? • Demo: Portable Library • Demo: Web Applications • Questions consulting training debugging wintellect.com
  • 6. What is MVVM? consulting training debugging wintellect.com
  • 7. What is MVVM? • Do you ever have to start work on an application before the design team is ready? • Do you make updates in parallel with the design team? • Do you unit test your solutions? • Do you reuse code and components both within and across projects? • Do you ever have to change the user interface, and wouldn’t it be nice to do it without having to hit your code as well? • MVVM solves these types of problems! consulting training debugging wintellect.com
  • 8. What is MVVM? To any given Model there is attached one or interface between An Editor is an more Views, each a user and one or more views. It View being capable of Something that is of interest to the provides the user with a showing one or more pictorial user. suitable be concrete, like a for It could command system, representations of the Model on the • Thing-Model-View-Editor exampleor an on house in the form of menus that integrated A Model could activehardcopy. A screen and is an be abstract, like a representation circuit. Itmay change dynamically • 12 May 1979 – Trygve Reenskaug View is also able to perform such new idea or to the in the form of It of an abstraction opinions about a operations in a computingcontext. accordingupon the Model that is data current paper. It could be a whole, the provides the Views with reasonabely associated system. like a computer, or a part, like and necessarythat View. a Thing with coordination circuit element. command messages. consulting training debugging wintellect.com
  • 9. What is MVVM? The Model • Domain object • Application solution • Data/Information and/or Behavior • Possible persistence information (id, GUID, etc.) • Separate from “how it got there” • Let’s be specific: • C# • VB • JavaScript • Etc. consulting training debugging wintellect.com
  • 10. What is MVVM? The View • What the user “sees” / experiences • User-friendly format for presentation • Multiple inputs (gestures) • Behaviors • Events • Data-bindings • Let’s be specific: • XAML • HTML5 consulting training debugging wintellect.com
  • 11. What is MVVM? The View Model • The “controller” – holds state • Doesn’t know about the view • Exposes methods and commands • Coordinates with services • “Owns” models, and knows how to retrieve/update them • Might be used in multiple views • Can communicate with other view models • Let’s be specific: • C# • JavaScript, etc. consulting training debugging wintellect.com
  • 12. What is MVVM What a Presentation Layer View! The Interface Don’t deal with all of this consulting training debugging wintellect.com
  • 13. What is MVVM? The View Model consulting training debugging wintellect.com
  • 14. 10 Reasons to Use MVVM 1. Separation of concerns/de-coupling. 2. Designer/developer workflow. 3. Unit testing. 4. Data-binding. 5. Code reuse. 6. Modularity. 7. Refactoring containment. 8. Extensibility. 9. Tools support (Windows Phone 7, MVVM Light, etc.) 10.Pattern vocabulary. consulting training debugging wintellect.com
  • 15. 10 Reasons to Use MVVM 1.Designer/developer workflow. 2.Unit testing. consulting training debugging wintellect.com
  • 16. MVVM Frameworks 1. PRISM (Guidance/Quickstart) 2. MVVM Light 3. Jounce 4. Caliburn / Caliburn.Micro 5. Cinch 6. nRoute 7. Catel 8. Knockout.JS 9. Kendo UI consulting training debugging wintellect.com
  • 17. How Much Does it Cost? •Learning Curve (Developers) •Bigger down payment (architecture, infrastructure) - Low interest rates and minimum monthly payments! •Visibility (de-coupling can backfire) •Unnecessary complexity consulting training debugging wintellect.com
  • 18. demo MVVM consulting training debugging wintellect.com
  • 19. Questions? Jeremy Likness Senior Consultant, Project Manager Twitter: @JeremyLikness Blog: http://csharperimage.jeremylikness.com/ consulting training debugging wintellect.com

Editor's Notes

  1. This is the first slide in your presentation!
  2. An example demo slide. You can insert this slide with the New Slide button.