SlideShare ist ein Scribd-Unternehmen logo
1 von 41
palais des
congrès
Paris




7, 8 et 9
février 2012
MVVM de A à Z
08/02/2012


Arnaux AUROUX     Thomas LEBRUN
Consultant        Consultant
Infinite Square   Infinite Square
                  MVP Client App Dev
INFINITE SQUARE en quelques
mots…
  Société de conseil, expertise, réalisation, et formation,
  exclusivement sur les technologies Microsoft
  de développement d’applications et de la plateforme applicative

  25+ collaborateurs spécialisés sur les techno MS,
  dont 10 MVP…

  GOLD Certified Partner
  sur 4 domaines de compétences

  Agréé CIR

  Centre de formation
  agréé
Agenda

  Les enjeux du développeur

  Les modèles MVC et MVP

  Le XAML

  Pourquoi utiliser le pattern MVVM ?

  Anatomie du pattern

  Les différentes philosophies

  Tests unitaires

  Pour aller plus loin…
Les enjeux du développeurs

     Couplage

                                 Business
                                  Class 1          Business
         UI Class 1
                                                    Class 2




                            Data Class 1
Data Class 2                                UI Class 2




               UI Class 3        Business
                                  Class 3        Data Class 3
Les enjeux du développeur

   Les conséquences
     Applications monolithiques
     Difficilement maintenable
     Difficile à faire évoluer
     Non réutilisable
     Difficilement testable
     Régressions
Les enjeux du développeur


   Comment régler les problèmes de couple ?
     Devenez célibataire! 
        Séparation des responsabilités (principe
        SRP)
          Maintenabilité

          Evolutivité

          Testabilité
Les modèles MVC et MVP

  Les modèles existant
    MVC, MVP
      Model : la donnée
      View : l’écran
      Controller, Presenter : l’intéraction entre
      l’écran et la donnée
    Utilisation sur des projets .Net, Java, etc.
Les modèles MVC et MVP

  Les modèles existant

   Controller           View   View           Presenter




                Model                          Model


      Model View Controller    Model View Presenter
Le XAML




                      XAML

          Windows 8
Le XAML
  Présentation
    Langage de description         <Grid Margin="20">
    d’interfaces graphiques             <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto" />
                                            <RowDefinition />
                                            <RowDefinition Height="Auto" />
    Format XML                          </Grid.RowDefinitions>
                                        <TextBlock Text="Liste de produits"
                                                   Grid.Row="0"/>
                                        <ListBox Grid.Row="1>
    Facile à maintenir et à                 <ListBoxItem Content="Produit 1"/>
                                            <ListBoxItem Content="Produit 2"/>
    réutiliser                              <ListBoxItem Content="Produit 3"/>
                                        </ListBox>
                                        <Button Content="Ajouter produit"

    Interprétable par différents   </Grid>
                                                Grid.Row="2" />


    outils
        Visual studio
        Expression Blend
        Internet explorer
        …
Le XAML

              <Button Width="100“
                      Height="30"
 Déclaratif




                      Click="OnClick"
                      Background="LightBlue">
                 OK
              </Button>



              Page.xaml



              private void OnClick(object sender, RoutedEventArgs e)
 Impératif




              {
                     MessageBox.Show("Clic !");
              }




              Page.xaml.
              cs
Le XAML




            Paper
          JPG / TIFF
            PSD         C++
               XAML
             PPT         C#
                       VB.NET
          MOV / WMV
Le XAML

  DataBinding : Connexion entre l’UI et les données
      Cible du binding                Source du binding
      TextBlock                       Objet de données
                                                 « Produit »


            Propriété      Binding          Propriété
            « Text »                        « Nom »



  Définition de la source du Binding via la propriété
  DataContext
     Définit par la classe FrameworkElement
     Héritage du DataContext
Pourquoi utiliser le pattern
MVVM ?
  Pour les mêmes raisons que MVC et MVP
    Model : Les données

    View : L’UI

    ViewModel : Le pivot entre les données et l’UI



  Pour tirer pleinement profit des nouveaux concepts
  apportés par le XAML


    MVVM ? Une version de MVC, MVP adaptée
                   au XAML
Pourquoi utiliser le pattern
MVVM ?



Démo: Ce qu’il ne faut pas faire
!
Anatomie du pattern

       VIEW                 VIEWMODEL                   MODEL


                         Actions                 Objets métier
Contrôles UI
                         Etats                   Règles métier
Mise en page
                         Exposition des          Accès aux données
Evènements
                         données                 Validation
Animations     Binding
Transitions              Logique fonctionnelle
Anatomie du pattern

  Model
      Données
         Objets métier (Client, Produit, etc.)

         Transverse par rapport aux domaines fonctionnels



      Services
         Fournissent les requêtes de données

         Règles métier pour la mise à jour, suppression, etc.
Anatomie du pattern

  Model

 VIEWMODE                        SERVICE                    DAL
 L
                          GetProduitsByPeriod(begin,   LinqToXML
                          end)                         EntityFramewo
                          GetProduitByName(name)       rk
                          …                            …


            <<Produit>>
Anatomie du pattern

  Model
    Répercussion des modifications sur l’UI
       interface INotifyPropertyChanged
       Evènement PropertyChanged

    Validation
        Exception
        interface IDataErrorInfo

    Peut être décliné en 2 versions
       Version globale
       Version cliente
Démo: Implémentation du Model
Anatomie du pattern

  ViewModel
    Fait le lien entre les données à traiter et l’interface
    utilisateur
         Exposition de propriétés pour afficher/récupérer des
         valeurs
         Utilisation de commandes pour interagir avec
         l’utilisateur
    Définit l’intelligence applicative entre la donnée et sa
    représentation
    Implémente également INotifyPropertyChanged
    Elément entièrement indépendant de l’UI
       Testabilité
       Réutilisabilité avec d’autres vues
Anatomie du pattern

  ViewModel
    Les commandes
      Gestion découplée de l’interaction utilisateur
      Interface ICommand
      Méthodes Execute & CanExecute
      Implémentée en standard par certains contrôles
          Button
          CheckBox
          …
Démo: Implémentation du
ViewModel
Anatomie du pattern

  View
    Typiquement un écran de l’application
    En charge de la mise en page des données pour les
    présenter à l’utilisateur
    Couple .xaml / .xaml.cs
    Ne contient aucune logique/dépendance métier
    On peut par contre y mettre du code relatif à l’UI
    (n’hésitez pas !)
Anatomie du pattern

  View
    DataTemplate
       Représentation visuelle d’un objet (arbre XAML)
       Resource donc réutilisable
       Contextualisation de la donnée


                Produit
         Nom : Produit 1
         Prix : 20
         Disponibilité :
         08/02/2012
Anatomie du pattern

  View
    Design Time
      Utilisation d’un ViewModel factice pour le design de
      la View
      Réaction de la vue aux données
      Meilleure efficacité dans la collaboration
      designer/developpeur
      Outils de design time fournit par Expression Blend
Démo: Implémentation de la
View
Les différentes philosophies

  Approche « View First »
    La View est l’élément directeur, elle instancie le
    ViewModel
    Avantages
       Simplicité d’implémentation
       Design
    Inconvénients
       1 seul ViewModel possible par vue
Les différentes philosophies

  Approche « ViewModel First »
    Le ViewModel est l’élément directeur, il instancie la
    View.
    Utilisation des DataTemplates implicites.
    Avantages
        Souplesse pour le développement métier
    Inconvénients
        Support du DataTemplate implicite
        « Blendabilité » réduite
Démo: ViewModel First
Les différentes philosophies

  Approche « Model First »
    Le Model est l’élément directeur, approche Data
    centrique
    Exemple : Microsoft LightSwitch
    Avantages
       Réalisations rapides: les écrans sont générés
       depuis les données
       Utilisation des assistants (drag&drop depuis Visual
       Studio)
    Inconvénients
       Support du DataTemplate implicite
       Possibilité d’un temps de chargement plus long
           Vue complexe = potentielles lenteurs
Démo: Model First
Les différentes philosophies

  Quelle philosophie adopter ?
    Importance du design VS Complexité fonctionnelle

          ViewFirst              ViewModelFirst


    Mais surtout… n’ayez pas peur de varier les plaisirs !
       Les approches ViewFirst et ViewModelFirst
       peuvent coexister.
Les tests unitaires

  Assurer la qualité de l’application
    Valider unitairement une fonctionnalité
    Automatisation
  Testabilité de la couche ViewModel
    Etats
    Opérations
  Testabilité de la couche Model
    Règles métier
Démo: Ecriture de tests
Pour aller plus loin…

  Frameworks MVVM
     MVVM Light Toolkit
     ( Prism )
     Cinch
     …
     Liste descriptive : http://www.japf.fr/silverlight/mvvm/
Pour aller plus loin…

  MVVM: De la découverte à la maîtrise
    http://www.digitbooks.fr/catalogue/mvvm-antoine-
    lebrun.html
Conclusion

  Maintenabilité et pérennité de l’application

  Simple à implémenter, MVVM est votre ami 

  C’est un modèle de développement, une ligne
  directrice :

          Adaptez le à vos besoins !
Questions ?
Pour aller plus loin

                                               Prochaines sessions des Dev Camps
  Chaque semaine, les                            10
                                                          Live     Open Data - Développer des applications riches avec le
                                               février
  DevCamps                                      2012

                                                 16
                                                         Meeting   protocole Open Data


  ALM, Azure, Windows Phone, HTML5, OpenData   février
                                                          Live
                                                         Meeting
                                                                   Azure series - Développer des applications sociales sur
                                                                   la plateforme Windows Azure
                                                2012
  http://msdn.microsoft.com/fr-fr/devcamp
                                                 17
                                                          Live     Comprendre le canvas avec Galactic et la librairie
                                               février
                                                         Meeting   three.js
                                                2012

  Téléchargement, ressources                     21
                                               février
                                                          Live     La production automatisée de code avec CodeFluent
                                                         Meeting   Entities
  et toolkits : RdV sur MSDN                    2012

                                               2 mars     Live     Comprendre et mettre en oeuvre le toolkit Azure pour
  http://msdn.microsoft.com/fr-fr/              2012     Meeting   Windows Phone 7, iOS et Android

                                               6 mars     Live
                                                                   Nuget et ALM
                                                2012     Meeting

  Les offres à connaître                       9 mars
                                                2012
                                                          Live
                                                         Meeting
                                                                   Kinect - Bien gérer la vie de son capteur


         90 jours d’essai gratuit de Windows   13 mars
                                                2012
                                                          Live
                                                         Meeting
                                                                   Sharepoint series - Automatisation des tests

         Azure                                 14 mars    Live     TFS Health Check - vérifier la bonne santé de votre
          www.windowsazure.fr                   2012     Meeting   plateforme de développement

                                               15 mars    Live     Azure series - Développer pour les téléphones, les
                                                2012     Meeting   tablettes et le cloud avec Visual Studio 2010
         Jusqu’à 35% de réduction sur Visual   16 mars    Live     Applications METRO design - Désossage en règle d'un
         Studio Pro, avec l’abonnement MSDN     2012     Meeting   template METRO javascript

                                               20 mars    Live     Retour d'expérience LightSwitch, Optimisation de
          www.visualstudio.fr                   2012     Meeting   l'accès aux données, Intégration Silverlight

                                               23 mars    Live     OAuth - la clé de l'utilisation des réseaux sociaux dans
                                                2012     Meeting   votre application

Weitere ähnliche Inhalte

Was ist angesagt?

Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceLilia Sfaxi
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcabderrahim marzouk
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Introduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileIntroduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileHoussem Rouini
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++Lilia Sfaxi
 

Was ist angesagt? (20)

Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Envoi SMS JAVA
Envoi SMS JAVAEnvoi SMS JAVA
Envoi SMS JAVA
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Chp4 - Diagramme de Séquence
Chp4 - Diagramme de SéquenceChp4 - Diagramme de Séquence
Chp4 - Diagramme de Séquence
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvc
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Introduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobileIntroduction aux systèmes d'exploitation mobile
Introduction aux systèmes d'exploitation mobile
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 

Andere mochten auch

MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejCocoaHeads France
 
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModelDareen Alhiyari
 
Design Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderDesign Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderSimon Massey
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )Ahmed Emad
 
Triggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAMLTriggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAMLEyal Vardi
 
Domain logic patterns of Software Architecture
Domain logic patterns of Software ArchitectureDomain logic patterns of Software Architecture
Domain logic patterns of Software ArchitectureShweta Ghate
 
L'architecture MVVM avec KnockoutJS
L'architecture MVVM avec KnockoutJSL'architecture MVVM avec KnockoutJS
L'architecture MVVM avec KnockoutJSDavid Bottiau
 

Andere mochten auch (10)

MVVM
MVVMMVVM
MVVM
 
Présentation WPF
Présentation  WPFPrésentation  WPF
Présentation WPF
 
MVVM par Karim PIerre Maalej
MVVM par Karim PIerre MaalejMVVM par Karim PIerre Maalej
MVVM par Karim PIerre Maalej
 
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModel
 
Design Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderDesign Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-Binder
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
Triggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAMLTriggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAML
 
Domain logic patterns of Software Architecture
Domain logic patterns of Software ArchitectureDomain logic patterns of Software Architecture
Domain logic patterns of Software Architecture
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
L'architecture MVVM avec KnockoutJS
L'architecture MVVM avec KnockoutJSL'architecture MVVM avec KnockoutJS
L'architecture MVVM avec KnockoutJS
 

Ähnlich wie MVVM de A à Z

Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à zArnaud Auroux
 
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Tarik Zakaria Benmerar
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightArnaud Auroux
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2RomainKuzniak
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciellauraty3204
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Angluars js
Angluars jsAngluars js
Angluars jsRYMAA
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Microsoft
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Microsoft
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 

Ähnlich wie MVVM de A à Z (20)

Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
Web Components et Polymer 2 - GDG Algiers DevFest 2016 - 3 Décembre 2016
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Introducthion mvvm avec wpf
Introducthion mvvm avec wpfIntroducthion mvvm avec wpf
Introducthion mvvm avec wpf
 
Backbonejs presentation
Backbonejs presentationBackbonejs presentation
Backbonejs presentation
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
 
Prezentare ASP.Net.pptx
Prezentare ASP.Net.pptxPrezentare ASP.Net.pptx
Prezentare ASP.Net.pptx
 
Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Angluars js
Angluars jsAngluars js
Angluars js
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 

Mehr von Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Mehr von Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

MVVM de A à Z

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. MVVM de A à Z 08/02/2012 Arnaux AUROUX Thomas LEBRUN Consultant Consultant Infinite Square Infinite Square MVP Client App Dev
  • 3. INFINITE SQUARE en quelques mots… Société de conseil, expertise, réalisation, et formation, exclusivement sur les technologies Microsoft de développement d’applications et de la plateforme applicative 25+ collaborateurs spécialisés sur les techno MS, dont 10 MVP… GOLD Certified Partner sur 4 domaines de compétences Agréé CIR Centre de formation agréé
  • 4. Agenda Les enjeux du développeur Les modèles MVC et MVP Le XAML Pourquoi utiliser le pattern MVVM ? Anatomie du pattern Les différentes philosophies Tests unitaires Pour aller plus loin…
  • 5. Les enjeux du développeurs Couplage Business Class 1 Business UI Class 1 Class 2 Data Class 1 Data Class 2 UI Class 2 UI Class 3 Business Class 3 Data Class 3
  • 6. Les enjeux du développeur Les conséquences Applications monolithiques Difficilement maintenable Difficile à faire évoluer Non réutilisable Difficilement testable Régressions
  • 7. Les enjeux du développeur Comment régler les problèmes de couple ? Devenez célibataire!  Séparation des responsabilités (principe SRP) Maintenabilité Evolutivité Testabilité
  • 8. Les modèles MVC et MVP Les modèles existant MVC, MVP Model : la donnée View : l’écran Controller, Presenter : l’intéraction entre l’écran et la donnée Utilisation sur des projets .Net, Java, etc.
  • 9. Les modèles MVC et MVP Les modèles existant Controller View View Presenter Model Model Model View Controller Model View Presenter
  • 10. Le XAML XAML Windows 8
  • 11. Le XAML Présentation Langage de description <Grid Margin="20"> d’interfaces graphiques <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition /> <RowDefinition Height="Auto" /> Format XML </Grid.RowDefinitions> <TextBlock Text="Liste de produits" Grid.Row="0"/> <ListBox Grid.Row="1> Facile à maintenir et à <ListBoxItem Content="Produit 1"/> <ListBoxItem Content="Produit 2"/> réutiliser <ListBoxItem Content="Produit 3"/> </ListBox> <Button Content="Ajouter produit" Interprétable par différents </Grid> Grid.Row="2" /> outils Visual studio Expression Blend Internet explorer …
  • 12. Le XAML <Button Width="100“ Height="30" Déclaratif Click="OnClick" Background="LightBlue"> OK </Button> Page.xaml private void OnClick(object sender, RoutedEventArgs e) Impératif { MessageBox.Show("Clic !"); } Page.xaml. cs
  • 13. Le XAML Paper JPG / TIFF PSD C++ XAML PPT C# VB.NET MOV / WMV
  • 14. Le XAML DataBinding : Connexion entre l’UI et les données Cible du binding Source du binding TextBlock Objet de données « Produit » Propriété Binding Propriété « Text » « Nom » Définition de la source du Binding via la propriété DataContext Définit par la classe FrameworkElement Héritage du DataContext
  • 15. Pourquoi utiliser le pattern MVVM ? Pour les mêmes raisons que MVC et MVP  Model : Les données  View : L’UI  ViewModel : Le pivot entre les données et l’UI Pour tirer pleinement profit des nouveaux concepts apportés par le XAML MVVM ? Une version de MVC, MVP adaptée au XAML
  • 16. Pourquoi utiliser le pattern MVVM ? Démo: Ce qu’il ne faut pas faire !
  • 17. Anatomie du pattern VIEW VIEWMODEL MODEL Actions Objets métier Contrôles UI Etats Règles métier Mise en page Exposition des Accès aux données Evènements données Validation Animations Binding Transitions Logique fonctionnelle
  • 18. Anatomie du pattern Model  Données  Objets métier (Client, Produit, etc.)  Transverse par rapport aux domaines fonctionnels  Services  Fournissent les requêtes de données  Règles métier pour la mise à jour, suppression, etc.
  • 19. Anatomie du pattern Model VIEWMODE SERVICE DAL L GetProduitsByPeriod(begin, LinqToXML end) EntityFramewo GetProduitByName(name) rk … … <<Produit>>
  • 20. Anatomie du pattern Model Répercussion des modifications sur l’UI interface INotifyPropertyChanged Evènement PropertyChanged Validation Exception interface IDataErrorInfo Peut être décliné en 2 versions Version globale Version cliente
  • 22. Anatomie du pattern ViewModel Fait le lien entre les données à traiter et l’interface utilisateur Exposition de propriétés pour afficher/récupérer des valeurs Utilisation de commandes pour interagir avec l’utilisateur Définit l’intelligence applicative entre la donnée et sa représentation Implémente également INotifyPropertyChanged Elément entièrement indépendant de l’UI Testabilité Réutilisabilité avec d’autres vues
  • 23. Anatomie du pattern ViewModel Les commandes Gestion découplée de l’interaction utilisateur Interface ICommand Méthodes Execute & CanExecute Implémentée en standard par certains contrôles Button CheckBox …
  • 25. Anatomie du pattern View Typiquement un écran de l’application En charge de la mise en page des données pour les présenter à l’utilisateur Couple .xaml / .xaml.cs Ne contient aucune logique/dépendance métier On peut par contre y mettre du code relatif à l’UI (n’hésitez pas !)
  • 26. Anatomie du pattern View DataTemplate Représentation visuelle d’un objet (arbre XAML) Resource donc réutilisable Contextualisation de la donnée Produit Nom : Produit 1 Prix : 20 Disponibilité : 08/02/2012
  • 27. Anatomie du pattern View Design Time Utilisation d’un ViewModel factice pour le design de la View Réaction de la vue aux données Meilleure efficacité dans la collaboration designer/developpeur Outils de design time fournit par Expression Blend
  • 29. Les différentes philosophies Approche « View First » La View est l’élément directeur, elle instancie le ViewModel Avantages Simplicité d’implémentation Design Inconvénients 1 seul ViewModel possible par vue
  • 30. Les différentes philosophies Approche « ViewModel First » Le ViewModel est l’élément directeur, il instancie la View. Utilisation des DataTemplates implicites. Avantages Souplesse pour le développement métier Inconvénients Support du DataTemplate implicite « Blendabilité » réduite
  • 32. Les différentes philosophies Approche « Model First » Le Model est l’élément directeur, approche Data centrique Exemple : Microsoft LightSwitch Avantages Réalisations rapides: les écrans sont générés depuis les données Utilisation des assistants (drag&drop depuis Visual Studio) Inconvénients Support du DataTemplate implicite Possibilité d’un temps de chargement plus long Vue complexe = potentielles lenteurs
  • 34. Les différentes philosophies Quelle philosophie adopter ? Importance du design VS Complexité fonctionnelle ViewFirst ViewModelFirst Mais surtout… n’ayez pas peur de varier les plaisirs ! Les approches ViewFirst et ViewModelFirst peuvent coexister.
  • 35. Les tests unitaires Assurer la qualité de l’application Valider unitairement une fonctionnalité Automatisation Testabilité de la couche ViewModel Etats Opérations Testabilité de la couche Model Règles métier
  • 37. Pour aller plus loin… Frameworks MVVM MVVM Light Toolkit ( Prism ) Cinch … Liste descriptive : http://www.japf.fr/silverlight/mvvm/
  • 38. Pour aller plus loin… MVVM: De la découverte à la maîtrise http://www.digitbooks.fr/catalogue/mvvm-antoine- lebrun.html
  • 39. Conclusion Maintenabilité et pérennité de l’application Simple à implémenter, MVVM est votre ami  C’est un modèle de développement, une ligne directrice : Adaptez le à vos besoins !
  • 41. Pour aller plus loin Prochaines sessions des Dev Camps Chaque semaine, les 10 Live Open Data - Développer des applications riches avec le février DevCamps 2012 16 Meeting protocole Open Data ALM, Azure, Windows Phone, HTML5, OpenData février Live Meeting Azure series - Développer des applications sociales sur la plateforme Windows Azure 2012 http://msdn.microsoft.com/fr-fr/devcamp 17 Live Comprendre le canvas avec Galactic et la librairie février Meeting three.js 2012 Téléchargement, ressources 21 février Live La production automatisée de code avec CodeFluent Meeting Entities et toolkits : RdV sur MSDN 2012 2 mars Live Comprendre et mettre en oeuvre le toolkit Azure pour http://msdn.microsoft.com/fr-fr/ 2012 Meeting Windows Phone 7, iOS et Android 6 mars Live Nuget et ALM 2012 Meeting Les offres à connaître 9 mars 2012 Live Meeting Kinect - Bien gérer la vie de son capteur 90 jours d’essai gratuit de Windows 13 mars 2012 Live Meeting Sharepoint series - Automatisation des tests Azure 14 mars Live TFS Health Check - vérifier la bonne santé de votre www.windowsazure.fr 2012 Meeting plateforme de développement 15 mars Live Azure series - Développer pour les téléphones, les 2012 Meeting tablettes et le cloud avec Visual Studio 2010 Jusqu’à 35% de réduction sur Visual 16 mars Live Applications METRO design - Désossage en règle d'un Studio Pro, avec l’abonnement MSDN 2012 Meeting template METRO javascript 20 mars Live Retour d'expérience LightSwitch, Optimisation de www.visualstudio.fr 2012 Meeting l'accès aux données, Intégration Silverlight 23 mars Live OAuth - la clé de l'utilisation des réseaux sociaux dans 2012 Meeting votre application

Hinweis der Redaktion

  1. Tom
  2. Tom
  3. Tom
  4. ArnaudProblème général – ensemble de complexités – décisions – séries d’actions – nous ne sommes omnicients – action soumise à une série de variable qui peuvent changer la donne – degré de souplesse – sinon un seul changement peut causer l’effrondement des actions prises – même problème pour le dev d’application – application pour résoudre un problème – action = développer un écran, règles métier, accès aux données – lien naturel entre les actions car même application – modification sur une brique peut avoir un impact qui se propage via ces liens =&gt; pas acceptable
  5. Arnaud
  6. ArnaudSéparation des responsabilités : une classe doit gérer une responsabilité unique, une responsabilité doit être vu comme un regroupement de fonctionnalités ayant un sens fonctionnel commun.
  7. Arnaud
  8. ArnaudModel: les objets à afficher dans la vueVue : Représenter graphiquement les différentes propriétés du modelMVC : Controller -&gt;Gère les intéractions entre la view et le model, chaque action passe par le controllerMVP : Presenter -&gt; Basé en grande partie sur le MVP, pproche plus découplée que le MVC, le presenter ne connait pas directement la view. Le presenter se situe entre la view et le model, ils sont entièrement indépendant l’un de l’autre, le presenter met à jour la view par rapport aux états du model
  9. Tom2D, 3D drawing, animations, styling, document flow
  10. Tom
  11. Tom
  12. Tom
  13. Tom
  14. Tom
  15. Tom
  16. Tom
  17. Arnaud
  18. Arnaud
  19. Arnaud
  20. Arnaud
  21. Arnaud
  22. Arnaud
  23. Arnaud
  24. Arnaud
  25. Arnaud
  26. Arnaud
  27. Arnaud
  28. Arnaud
  29. Tom
  30. Tom
  31. Arnaud
  32. Tom
  33. Arnaud
  34. Tom
  35. Tom
  36. Arnaud
  37. Tom + Arnaud
  38. Tom
  39. Arnaud