MVVM Pattern - WordPress.com

Download Report

Transcript MVVM Pattern - WordPress.com

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
MVC & MVP Difference
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, autogenerated 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
Supporting Libraires 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
Thank you