140 likes | 299 Views
MVVM Pattern. Mahender Senior Software Engineer United Health Group. Mahender Sarangam.
E N D
MVVM Pattern Mahender Senior Software Engineer United Health Group
Mahender Sarangam • Having 5 years of experience on .NET Technologies. Working as a Senior Software Engineer in United Health Group (UHG India Information Service Ltd.). Worked with Big Firms like Deloitte Consulting & Wipro Technology. • Got Technical Acquaintance on Technologies like C#, ASP.NET,AJAX, LINQ, Silverlight, WPF,WCF ,SQL Server, Team Foundation Server(TFS) and SharePoint Technology. • MCTS Certified in Web Technologies. • Blog : http://Msarangam.wordpress.com
Why Do need Pattern Everything in code behind, is not a good idea
Why Do need Pattern • Basic Motivation of separation pattern • Removing logic from Code behind • Interchanging UI screens • Create Unit test case foe logic and UI • Developers and Designers can work parallel. • Model never needs to be changed to support changes to the view • No duplicated code to update views • So what is MVVM ? • Its variation of MVC pattern • John Gossman from WPF team • Resources from external assemblies • Martin Fowler's Presentation Model (PM) pattern
Diagram • View Knows VIEW MODEL • VIEW MODEL Knows MODEL • BUT VIEWMODEL does not know View View View Model Model
View • Represents the user interface that the user will see. • Can be a user control or Data Template • Keep the view as simple as possible. • Uses Binding to “subscribe” to the ViewModel • Interprets business data and state of ViewModel to the human • Nothing but Presentation - XAML • No or minimal code-behind
View Model • An abstraction of View • Connector between View and Model • Keep View State, Value Conversion • No strong or weak (via Interface) reference of View • Make VM as testable as possible (e.g. no call to Singleton class) • No Control related Stuff in VM • Provides data to and from the View • Responds to both the View and the Model • Informs the View of changes in the data • Reusable (at least much more than code behind a form)
Model • Can be Data Model, DTO, POCO, auto-generated proxy of domain class and UI Model based on how you want to have the separation between Domain Service and Presentation Layer • No reference to View Model • Typical class that covers a database • Could be a WCF Service and its client reference
SupportingLibraires and Framework • WPF Team : MVVM Toolkit • MS Pattern and Practice Team : Composite WPF (Prism) • Josh Smith. "MVVM Foundation" • Sacha Barber. "Cinch." • Karl Shifflett. "Ocean" • Laurent Bugnion. "MVVM Light Toolkit" • Lester Lobo. "CoreMVVM" • Rob Eisenberg. "Caliburn" • William e Kempf. "Onyx" • Peter O’Hanlon. "GoldLight" • jbe. "WPF Application Framework (WAF)" • Paul Stovel : MacroModels