Découvrez les avantages clefs de l`interface graphique

Transcription

Découvrez les avantages clefs de l`interface graphique
 Windows Presentation Foundation ? CQFD ! Développer une nouvelle application sous Windows demande non seulement une analyse rigoureuse des besoins métier, mais également d’effectuer les bons choix en matière de technologie. Parmi ces choix, celui du type d’interface graphique (ou ‘UI’ : ‘User Interface’), véritable ‘vitrine’ de votre application. Le type d’interface graphique peut non seulement avoir un impact sur la convivialité perçue par les utilisateurs de votre application, mais également sur la méthodologie de développement, et par conséquent sur la productivité des développeurs. Dans l’environnement .Net, Microsoft propose depuis plusieurs années deux grandes technologies d’interface graphique ‘riche’ pour le développement d’application Windows. La première, nommée ‘WinForms’ (‘Windows Forms’) est présente depuis la version 1.0 du .Net Framework. Elle a essentiellement permis aux programmeurs VB6 d’être rapidement productifs en proposant un modèle d’interface graphique basé sur les concepts qui existaient alors. La seconde, nommée ‘WPF’ (‘Windows Presentation Foundation’) est apparue avec la version 3.0 du .Net Framework, en 2007. Microsoft a dès le début positionné WPF comme ‘alternative moderne’ aux WinForms, et non pas comme un remplaçant aux WinForms. Les versions 3.0, 3.5 et 4.0 de WPF peuvent s’installer sur Windows XP, Vista, 7 et 8. La dernière version en date, la 4.5, est inclue dans Windows 8. Par contre, il n’est plus possible de l’installer sur Windows XP. Globalement, les avantages de WPF par rapport à son prédécesseur peuvent être résumés en quelques points capitaux : -­‐
Séparation claire entre l’aspect ‘Design’ et l’aspect ‘Code’ : Microsoft a créé un outil, nommé ‘Blend’, facilitant la création d’interface graphique WPF pour les non-­‐développeurs. Pour la partie programmation, les développeurs continueront à utiliser Visual Studio. Cette séparation autorise des équipes composées de designers et de développeurs à travailler sur le même projet sans se bloquer mutuellement : les développeurs créent des composants dénués de toute interface graphique, uniquement composés de règles métier, de code et de logique propre à l’application, alors que les designers créent l’interface graphique, sans se soucier des détails d’implémentation. Le lien sera fait déclarativement, via un mécanisme très puissant de WPF : le DataBinding. L’avantage d’une telle séparation est que l’aspect visuel d’une fenêtre peut être complètement modifié, sans impact sur la partie fonctionnelle. Le découplage entre l’interface graphique et les objets métier de l’application est très important. WinForms n’avait pas cette séparation, et souvent, il y avait au sein d’un écran un mélange de code métier et de code réagissant aux évènements se produisant dans l’interface graphique. Key Job 65, Avenue de la Gare -­‐ L-­‐1611 Luxembourg -­‐ www.keyjob.lu T +352 49 06 09 1 F +352 49 06 70 -­‐
-­‐
Le DataBinding : certainement le point fort de WPF. Le DataBinding permet de lier des composants entre eux, de manière déclarative (c’est-­‐à-­‐dire, via un outil de design, comme Blend) sans recourir à du code Visual Basic ou C#. Par exemple il est possible de lier le contenu d’une zone de texte à celui d’une liste, le tout provenant d’une base de données. Dès que l’utilisateur choisi une valeur dans la liste, le contenu de la zone de texte se met immédiatement à jour, et inversement, le programmeur n’a pas à écrire de code pour synchroniser tous ces éléments, c’est le designer qui a réglé les détails via Blend. C’est également via DataBinding que le lien entre la partie graphique et la partie logique se fait : le designer effectuera un binding entre un bouton de commande et une action exposée par un objet, créé par les développeurs. Les développeurs n’ont pas besoin de savoir par quel biais leur action sera déclenchée dans l’UI : un clic sur un bouton, une touche de raccourci, etc… WPF est une interface graphique vectorielle, capable de s’adapter à la résolution d’écran et à la densité de pixels définie dans le système d’exploitation. Concrètement, cela permet à une application WPF de s’adapter à la finesse d’un écran haute résolution, en dessinant tous les éléments avec plus de précision, et en évitant l’effet de flou que l’on constatait parfois avec les WinForms, tout en gardant une taille de police lisible. Le symptôme des applications ‘non DPI-­‐aware’ consistant à avoir des textes tellement petits qu’ils en deviennent illisibles lorsque on utilise une résolution d’écran élevée est donc purement éliminé. -­‐
Un système de positionnement relatif et dynamique des contrôles très évolué : dans les WinForms, le positionnement absolu des contrôles est la norme. Quand la taille de la fenêtre change, les contrôles restent à leur emplacement d’origine et sont incapable d’exploiter le reste de surface disponible. Et, bien que les WinForms disposent d’un système d’ancrage, complété plus tard par un système de ‘Layout’, ceux-­‐ci ne peuvent rivaliser avec le système proposé, dès le début, par WPF. Bien qu’il soit toujours possible d’utiliser le positionnement absolu, WPF encourage plutôt l’utilisation de ‘containers’ dynamiques, qui répartiront l’espace disponible aux contrôles contenus. Le container le plus couramment utilisé en WPF Key Job 65, Avenue de la Gare -­‐ L-­‐1611 Luxembourg -­‐ www.keyjob.lu T +352 49 06 09 1 F +352 49 06 70 -­‐
-­‐
est nommé ‘Grid’ , il agit comme une sorte de tableaux constitué de lignes et colonnes, dont la taille varie dynamiquement selon la configuration choisie et l’espace disponible. Chaque ‘cellule’ de la grille aura donc une taille calculée selon tous ces paramètres, et chaque cellule peut à son tour contenir d’autres containers ou contrôles. Les DataTemplates (et les Styles) : Les contrôles fournis par WPF semblent assez commun à première vue : des boutons, des zones de texte, des listes déroulantes, etc… Mais en réalité, ce que l’on voit n’est que l’apparence ‘par défaut’ de ces contrôles. Il est tout à fait possible de la modifier de manière considérable, tout en conservant les fonctionnalités d’origine intactes ! On rejoint alors le point n°1 de WPF : séparer aspect visuel et fonctionnalités. Cela permet, entre autres, de créer des listes déroulantes dont chaque élément serait un tableau de taille dynamique, contenant des images, du texte, des boutons, etc… Cela permet de présenter les informations de manière beaucoup plus souple par rapport aux contrôles des WinForms… Les Styles sont également très intéressants dès qu’il s’agit de donner à plusieurs contrôles une apparence similaire : il suffit de créer un style contenant les valeurs que l’on souhaite définir (couleurs, comportement, etc...), et ensuite d’appliquer ce style aux contrôles souhaités. L’avantage principal étant la centralisation, la réutilisation et la facilité à modifier les styles sans avoir à repasser sur chaque contrôle. Les Styles peuvent hériter des caractéristiques d’autres Styles afin de réutiliser au maximum ce qui a déjà été fait. Les Triggers : WPF dispose d’un système qui fait penser aux évènements des WinForms, mais dont le but est bien plus large. Un trigger est un moyen déclaratif (c.-­‐à-­‐d. sans programmation) de réagir à un changement. Par exemple, il est possible de détecter le fait que le pointeur de la souris soit entré dans un contrôle, et d’y réagir en appliquant un Style spécifique, qui pourrait alors modifier la couleur du contrôle. Il existe différents types de Trigger, dont des DataTrigger, capable de réagir à des changements ayant lieu au niveau des données de l’application. Il est alors possible d’activer ou de désactiver certaines parties de votre interface graphique en vous basant uniquement sur les données gérées par la partie ‘métier’ ! Bien sûr, WPF comporte bien d’autres aspects que ceux énumérés ici, il s’agit d’une technologie complexe, qui demandera un temps d’adaptation important, même aux développeurs expérimentés. Pour un développeur habitué aux WinForms, la transition est souvent délicate, car il faut abandonner certains réflexes et penser différemment afin de parvenir à tirer parti de tous les bénéfices de WPF. Key Job 65, Avenue de la Gare -­‐ L-­‐1611 Luxembourg -­‐ www.keyjob.lu T +352 49 06 09 1 F +352 49 06 70 Parmi les concepts important à acquérir, la méthodologie MVVM (Model -­‐ View -­‐ ViewModel) est incontournable, car elle nous encourage à bien séparer l’aspect ‘métier’ de l’aspect visuel, ce qui est au cœur même de la philosophie de WPF. Donc, WPF demande un certain investissement, et n’est pas une technologie ‘miracle’, adaptée à toutes les situations. Les WinForms ont encore leur place dans la boite à outils des développeurs, surtout s’il s’agit de maintenir une application existante. Mais l’avenir est résolument tourné vers WPF sous une forme ou sous une autre : Windows Phone 8 et Windows 8 utilisent tous deux des dérivés de WPF pour leur interface graphique. Un Designer, ayant travaillé avec Blend par exemple, sera en terrain connu lorsqu’il s’agira de créer l’UI d’applications tournant sous ces systèmes. Idem pour les développeurs, s’ils ont suivi la méthodologie MVVM ! Pour toute information complémentaire, contactez Benoit Mischler, développeur chez Key Job. Key Job 65, Avenue de la Gare -­‐ L-­‐1611 Luxembourg -­‐ www.keyjob.lu T +352 49 06 09 1 F +352 49 06 70