palais des
congrès
Paris



7, 8 et 9
février 2012
Améliorez votre
productivité XAML en           07/02/2012


entreprise
Luc VO VAN          Thomas LEBRUN
Consultant Dev/UX   Consultant
Microsoft           Infinite Square
                    MVP Client App Dev
Luc Vo Van

  Consultant chez Microsoft Consulting Services
  Spécialités
   .NET
   XAML (Silverlight, WPF, Windows Phone, Surface, Metro…)
   Expérience Utilisateur (UX)
   Windows Azure
Microsoft Services
Une expertise tout au long du cycle de vie informatique




  Entreprise Strategy
                               Microsoft Consulting Services
                                                                         Support Premier

  Evaluation                    Développement          Stabilisation                       Support

               Planification               Déploiement                 Opérations


  Alignement business & IT             Déploiement et adoption         Optimisation et Opération


                                             Partenaires
Thomas Lebrun

  Consultant Infinite Square
  MVP Client Application Development
  Spécialités
   .NET
   XAML (Silverlight, WPF, Windows Phone, Surface, Metro…)
   Expérience Utilisateur (UX)

  Auteur de:
    WPF par la pratique
    MVVM: De la découverte à la maitrise
INFINITE SQUARE en quelques
mots…de conseil, expertise, réalisation, et formation,
   Société
     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éé
Objectif de la session


   Des techniques éprouvées

  Pour vous faire gagner du temps
  
Agenda
  Recap!*

  Les Behaviors, les ViewStates*

  Quel Framework MVVM ?

  Pattern ViewModelLocator

  Bien choisir ses contrôles, cas concrets!

  Asynchronisme : des applications réactives

  Gestion élégante des erreurs
Récap !
  Vu aux TechDays 2011
    Architecture type

       IoC

       Chargement de Modules

       Services

       ViewFirst / ViewModelFirst

    Testing
Récap !
  Pourquoi XAML en entreprise ?

      Disponible sur tous types de form factors
      Haute productivité
      Ecosystème riche
         Développeurs

         Documentation (MSDN, Blogs, Codeplex…)

         Frameworks & contrôles tiers

      Outillage mature (VS + Blend, outils tiers)
Les behaviors

  Equivalent des méthode d’extensions pour les contrôles

  Permettent d’ajouter simplement des fonctionnalités
    Sans avoir accès au code source

    Sans faire d’héritage



  Basé sur le SDK Expression Blend
Utilisation des behaviors !

Jetons nous à l’eau 
Les ViewStates
  Permet de définir des états visuels avec transitions

  Très utilisé avec les formulaires
    Passage du mode édition au mode lecture

    Passage du mode simple au mode détaillé



  Utilisable avec MVVM
    Liaison aux ViewModels avec le DataStateBehavior


  Attention à la taille du XAML à parser !
Utilisation des ViewStates !
Quel Framework MVVM ?
  Il y a beaucoup de choix de qualité !

  Critères
    Commanding



     Modularité, messaging
     Impact sur le code, adhérence
     Shell services
     Validation
Quel Framework MVVM ?
  Il y a beaucoup de choix de qualité !

     MVVM Light
     Cinch
     Prism
     Caliburn
     …
ViewModelLocator
  Approche MVVM

  Point d’accès central à l’ensemble des ViewModels

  Facilite l’utilisation de l’injection de dépendances
    Flexibilité par l’injection

    Meilleure "blendabilité"
ViewModelLocator

Blendabilité
Bien choisir ses contrôles
  Fonctionnalités VS Complexité VS Performance

  Checklist
    Behaviors

    Retemplate ? Héritage ? Est-ce le bon contrôle ?

    Utiliser un composant du marché

    Réécrire un contrôle
Bien choisir ses contrôles :
DataGrid
   Cas 1 : Quand la ListView suffit

       Lecture seule
       Performance
       Simplicité
Bien choisir ses contrôles :
DataGrid
   Cas 2 : Composants du marché

      Utilisation d’un composant tiers
      Possibilité d’en changer de composant en fonction des
       besoins
      Performance
      Ouverture aux autres technologies
Bien choisir ses contrôles :
DataGrid
   Cas 2
                              myUIModel
                                  =
                         new UIModel(source)
     Modèle métier                                   Modèle UI


                                                                 myControl.Model
                                                                         =
                                                                    myUIModel


        Autre                                      Contrôle maître
     Contrôle tiers
     Contrôle tiers            mappings
                      tiersControl <-> myUIModel
Bien choisir ses contrôles :
DataGridla mano
   Cas 3 : à
      Performance
      Grille interactive, edition/lecture simples : que des
       chiffres

      Contrôle from scratch
         Panel virtualisé, scrolling

         Réduction drastique du visual tree

         Gestion de la navigation clavier…
Bien choisir ses contrôles
  Que vous le vouliez ou non : vous créez un framework
   Quel est son coût d’entrée ?

   Quelles sont les fonctionnalités implémentées ?

   Est-il réutilisable ?



  Créez une solution autonome permettant de
    Tester instantanément vos développements UI

    Démontrer et expliquer votre framework

    Eviter les dépendances accidentelles
Asynchronisme
  Libérez le thread UI dès que possible!

  Ressenti de l’utilisateur
    Contrôle

    Performance

    Qualité

    Confiance!
Asynchronisme
  Libérez le thread UI dès que possible!

  Concrètement
    BackgroundWorker

    Tasks

    Méthodes Async sur les proxies WCF

    Threads (au pire!)


     ProgressBar
     Sablier
     StatusBar
Asynchronisme

Feelin’ good
Gestion élégante des erreurs
  Relativisez !
    Prévoir les erreurs imprévues

    Récupérer les traces

    Inviter l’utilisateur à les communiquer, le rassurer (un peu )



  Concrètement
    Envoyer par email

    Copier dans le presse-papier

    Journal des évènements (WPF)

    Capture d’écran
Gestion des erreurs

(Sauf pour Thomas qui n’en fait jamais)
Q&A
    13:00 WPF 4.5 Quoi de neuf pour les développeurs
?

    14:30 XAML / WPF Chasse aux fuites mémoire !
Pour aller plus loin
  Chaque semaine, les DevCamps                        Prochaines sessions des Dev Camps
                                                      10 février                  Open Data - Développer des applications riches avec le protocole Open
                                                                   Live Meeting
  ALM, Azure, Windows Phone, HTML5, OpenData            2012                      Data

  http://msdn.microsoft.com/fr-fr/devcamp             16 février
                                                        2012
                                                                   Live Meeting
                                                                                  Azure series - Développer des applications sociales sur la plateforme
                                                                                  Windows Azure

                                                      17 février
                                                                   Live Meeting   Comprendre le canvas avec Galactic et la librairie three.js
                                                        2012

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

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



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

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


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

                                                      15 mars                     Azure series - Développer pour les téléphones, les tablettes et le cloud
         Jusqu’à 35% de réduction sur Visual Studio    2012
                                                                   Live Meeting
                                                                                  avec Visual Studio 2010

         Pro, avec l’abonnement MSDN                  16 mars
                                                       2012
                                                                   Live Meeting
                                                                                  Applications METRO design - Désossage en règle d'un template METRO
                                                                                  javascript
          www.visualstudio.fr                         20 mars
                                                                   Live Meeting
                                                                                  Retour d'expérience LightSwitch, Optimisation de l'accès aux données,
                                                       2012                       Intégration Silverlight

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

Améliorer votre productivité XAML en entreprise !

  • 1.
  • 2.
    Améliorez votre productivité XAMLen 07/02/2012 entreprise Luc VO VAN Thomas LEBRUN Consultant Dev/UX Consultant Microsoft Infinite Square MVP Client App Dev
  • 3.
    Luc Vo Van Consultant chez Microsoft Consulting Services Spécialités  .NET  XAML (Silverlight, WPF, Windows Phone, Surface, Metro…)  Expérience Utilisateur (UX)  Windows Azure
  • 4.
    Microsoft Services Une expertisetout au long du cycle de vie informatique Entreprise Strategy Microsoft Consulting Services Support Premier Evaluation Développement Stabilisation Support Planification Déploiement Opérations Alignement business & IT Déploiement et adoption Optimisation et Opération Partenaires
  • 5.
    Thomas Lebrun Consultant Infinite Square MVP Client Application Development Spécialités  .NET  XAML (Silverlight, WPF, Windows Phone, Surface, Metro…)  Expérience Utilisateur (UX) Auteur de:  WPF par la pratique  MVVM: De la découverte à la maitrise
  • 6.
    INFINITE SQUARE enquelques mots…de conseil, expertise, réalisation, et formation, Société 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éé
  • 7.
    Objectif de lasession Des techniques éprouvées Pour vous faire gagner du temps 
  • 8.
    Agenda Recap!* Les Behaviors, les ViewStates* Quel Framework MVVM ? Pattern ViewModelLocator Bien choisir ses contrôles, cas concrets! Asynchronisme : des applications réactives Gestion élégante des erreurs
  • 9.
    Récap ! Vu aux TechDays 2011  Architecture type  IoC  Chargement de Modules  Services  ViewFirst / ViewModelFirst  Testing
  • 10.
    Récap ! Pourquoi XAML en entreprise ?  Disponible sur tous types de form factors  Haute productivité  Ecosystème riche  Développeurs  Documentation (MSDN, Blogs, Codeplex…)  Frameworks & contrôles tiers  Outillage mature (VS + Blend, outils tiers)
  • 11.
    Les behaviors Equivalent des méthode d’extensions pour les contrôles Permettent d’ajouter simplement des fonctionnalités  Sans avoir accès au code source  Sans faire d’héritage Basé sur le SDK Expression Blend
  • 12.
    Utilisation des behaviors! Jetons nous à l’eau 
  • 13.
    Les ViewStates Permet de définir des états visuels avec transitions Très utilisé avec les formulaires  Passage du mode édition au mode lecture  Passage du mode simple au mode détaillé Utilisable avec MVVM  Liaison aux ViewModels avec le DataStateBehavior Attention à la taille du XAML à parser !
  • 14.
  • 15.
    Quel Framework MVVM? Il y a beaucoup de choix de qualité ! Critères  Commanding  Modularité, messaging  Impact sur le code, adhérence  Shell services  Validation
  • 16.
    Quel Framework MVVM? Il y a beaucoup de choix de qualité !  MVVM Light  Cinch  Prism  Caliburn  …
  • 17.
    ViewModelLocator ApprocheMVVM Point d’accès central à l’ensemble des ViewModels Facilite l’utilisation de l’injection de dépendances  Flexibilité par l’injection  Meilleure "blendabilité"
  • 18.
  • 19.
    Bien choisir sescontrôles Fonctionnalités VS Complexité VS Performance Checklist  Behaviors  Retemplate ? Héritage ? Est-ce le bon contrôle ?  Utiliser un composant du marché  Réécrire un contrôle
  • 20.
    Bien choisir sescontrôles : DataGrid Cas 1 : Quand la ListView suffit  Lecture seule  Performance  Simplicité
  • 21.
    Bien choisir sescontrôles : DataGrid Cas 2 : Composants du marché  Utilisation d’un composant tiers  Possibilité d’en changer de composant en fonction des besoins  Performance  Ouverture aux autres technologies
  • 22.
    Bien choisir sescontrôles : DataGrid Cas 2 myUIModel = new UIModel(source) Modèle métier Modèle UI myControl.Model = myUIModel Autre Contrôle maître Contrôle tiers Contrôle tiers mappings tiersControl <-> myUIModel
  • 23.
    Bien choisir sescontrôles : DataGridla mano Cas 3 : à  Performance  Grille interactive, edition/lecture simples : que des chiffres  Contrôle from scratch  Panel virtualisé, scrolling  Réduction drastique du visual tree  Gestion de la navigation clavier…
  • 24.
    Bien choisir sescontrôles Que vous le vouliez ou non : vous créez un framework  Quel est son coût d’entrée ?  Quelles sont les fonctionnalités implémentées ?  Est-il réutilisable ? Créez une solution autonome permettant de  Tester instantanément vos développements UI  Démontrer et expliquer votre framework  Eviter les dépendances accidentelles
  • 25.
    Asynchronisme Libérezle thread UI dès que possible! Ressenti de l’utilisateur  Contrôle  Performance  Qualité  Confiance!
  • 26.
    Asynchronisme Libérezle thread UI dès que possible! Concrètement  BackgroundWorker  Tasks  Méthodes Async sur les proxies WCF  Threads (au pire!)  ProgressBar  Sablier  StatusBar
  • 27.
  • 28.
    Gestion élégante deserreurs Relativisez !  Prévoir les erreurs imprévues  Récupérer les traces  Inviter l’utilisateur à les communiquer, le rassurer (un peu ) Concrètement  Envoyer par email  Copier dans le presse-papier  Journal des évènements (WPF)  Capture d’écran
  • 29.
    Gestion des erreurs (Saufpour Thomas qui n’en fait jamais)
  • 30.
    Q&A 13:00 WPF 4.5 Quoi de neuf pour les développeurs ? 14:30 XAML / WPF Chasse aux fuites mémoire !
  • 31.
    Pour aller plusloin Chaque semaine, les DevCamps Prochaines sessions des Dev Camps 10 février Open Data - Développer des applications riches avec le protocole Open Live Meeting ALM, Azure, Windows Phone, HTML5, OpenData 2012 Data http://msdn.microsoft.com/fr-fr/devcamp 16 février 2012 Live Meeting Azure series - Développer des applications sociales sur la plateforme Windows Azure 17 février Live Meeting Comprendre le canvas avec Galactic et la librairie three.js 2012 Téléchargement, ressources et 21 février 2012 Live Meeting La production automatisée de code avec CodeFluent Entities toolkits : RdV sur MSDN 2 mars 2012 Live Meeting Comprendre et mettre en oeuvre le toolkit Azure pour Windows Phone 7, iOS et Android http://msdn.microsoft.com/fr-fr/ 6 mars Live Meeting Nuget et ALM 2012 Les offres à connaître 9 mars Live Meeting Kinect - Bien gérer la vie de son capteur 2012 13 mars 90 jours d’essai gratuit de Windows Azure 2012 Live Meeting Sharepoint series - Automatisation des tests www.windowsazure.fr 14 mars 2012 Live Meeting TFS Health Check - vérifier la bonne santé de votre plateforme de développement 15 mars Azure series - Développer pour les téléphones, les tablettes et le cloud Jusqu’à 35% de réduction sur Visual Studio 2012 Live Meeting avec Visual Studio 2010 Pro, avec l’abonnement MSDN 16 mars 2012 Live Meeting Applications METRO design - Désossage en règle d'un template METRO javascript www.visualstudio.fr 20 mars Live Meeting Retour d'expérience LightSwitch, Optimisation de l'accès aux données, 2012 Intégration Silverlight 23 mars Live Meeting OAuth - la clé de l'utilisation des réseaux sociaux dans votre application 2012

Notes de l'éditeur