Académique Documents
Professionnel Documents
Culture Documents
ADOPTER LE PATTERN
MVVM AVEC WPF
ATMANE EL BOUACHRI
PLAN
Au del du XAML
Javascript / ASP,Net,..
HISTORIQUE
S & ENJEUX
DU PATTERN
MVVM
Enjeux
Sparer UI de la logique de prsentation
Rendre l'interface utilisateur testable.
TDD..
Historique
Cr en 2005 par John Gossman
Architecte logiciel chez Microsoft pour les technologies WPF et Silverlight
Premire publication sur son blog :
http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx
LES
MODLES
MVC, MVP
ET MVVM
Vue
Smalltalk au Xerox.
Proprits
Le Modle reprsente les donnes logiques
Le Controller est l'orchestrateur
Un Controller peut grer plusieurs Vues
Utilisation
ASP.NET MVC
Contrleur
Mise--jour du modle
Modle
Testabilit
- Un bon ajustement pour un Dveloppement (TDD) approche Test-Driven.
Dsavantages
Event-driven
Classe lourde et complexe
Ne convient pas WPF
Historique
Taligent Corporation(IBM).
Proprits
Chaque Vue a un prsentateur
La Vue est passive
Prsentateur garde une rfrence de la Vue via une interface.
La vue et le modle ne sont pas connects
Utilisation
Windows Forms
Modle
Prsentation
Mise--jour du modle
Dsavantages
Round-trip
- Vue prsentateur Vue
10
Proprits
Chaque Vue a un prsentateur
La Vue implmente une interface
La Vue nest passive pas,
- Elle est connecte au modle par le DataBinding.
Utilisation
Windows Forms
Modle
Vue
Prsentation
Mise--jour du modle
11
Anatomie du pattern PM
Historique
En 2004, prsent par Martin Fowler
BLL
Proprits
La vue nimplmente aucune interface
Le PM enroule lensemble des donnes et fournit des proprits
Couplage faible entre le PM et la vue
- Vue un observateur de la PM
- DataBinding
Transmet action de l'utilisateur
Utilisation
WPF, Silverlight
Vue
Prsentation
Modle
Rafraichissement de vue
partir du modle
12
Modle
Vue
Proprits
La Vue a un seul ViewModel
Un ViewModel peut tre li plusieurs Vues
Un ViewModel est la reprsentation dune Vue
Le modle contient :
- les objets mtiers, les rgles mtiers, accs au donnes,..
Utilisation
WPF, Silverlight, Xamarin Forms,
ViewModel
tats &
oprations
13
IMPLMENT
ATION DU
MVVM AVEC
WPF / XAML
14
Vue densemble
Vue=XAML:
Toute Vue hrite de DependencyObject
ViewModel =DataContext
Le DataContext reoit une instance du ViewModel correspondant
Vue
ViewModel
Modle
15
DependencyObject / DependencyProperty
DependencyObject :
Facilitent les fonctions de support qui sont requis par un balisage dclarative XAML
DependencyObject(s) seuls peuvent hberger une DependencyProperty
Tout Control WPF hrite de DependencyObject
DependencyProperty:
16
Proprits CLR:
Un sucre syntaxique encapsulant un champ priv dune classe via get et set.
17
DataBinding
La liaison de donnes offre un moyen simple et cohrent aux applications de prsenter les donnes et d'interagir
avec.
Syntaxe :
<DependencyObject DependencyProperty={Binding Property} />
Exemple:
Binding
Vue (Xaml)
Binding Target
Depende
ncy
Property
One Way
Two Way
One Time
Property
Donne
Binding Source
18
ViewModel / Model
(Source)
XAML( Target)
PropertyChanged event
CLR Property
Dependency Property
CLR Field
Dependency Property
Dependency Property
CLR Property
19
Control
Target
Dependency
Property
Binding
Property
ViewModel
Source
Update
PropertyChanged
20
Commandes
Les commandes sont un moyen de grer des actions de l'interface utilisateur (UI)
Lier couplage faible lUI et le ViewModel qui excute l'action.
21
Conversion
Dfinition :
Modifie les donnes sources avant de les passer la cible en vue de leur affichage dans l'interface utilisateur.
Syntaxe XAML :
<TextBlock Text="{Binding Path=StartDate, Converter={StaticResource dateConverter}}"
Value Converter
CLR Object
FrameworkEleme
nt
Target
Dependency
Property
Source
Binding
Property
22
Validation
ValidationRules
IDataErrorInfo
Logique de validation UI / BL La logique de validation est dtach de la source La logique de validation est plus proche de
de donnes, et peut tre rutilise entre les
la source
contrles.
ValidatesOnDataErrors="True"
<object>
<object.ValidationRules>
MyValidations ou
ExceptionValidationRule
</object.ValidationRules>
</object>
23
24
25
ViewModelFirst
Le ViewModel est llment directeur, il instancie la View
Utilisation des DataTemplates implicites.
Souplesse pour le dveloppement mtier
Blendabilit rduite
ModelFirst
Le Model est llment directeur, approche Data centrique
les crans sont gnrs depuis les donnes (Utilisation des DataTemplates )
Exemple : Microsoft LightSwitch
26
DMO
27
LES PLUS ET
LES
MOINS
28
Avantage
Modularit
Une Vue est lie un seul ViewModel
Souplesse
UI peut tre fait par des Designer
Partage du Code
Testabilit
Model et ViewModel
Maintenabilit
29
Inconvnient
Difficile dboguer
XAML
Problmes de performance
Databinding
30
MVVM
FRAMEWOR
KS &
TOOLKITS..
31
MVVM Toolkits
MVVM Light Toolkit : Laurent Bugnion (Dbut 2011)
http://www.galasoft.ch/mvvm/getstarted
MEFedMVVM
http://mefedmvvm.codeplex.com
32
UI composite
Microsoft Prism
Framework de rfrence mis en place par Microsoft
http://www.galasoft.ch/mvvm/getstarted
Calcium SDK
http://calciumsdk.net
Caliburn
Le premier Framework construire une application composite UI avec WPF
http://caliburn.codeplex.com
33
MVVM
POUR
AUTRES
APPLICATIO
NS XAML
MVVMCROS
S
34
Softeam4U
35
Messages
Modle
ViewModel
Vue
Proprits
appel
Commandes
Platform
Specific
36
AU DEL DU
XAML !
37
AU DEL DU XAML !
JavaScript
KnockoutJS (Steve Sanderson)
http://knockoutjs.com/documentation/observables.html
ExtJS
http://www.sencha.com/blog/ext-js-5-mvc-mvvm-and-more/
Knockback.js
https://github.com/kmalakoff/knockback
Kendo UI
http://demos.telerik.com/kendo-ui/mvvm/index
38
AU DEL DU XAML !
ASP.Net
ASP.NET MVVM Excalibur
https://visualstudiogallery.msdn.microsoft.com/e63e6b76-6e15-470b-8bbe-2c3185b05635
https://www.nuget.org/packages/ASP.NET_MVVM_Excalibur
39
AU DEL DU XAML !
Adobe Flex
Projet LordViktor
https://github.com/lordviktor
Cairngorm :
Plugin applicatif Flex Visualiser et debugger les internes du framework
- http://lab.kapit.fr/default/cairngorm-console/
40
41