b.MV-VM Pattern

  1. Motivation
    1. To create a highly responsive composit UI pattern
  2. Summary
    1. The Model View ViewModel (MVVM) is originated from Microsoft as a specialization of the presentation model design pattern introduced by Martin Fowler. mainly  targeted to WPF and Silverlight application. 
    2. Largely based on the model–view–controller pattern (MVC), MVVM is targeted at modern UI development platforms which support Event-driven programming, such as HTML5,[2][3] Windows Presentation Foundation (WPF), Silverlight and the ZK framework.
    3. MVVM was designed to make use of data binding functions in WPF to better facilitate the separation of view layer development from the rest of the pattern by removing virtually all GUI code (“code-behind”) from the view layer
    4. There are several framework like MV-VM tool Kit and PRISM that makes MV-VM development very easy 
  3. When to USE
    1. When you are building thick client application like silverligt and WPF that provides rich data binding support.
  4. Simple MVVM Tutorials
    1. WPF Silverlight MVVM Pattern: A Simple Tutorial for Absolute Beginners
    2. WPF/MVVM Quick Start Tutorial-CodeProject
    3. WPF Apps With The Model-View-ViewModel Design Pattern - MSDN
    4. Using the MVVM Pattern in Silverlight Applications
  5.  Videos 
    1. Silverlight Firestarter 2010 Session 4 - MVVM: Why and How? Tips and Patterns using MVVM and Service Patterns with Silverlight and WP7
    2. Understanding the Model-View-ViewModel Pattern
  6. Books
    1. Advanced.MVVM-josh smith
  7. MVVM-Frameworks 
    1. PRISM – provided by Microsoft. Works with MEF/Unity for dependency injection, has composite commands and is extensible. Detailed tutorials and walkthroughs at MSDN
    2. MVVM Light Toolkit – has Project and Item templates for Visual Studio and Expression Blend. Read more here and refer tutorials on working with VS and Expression Blend.
    3. Caliburn Micro – supports ViewModel-First and View-First development, Asynchronous programming through co-routines.
    4. Simple MVVM Toolkit – provides VS Project and Item Templates, Dependency Injection, support for Deep cloning and Property Association between Model and ViewModel
    5. Catel – includes Project and Item templates, user controls and enterprise library classes. Supports Dynamic View Model injection, lazy loading of view models and validations. Also sports WP7 specific view model services 
    6. Ref :  http://www.infoq.com/news/2011/12/mvvm-frameworks-net