Nicolas CLERC Tekigo – Cofounder nclerc@tekigo.com

  • View
    105

  • Download
    1

Embed Size (px)

Transcript

  • Page 1
  • Nicolas CLERC Tekigo Cofounder nclerc@tekigo.com
  • Page 2
  • Impact non technologique de WPF Architectures possibles facilitant la collaboration Rendre accessible les donnes Dclencher des traitements et des actions
  • Page 3
  • Hormis les nouveauts techniques, WPF impacte La structure des projets et des quipes Importance de lesthtique Hors de comptence du dveloppeur Apparition de nouveaux profils dans les quipes Designer Intgrateur WPF
  • Page 4
  • On retrouve la situation connue lors des premiers projets web Soit pilot 100% dev esthtisme approximatif Soit pilot 100% design code & fiabilit trs faible, rutilisabilit quasi impossible Actuellement les Webdesigner sont pour la plupart des profils hybrides maitrisant le design & le dev via des outils adapts.
  • Page 5
  • ADDesignerIntgrateur visuel dveloppeurExpert technique Architect
  • Page 6
  • DesignerDveloppeur Cration Forme Gabarit couleur Images Typographie Architecture Code Pattern Composant
  • Page 7
  • La quadrature du cercle : Ne pas brider la crativit du designer Profiter de la puissance de WPF & de XAML Crer une architecture applicative fiable et performante 4 e point
  • Page 8
  • Design -> intgration -> codage On laisse faire le designer Expression Designer Lintgrateur WPF se dbrouille pour gnrer du XAML avec Expression Blend Le dveloppeur se dbrouille avec le XAML gnr pour ajouter le code technique et fonctionnel Inconvnient : Mono itration une 2 e passe de design ou dintgration est excessivement risque, complexe, donc couteuse
  • Page 9
  • Le designer cre son visuel Le dveloppeur cre un squelette technique en utilisant les contrles standards de WPF IHM : ListBox, UserControl, Event Handler : Click, SelectionChanged, Lintgrateur prend le relais & partir du squelette technique et plaque le visuel conu par le designer En // le dveloppeur commence intgrer les lments fonctionnels
  • Page 10
  • Itration possible, mais volution darchitecture complexe La structure technique du projet est relativement fige Complexit si le designer fait voluer laspect esthtique de manire importante Idal pour les prototypes, POC ou petites applications jetables
  • Page 11
  • Dcorrler compltement laspect esthtique et visuel, du fonctionnel de lapplication Modle la MVC adapt la sauce WPF Fournir des lments techniques visuels directement utilisable dans loutil de lintgrateur (Blend) Sans ligne de code ou de XAML Utilisation massive des Template & des Style
  • Page 12
  • Contrleur fonctionnel Visuel Controleur visuel Implmentation de lesthtique de lapplication Template Style StoryBoard Eventuellement seul le support technique est impos : Window Page UserControl Implmentation de lesthtique de lapplication Template Style StoryBoard Eventuellement seul le support technique est impos : Window Page UserControl Controleur visuel Contrleur visuel Couche technique dintgration fonctionnelle. Multi instance Support du design visuel Intgration avec blend Expose les traitements & fonctionnalits sous la forme de Command DependencyProperty Event ObservableCollection Couche technique dintgration fonctionnelle. Multi instance Support du design visuel Intgration avec blend Expose les traitements & fonctionnalits sous la forme de Command DependencyProperty Event ObservableCollection Modle de donnes Implmentation des fonctionnalits mtiers de lapplication Trs souvent sous la forme dun singleton Implmentation des fonctionnalits mtiers de lapplication Trs souvent sous la forme dun singleton Modle de donnes Support de lintgration WPF -ObservableCollection si possible - INotifyPropertyChanged Modle de donnes Support de lintgration WPF -ObservableCollection si possible - INotifyPropertyChanged
  • Page 13
  • Une application de gestion de Contacts Une couche de donnes Fournit un ensemble de Contact Une couche fonctionnelle Modifier ses informations Une couche dinteraction avec lutilisateur
  • Page 14
  • Blend & Visual Studio 2008 Un namespace : System.ComponentModel Quelques attributs : [Category( MaCategory )] [Description( Listes des contacts )] [Browsable(true)] Quelques mthodes : DesignerProperties.GetIsInDesignMode() Permets de savoir si un DependencyObject est instanci au sein dun designer
  • Page 15
  • Page 16
  • Ncessit dexposer les donnes vers XAML/WPF Notifier les changements de valeur des donnes Notifier les changements dans le contenu des collections de donnes Les proprits.NET Utilisable en XAML (mapping automatique en attribut XAML) Pas de binding Pas danimation
  • Page 17
  • Permet une classe de notifier tout changement survenu sur ses donnes Fonctionne sur un principe dabonnement
  • Page 18
  • Collection gnrique notifiant tous changements survenus sur les lments contenus dans la collection Utilisation couple avec des classes implmentant INotifyPropertyChange Notification tous les niveaux dimbrication Elment de la collection Donnes des lments
  • Page 19
  • Page 20
  • Dfinie une donne attache un lment et stock en dehors de cet lement Utilisable pour Binding avanc, Animation, Suivre les changements de valeur, Souvent coupl une proprit pour laccs la valeur par le code Le porteur doit hriter de DependencyObject
  • Page 21
  • Permet dattacher une DependencyProperty un DependencyObject qui nen tait pas initialement pourvu Permet dtendre le comportement dlments qui navaient pas t conus pour cela. Souvent coupl 2 mthodes statiques : SetMyProperty, GetMyProperty Ex: Canvas.Grid peut tre appliqu sur un Label Grid.Row / Grid.Column applicable aussi sur un Label
  • Page 22
  • Page 23
  • Appeler une mthode ou une fonction Impossible directement partir de Blend Sauf si lintgrateur est form au langage.NET utilis dans le projet Dclencher des modifications visuelles partir du code fonctionnel sans connaitre laspect visuel de lapplication Impossible sauf usine gaz et guide de programmation trs cadr.
  • Page 24
  • Code visuel Code fonctionnel Une RoutedCommand dcouple une action de la dfinition de son dclencheur Le dclenchement dune commande peut tre compar lappel dune mthode. Un paramtre peut y tre associ La dclenchement dune commande est disponible pour toute classe hritant de ButtonBase
  • Page 25
  • De nombreuses commandes sont dj dfinies dans le framework ApplicationCommands Copy/Paste... ComponentCommands MediaCommands NavigationsCommands EditingCommands On peut crer ses propres RoutedCommand
  • Page 26
  • Code fonctionnel Code visuel Expos par le contrleur visuel Attrapable en XAML par lintermdiaire des triggers pour modifier le visuel Dclenchement de storyboard, Parcours de larbre visuel de WPF Autre Possibilit : Utiliser une DependencyProperty pour un dclenchement li un changement de valeur de donne PropertyTrigger
  • Page 27
  • Page 28
  • La gestion du mode design peut tre compliqu Fournir des donnes de test au designer en labsence de donnes relles Simuler ou grer des services non disponible en mode design Doit tre pris en compte ds le dbut de la conception du projet
  • Page 29
  • 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.