Résumé

Maîtrisez les nouvelles API de développement Windows 8 pour le Windows Store

Windows 8 ouvre de nouvelles opportunités aux développeurs de tous horizons : usage en mobilité, interfaces intuitives et performantes, accès aux capteurs, et bien d’autres. Que votre expérience s’appuie sur JavaScript/HTML5, XAML, C# ou C++, cet ouvrage met à profit vos connaissances pour créer des applications Windows Store, tout en couvrant les aspects ergonomiques liés à la diversité des matériels et la monétisation via le Store.
Que vous cibliez une plateforme standard (x86) ou bien ARM, au travers de cas pratiques et d’exemples didactiques, vous découvrirez les nombreuses possibilités qui s’offrent à vous en termes d’intégration au sein du système et de fonctionnalités UX.

Au sommaire

Windows 8, un système pour tous types de matériels • Orienté tactile • Applications Windows Store • Expérience utilisateur • Distribution et déploiement • Sécurité • Performances et autonomie • Windows 8 et Windows RT • Plate-forme de développement • Windows Runtime • Développement Windows en HTML5 et JavaScript • .NET et XAML • C++ et XAML • Pour les développeurs d’applications Bureau • Outillage du développeur • Windows 8 SDK • Visual Studio 2012 • Blend pour Visual Studio • MSDN • Composants tiers • Développement d’une première application • Ergonomie • Zoom sémantique • Scénarios d’utilisation • États d’affichage • Maîtriser le tactile • Concepts de navigation • Langage d’interaction tactile • Structure des écrans types • Éléments d’interface • Langage visuel • Modèle, liaisons et accès aux données • WCF • Pattern MVVM (Model-View-View-Model) • Liaisons de données en XAML avec .NET • Accès aux données • Programmation asynchrone • Interface utilisateur réactive • IAsyncOperation • Async et await • Tâches • Pool de threads • Appels asynchrones en JavaScript • Appels asynchrones en C++ • Bonnes pratiques • Cycle de vie applicatif • Persistance des données • Vignettes et notifications • Modern UI • Tirer profit des vignettes dynamiques • Windows Push Notification Service • Utilisation des charmes • Partage, recherche, paramétrage • Associations applicatives • Techniques d’animation • Animations • Transitions de thème (XAML) • Transition de contenu • Listes • Animations libres • Animations indépendantes et dépendantes • Storyboard • États visuels • Transitions en CSS • Gestion de l’interface tactile • Pointeurs • Mouvements et manipulations • GestureRecognizer • Interfaces avec les capteurs et périphériques • Géolocalisation • Capteurs • Technologie NFC • Gestion des périphériques • Windows Store • Fiche détaillée d’une application Windows 8 • Publier sur le Store • Règles à respecter • Augmenter la visibilité de l’application • Gestion des applications publiées • Accéder à Internet • Service REST • JSON • Données applicatives • Windows Runtime avancé • Processus WinRT • Accéder au Cloud • Métadonnées • Projections.

À qui s’adresse cet ouvrage ?

– Aux développeurs Windows souhaitant porter leurs applications vers les nouvelles architectures mobiles et souhaitant distribuer leurs applications via le Windows Store ;

– Aux développeurs .Net souhaitant tirer profit de la nouvelle plateforme WinRT ;

– Aux développeurs web qui doivent pour la première fois développer une application native sur Windows.

Biographie auteur

L. Morand

Auteur de plusieurs ouvrages autour de Windows, Louis-Guillaume Morand a longtemps partagé son savoir, notamment en tant que responsable de publication sur Developpez.com. Consultant au sein de Microsoft, il accompagne les entreprises dans leur utilisation des nouvelles technologies telles que Windows Phone ou Windows 8.

L. Vo Van

Consultant Application Platform/UX chez Microsoft Consulting Services, Luc Vo Van accompagne des entreprises dans leurs projets de développement sur les plates-formes .NET et Azure. Il est spécialisé sur les sujets liés à l’expérience utilisateur (UX) et sur les technologies de présentation, ainsi que sur les problématiques d’entreprise qui leur sont liées.

A. Zanchetta

Alain Zanchetta a rejoint en 2012 les équipes de développement de Windows Phone à Redmond où il participe à l’évolution de la plate-forme XAML, après quinze années passées au sein de Microsoft France en tant que consultant, où il a accompagné de nombreux clients lors des évolutions de l’environnement de développement Microsoft de Win32 et COM vers .NET et les technologies de présentation comme WPF ou Silverlight.

www.editions-eyrolles.com

Développement

Windows 8

Créer des applications pour le Windows Store

API Windows Runtime (WinRT) • C#/C++/XAML .NET • JavaScript/HTML5

Louis-Guillaume Morand
Luc Vo Van
Alain Zanchetta

Préface de Bernard Ourghanlian
Avec la contribution d’Olivier Dahan

ÉDITIONS EYROLLES

61, bd Saint-Germain

75240 Paris Cedex 05

www.editions-eyrolles.com

Remerciements à Anne Bougnoux pour sa relecture.

En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support que ce soit, sans l’autorisation de l’Éditeur ou du Centre Français d’exploitation du droit de copie, 20, rue des Grands Augustins, 75006 Paris.

© Groupe Eyrolles, 2013, ISBN : 978-2-212-13643-2

Chez le même éditeur

Ouvrages Windows 8

Autres ouvrages

Préface

8… Un chiffre qui porte chance dans la culture chinoise, car il est homophone du mot « prospérité » en cantonais. Ce n’est pas un hasard si la cérémonie d’ouverture des Jeux olympiques de Pékin a eu lieu le 8 août 2008 à 20 heures et 8 minutes (08/08/08, 08:08) précises…

Ce chiffre 8 portera-t-il chance à Windows et à Microsoft ? Il est trop tôt pour le dire, et pourtant Windows 8 est probablement la version la plus importante depuis Windows 1.0. Qu’il me soit permis de tenter de le démontrer brièvement par une histoire (très abrégée) de ce système d’exploitation.

La première version de Windows a été rendue disponible le 20 novembre 1985. À cette époque, le véritable système d’exploitation était MS-DOS, l’interface graphique étant matérialisée sous la forme d’un shell graphique s’exécutant au-dessus du véritable système d’exploitation. Une telle approche avait du sens : elle permettait d’améliorer l’interface homme-machine sans remettre en cause l’essentiel, à savoir la compatibilité avec les applications MS-DOS. Puis est venu...

Table des matières

Avant-propos

Pourquoi ce livre ?

À qui s’adresse ce livre ?

Structure de cet ouvrage

Remerciements

Remerciements de Louis-Guillaume Morand

Remerciements de Luc Vo Van

Remerciements d’Alain Zanchetta

CHAPITRE 1
Applications Windows Store

Qu’est-ce qu’une application Windows Store ?

Une expérience utilisateur plus fluide

Un cycle de vie plus contrôlé

Distribution et déploiement

Distribution via le Windows Store

Déploiement interne en entreprise

Déverrouillage pour les développeurs

Sécurité

Performances et autonomie

Windows 8 et Windows RT

Windows 8 sur processeurs x86 et x64

Windows RT pour les processeurs ARM

Une plate-forme de développement

Des API accessibles avec le Windows Runtime (WinRT)

HTML5 et JavaScript

.NET et XAML (eXtensible Application Markup Language)

C++ et XAML

Outillage du développeur

Le SDK Windows 8

Visual Studio 2012

Blend pour Visual Studio

MSDN, la référence documentaire

Composants tiers

Une première application

XAML

JavaScript et HTML

CHAPITRE 2
Éléments d’ergonomie

Une philosophie de design

Scénarios d’utilisation

États d’affichage

Plein écran

Ancré

Remplissage

Concepts ergonomiques de navigation

Navigation hiérarchique

Navigation linéaire

Navigation hybride

Langage d’interaction tactile

Mouvements

Manipulations

Structure des écrans types

Pages

Panoramiques

Éléments d’interface

Vignettes dynamiques

Notifications

Icônes et contrats

Barres d’applications

Zoom sémantique

Langage visuel

Absence de contours

Polices

Alignement sur une grille

Authentiquement numérique

Branding et identité visuelle

Style visuel et ergonomie

CHAPITRE 3
Modèle, liaisons et accès aux données

Principes généraux

Le pattern MVVM (Model-View-ViewModel)

Liaison de données en XAML avec .NET

Liaison simple

Liaison de listes

Liaison de données en C++

Liaison de données en HTML5 et JavaScript

Accès aux données

Lecture et écriture dans un fichier

Principes de base

Utilisation de fichiers textes

Accès simplifié : la classe FileIO

Utilisation d’un fichier XML

Accès à des données distantes

Service WCF simple

Utilisation d’une bibliothèque d’interface

Utilisation de WCF Data Services

CHAPITRE 4
Programmation asynchrone

Asynchronisme et interface utilisateur réactive

IAsyncOperation

Async et await

Tâches

Pool de threads

Appels asynchrones en JavaScript

Appels asynchrones en C++

Bonnes pratiques

CHAPITRE 5
Cycle de vie des applications

Le principe de cycle de vie

Le principe de suspension

Responsabilités d’une application

Sauvegarde et restauration d’état

Sauvegarde de l’état applicatif en C#

Sauvegarde de l’état applicatif en JavaScript

Sauvegarde de l’état applicatif en C++

Reprise des données

La reprise en C#

La reprise en JavaScript

La reprise en C++

L’activation

L’activation en C#

L’activation en JavaScript

L’activation en C++

Conclusion

CHAPITRE 6
Les vignettes et notifications

Vignettes dynamiques

Organisation d’une vignette

Mise à jour d’une vignette

Mise à jour du badge

Le respect des bonnes pratiques

Vignettes secondaires

Création d’une vignette secondaire

Transmission de contexte

Bonnes pratiques

Utilisation du Windows Push Notification Service

Conclusion

CHAPITRE 7
Tirer profit de la puissance des charmes

La notion de contrat

Le charme de partage

Source de partage

Partager autre chose que du texte

Déclenchement du partage

Cible de partage

Le charme de recherche

La suggestion de résultat

Les templates de contrat de recherche

Le charme de paramétrage

Personnalisation de l’écran Paramètres

Affichage d’un écran personnalisé

Les associations applicatives

L’association de fichier

Chargement du fichier

L’association de protocole

Utilisation du protocole

Les API de lancement

Ouverture de l’application, par défaut ou non, d’un fichier

Ouverture de l’application par défaut d’un protocole

Conclusion

CHAPITRE 8
Techniques d’animation

Rôle et importance des animations

Guider l’utilisateur

Renforcer la présentation

Animations types

Transitions de thème (XAML)

Transition de contenu

Implémentation XAML

Implémentation JavaScript

Listes

Implémentation XAML

Implémentation JavaScript

Animations libres

Animations indépendantes et dépendantes

Animations indépendantes

XAML

HTML/CSS

Animations dépendantes

XAML

HTML/CSS

Storyboard (XAML)

Définition

Utilisation

États visuels (XAML)

Définition des états visuels

Appliquer un état visuel

Édition des états visuels avec Blend

Transitions CSS

Événement DOM transitionend

Utilisation conjointe avec l’extension ms-view-state

CHAPITRE 9
Gestion de l’interface tactile

Interactions utilisateur sous Windows

Considérations pour les interfaces tactiles

Les pointeurs

Détection des capacités tactiles

Mouvements et manipulations

GestureRecognizer

Utilisation du GestureRecognizer (JavaScript)

Événements de manipulation (XAML)

Conclusion

CHAPITRE 10
Interfaces avec les capteurs et périphériques

La géolocalisation

Accès ponctuel

Accès continu

Bonnes pratiques de la géolocalisation

Les capteurs

Utilisation de la technologie NFC

Envoyer ou recevoir des informations via NFC

Utiliser NFC sans NFC

La gestion des périphériques

Lister les périphériques disponibles

Interagir avec les périphériques

Conclusion

CHAPITRE 11
Le Windows Store

Le Windows Store

Une découverte facilitée

Publier son application sur le Store

Licence développeur

Procédure d’enregistrement et de validation

Manifeste et capacités

Soumission de l’application

Les principales règles à respecter

Augmenter la visibilité de votre application

Noter l’application

Faire télécharger l’application depuis un site web

Gestion des applications publiées

CHAPITRE 12
Accéder à Internet

Données applicatives

Données itinérantes d’une application

Sécurité

Accès à des services Internet personnalisés

Utilisation de sockets

Service HTTP « brut »

Service REST et sérialisation JSON

Service WCF

Accéder à des services standards - SkyDrive

Développer plus vite grâce aux services mobiles Windows Azure

Création d’un service mobile

Accès aux données stockées sur Azure

CHAPITRE 13
Windows Runtime avancé

Processus WinRT

Composants WinRT

Évolution des composants logiciels

...

Avant-propos

L’interface de Windows 8, au premier abord déroutante, cache une révolution : celle des interfaces de programmation (API). Si les technologies de développement Windows classiques restent disponibles dans l’environnement du bureau, de nombreuses API apparaissent. La plus importante, WinRT, permet de développer pour le nouveau Windows Store.

Pourquoi ce livre ?

Le nouveau visage de Windows, c’est WinRT, une nouvelle API très riche conçue pour le développement d’applications vendues via le nouveau Windows Store. WinRT touche à tous les aspects du développement applicatif, de la présentation graphique au dialogue avec les matériels, notamment les nombreux capteurs conçus pour Windows 8 (accéléromètre, NFC…), en passant par les fondamentaux tel que les accès réseau et la lecture ou écriture de fichiers.

Afin de garantir sécurité et qualité, les applications écrites en respectant les nouveaux standards sont publiées via le Windows Store, la plate-forme en ligne de...

1

Applications Windows Store

Ces dernières années ont vu naître de nombreuses innovations technologiques. Accessibles au plus grand nombre, ces dernières ont entraîné l’émergence de nouveaux usages. Il est désormais possible de se servir de matériel léger, autonome et connecté pour créer librement l’information et y accéder, où que l’on soit. De nouvelles façons d’interagir avec les applications sont maintenant largement répandues : interface tactile, géolocalisation, connectivité permanente et services en ligne ouvrent la voie à de nouveaux scénarios d’utilisation. Windows 8 a été ré-imaginé en intégrant ces évolutions dans son cœur, donnant naissance à un nouveau type d’applications : les applications Windows Store.

À l’heure de la rédaction de cet ouvrage, Windows 8 représente la toute dernière génération de Windows. Plus qu’une simple évolution du système d’exploitation de Microsoft, Windows a été ré-imaginé afin de fournir aux utilisateurs de meilleures performances, plus de flexibilité et une productivité améliorée.

Les applications jouent un rôle majeur dans cette démarche : alors que le système d’exploitation fournit des services transverses et la gestion des composants bas-niveau de la machine, c’est avec les applications que l’utilisateur réalise les tâches qui sont pour lui les plus importantes. La qualité des applications et la synergie entre ces dernières forment un tout avec le système d’exploitation et en définissent ainsi la richesse et la puissance.

Qu’est-ce qu’une application Windows Store ?

Bien plus qu’une évolution de la plate-forme de développement, les applications Windows Store sont un nouveau type d’applications Windows à part entière. Cette section décrit quelques-unes des différences les distinguant des applications « classiques », dites Bureau, utilisées jusqu’alors.

Une expérience utilisateur plus fluide

Windows a changé du point de vue de « l’expérience utilisateur » (on parle le plus souvent d’UX pour User eXperience), avec son interface utilisateur baptisée Modern UI et ses applications dédiées, les applications Windows Store. Les interfaces utilisateur de ce nouveau type d’applications se caractérisent par leur fluidité, par la mise en avant des contenus utiles, différents modes d’affichage, une grande lisibilité due à l’utilisation très limitée du chrome (contours), ou encore une exploitation prononcée de la typographie. Pour être cohérentes avec le système, les applications Windows Store se doivent d’être, elles aussi, rapides, fluides et modernes.

Le chapitre 2, consacré à l’ergonomie, présente de manière non technique les principaux aspects liés à l’expérience utilisateur des applications Windows Store.

Un cycle de vie plus contrôlé

Les applications Windows traditionnelles sont destinées à être exécutées sur le Bureau. Il s’agit de programmes généralement implémentés avec des technologies telles que MFC, Windows Forms ou encore WPF. Leur cycle de vie est relativement simple :

Figure 1–1 Cycle de vie d’une application Windows classique

Les applications Bureau sont globalement libres de gérer leur propre cycle de vie et s’exécutent tant qu’elles ne sont pas explicitement fermées. Le système d’exploitation leur alloue les ressources nécessaires en fonction de leurs besoins et, sauf...

2

Éléments d’ergonomie

L’élément le plus remarquable de Windows 8, celui qui marque le plus les nouveaux utilisateurs, est sans conteste sa nouvelle interface utilisateur, fruit d’une profonde réflexion de la part des équipes de Microsoft. Les applications y jouent un rôle primordial dans l’expérience utilisateur : leur parfaite intégration avec le système d’exploitation est fondamentale dans l’appréciation que l’utilisateur portera à la fois sur les applications et sur le système, les deux formant un tout indissociable.

Ce chapitre a pour objectif d’initier et de sensibiliser le développeur aux principaux concepts ergonomiques liés aux applications Windows Store.

Figure 2–1 L’écran d’accueil Windows

Une philosophie de design

La conception des interfaces utilisateur sur les plates-formes et produits de Microsoft obéit à des principes de cohérence et de confort d’utilisation (qui doit être familier, rassurant et évocateur). Cinq principes sont au cœur de cette philosophie et il est conseillé de s’en imprégner pour concevoir des applications Windows Store de qualité.

• Peaufiner les détails. Dédier du temps et de l’attention aux détails et à la finition se traduit souvent par des applications de qualité supérieure et des utilisateurs satisfaits. Il y a beaucoup à gagner à parfaire l’utilisation, en particulier pour les éléments les plus vus et les plus utilisés.

• En faire plus avec moins. Se concentrer sur le contenu principal, éviter les distractions et laisser la liberté à l’utilisateur d’explorer les fonctionnalités. Les applications Windows Store furent d’ailleurs pendant un moment qualifiées d’immersives pour souligner cet aspect essentiel.

• Rapidité et fluidité. Favoriser l’interaction directe et rapide avec le contenu de l’application. Utiliser les animations de manière subtile et élégante pour que l’application réponde aux actions de l’utilisateur tout en le guidant et en l’informant des activités en cours.

• Authentiquement numérique. Tirer pleinement parti des médias et de la culture numériques en s’affranchissant au maximum des contraintes et des analogies du monde physique. Assumer pleinement un design digital, des couleurs vives, des alignements parfaits et des interactions rendues possibles par les médias numériques.

• Gagner en équipe. Utiliser l’écosystème des applications, les possibilités intrinsèques de la plate-forme et du matériel. Réduire la redondance graphique et fonctionnelle tout en capitalisant sur les connaissances de l’utilisateur. Penser plate-forme.

Cette philosophie de design est implémentée dans Windows 8 et Windows RT par le biais de l’interface utilisateur moderne (Modern UI). À l’exception des jeux, les applications Windows Store doivent en respecter les principes tout en s’intégrant à l’interface utilisateur moderne. Sur ce point, Windows est aujourd’hui plus normatif qu’il ne l’a jamais été.

UN PEU D’HISTOIRE

Les premières traces de la philosophie de design Microsoft (Microsoft design language) datent de Windows Media Center pour Windows XP. Ce style fut largement enrichi et réutilisé dans la gamme de produits Zune : le baladeur, particulièrement le Zune HD en 2009, et son lecteur multimédia associé sont les premières applications des principes fondamentaux de cette philosophie. Bien que la réception commerciale de ces produits ne fût pas à la hauteur des espérances de l’éditeur, leur influence en termes de design ne fit que croître au sein de Microsoft.

Figure 2–2 Media Center pour Windows XP

Figure 2–3 Le logiciel et le baladeur Zune

Le langage de design Microsoft a été dévoilé publiquement en 2010 sous le nom de « Metro », dans le cadre des annonces liées à la nouvelle génération de système d’exploitation pour téléphone :...

3

Modèle, liaisons et accès aux données

L’interface présentée par une application à ses utilisateurs leur sert à consulter et éventuellement modifier un contenu, qui peut être une simple image ou un ensemble assez complexe de données structurées. Ce chapitre présente les principaux mécanismes que le développeur va être amené à mettre en œuvre autour de données structurées, c’est-à-dire :

• leur modélisation en mémoire ;

• leur affichage et leur modification à travers l’interface utilisateur de l’application ;

• leur persistance.

REMARQUE Différences de langages

Certains mécanismes sont ici assez différents entre HTML5/JavaScript et XAML/C# (ou VB.Net) et seront, le cas échéant, présentés dans des sections distinctes.

Principes généraux

Bien que ce ne soit pas une caractéristique propre au développement d’applications pour Windows, il faut rappeler combien il est important de modéliser soigneusement les données que l’application manipule : stocker de simples paires clé–valeur de type chaînes de caractères dans un dictionnaire rend service dans certains cas, mais conduit le plus souvent à un code peu fiable, truffé d’erreurs qui ne seront détectées qu’à l’exécution.

Le premier principe à appliquer lors du développement d’une application Windows Store consiste donc à adopter une approche orientée objet, avec des classes, des méthodes et des propriétés aux responsabilités bien définies. La modélisation orientée objet sort du cadre de ce livre, néanmoins l’implémentation du modèle ainsi défini doit respecter certaines contraintes imposées par la technologie d’interface utilisateur, afin d’exploiter pleinement celle-ci. Il s’agit typiquement d’implémenter certaines interfaces bien définies ou de s’appuyer sur des classes du framework qui les implémentent : par exemple, pour que les mécanismes de liaison de données fonctionnent correctement et pour obtenir que les modifications des propriétés d’un objet soient automatiquement prises en compte par l’interface utilisateur, on ne pourra pas se contenter de l’implémentation des propriétés intrinsèques au langage C# (les mécanismes à mettre en place seront décrits plus loin).

D’autres contraintes ont un effet sur l’implémentation du modèle de données : par exemple, des considérations de portabilité nécessitent parfois l’utilisation de deux niveaux dans l’implémentation du modèle. C’est typiquement le cas lors de l’utilisation du C++ comme langage de programmation :

• le cœur du modèle est généralement implémenté de manière totalement indépendante de la plate-forme, en utilisant uniquement les types et classes portables du C++ (la Standard Template Library est très riche et il serait dommage de s’en passer) ou de bibliothèques Open Source disponibles pour d’autres environnements ;

• une fine couche d’encapsulation va transformer les types standards C++ en types compris par les classes de WinRT avec lesquelles l’interface utilisateur est implémentée : ainsi, les chaînes de caractères seront des std::string au cœur du modèle, mais exposées comme des Platform::String dans la partie « supérieure » de celui-ci.

Le deuxième principe récurrent dans les applications Windows Store est l’utilisation quasiment systématique du mécanisme de liaison de données ou DataBinding (on exclut ici les jeux DirectX, qui suivent une logique différente). À quoi ce mécanisme correspond-il ? Il s’agit en fait d’automatiser les échanges bidirectionnels (ou non) entre le modèle et les composants graphiques.

Soit par exemple une classe Personne possédant une propriété Nom de type chaîne de caractères :

public partial class Personne {

public string Nom

{

get { … }

set { … }

…

}

Soit un contrôle de type TextBox chargé d’afficher cette propriété en permettant à l’utilisateur d’en modifier la valeur :

<TextBox x:Name="NameTextBox"/>

Avec un mode de programmation traditionnel, on utiliserait le code suivant pour afficher le nom dans le contrôle (en supposant ici que joueur est une variable de type Personne) :

NameTextBox.Text = joueur.Nom;

Ensuite, lors du clic sur un bouton ou de toute autre action nécessitant la mise à jour de l’objet, la propriété Nom de la variable joueur serait mise à jour par un code similaire :

joueur.Nom = NameTextBox.Text;

Cette approche présente plusieurs inconvénients. Tout d’abord, le code est fortement dépendant du contrôle graphique utilisé pour afficher le nom de la personne. Par exemple, si l’écran évolue et si ce nom n’est plus modifiable, il est souhaitable de remplacer la TextBox par un TextBlock ; toutefois, cela demande alors de modifier non seulement le XAML, mais aussi le code C# associé. Ensuite, au début de chaque action, il faut mettre à jour tous les objets du modèle affichés dans la page, puis mettre à jour celle-ci à la fin de l’action, ou tout au moins faire ces opérations pour les champs dont cette action va lire ou modifier les valeurs. C’est un travail fastidieux et source d’erreurs.

Le mécanisme de liaison de données permet d’automatiser les transferts entre l’interface utilisateur et le modèle des données à l’aide d’une approche purement déclarative :

<TextBox Text="{Binding Nom, Mode=TwoWay}"/>

Cette déclaration est assez dépouillée car elle part du principe qu’une instance de la classe Personne constitue le contexte de données (DataContext) du contrôle graphique et car le type chaîne de caractères est quant à lui le plus simple à lier. Dans d’autres cas, la syntaxe d’une liaison de données sera plus riche. La suite de ce chapitre détaillera l’ensemble des possibilités offertes par la liaison de données au travers d’exemples plus sophistiqués.

Le pattern MVVM (Model-View-ViewModel)

Une implémentation à deux niveaux du modèle de données comme celle présentée précédemment correspond typiquement à un schéma d’implémentation populaire dans les environnements WPF et Silverlight, le MVVM, pour Model-View-ViewModel :

• Modèle (Model) – Comme décrit plus haut, c’est la représentation interne des données affichées et manipulées par l’utilisateur.

• Vue (View) – C’est la partie graphique constituée d’un assemblage de contrôles.

• Modèle visuel (View Model) – Il constitue une vue des données prêtes à être affichées par les mécanismes de liaison, mais conserve...

4

Programmation asynchrone

Dans les environnements modernes comme WinRT, les utilisateurs s’attendent à une très grande réactivité de la part du système, mais aussi de chaque application. Ceci se traduit pour le développeur par la nécessité d’exécuter tous les traitements longs de manière asynchrone afin de laisser l’interface utilisateur réagir immédiatement à toutes les actions de celui-ci.

Ce chapitre détaille les mécanismes sous-jacents, le modèle de programmation asynchrone proposé par WinRT pour chacun des langages de programmation, l’évolution des mécanismes couramment utilisés en .NET, ainsi que les principales pratiques de programmation asynchrone.

Asynchronisme et interface utilisateur réactive

Pour qu’une interface utilisateur soit agréable à utiliser, elle doit être non seulement esthétique, mais surtout réactive. Il arrive fréquemment que des utilisateurs reviennent à d’anciennes versions d’une application parce que la dernière est jugée trop lente et au final peu agréable à utiliser. Les applications étant de plus en plus souvent connectées à Internet avec des accès et des débits très différents, les temps de réponse sont variables et pas toujours sous le contrôle du programmeur : une application qui tarde à donner un résultat n’est pas nécessairement mal programmée (contrairement à une application autonome qui ne dépend de personne).

Néanmoins, pour l’utilisateur, le résultat est le même : il appuie sur un bouton et s’attend à une réaction immédiate de l’application. Si cette réaction tarde trop, il doit pouvoir passer à une autre activité, au sein même de l’application ou non.

Les navigateurs internet intègrent ce concept depuis de nombreuses années : pendant qu’une page est en cours de téléchargement, l’application affiche un retour à l’utilisateur (logo animé, barre de progression, messages) et reste opérationnelle. Ainsi, l’utilisateur peut annuler la navigation en cours, retourner en arrière ou simplement ouvrir un nouvel onglet dans lequel il va afficher et lire une autre page pendant que la première finit de se charger.

Cette volonté de réactivité permanente n’est pas limitée aux applications : si l’utilisateur est bloqué, c’est toute la perception du système d’exploitation qui en pâtit. Qui n’a jamais fulminé contre une machine ne redémarrant pas parce qu’une application affiche une fenêtre demandant la confirmation d’une sortie sans sauvegarde ?

Figure 4–1 Application bloquée sous Windows XP

Dans de nombreux cas d’appels externes, l’application se trouve ainsi bloquée inutilement : elle n’est pas en mesure de répondre aux sollicitations de l’utilisateur et n’effectue pas non plus de réelle tâche de fond. Cette situation est illustrée dans le schéma qui suit.

Figure 4–2 Appel Synchrone

Ce schéma correspond par exemple au code suivant...

5

Cycle de vie des applications

Sous les anciennes versions de Windows et aujourd’hui encore pour le bureau dit classique, les applications ont un cycle de vie simple : elles sont exécutées puis à un moment donné terminées, généralement par l’utilisateur.

Avec la nécessité de gérer de nouvelles plates-formes matérielles, comme les tablettes, ce n’est pas simplement le côté graphique qui a été revu, mais également le fonctionnement des applications et leur cycle de vie afin notamment de minimiser l’usage des ressources du système et maximiser la durée de la batterie. C’est ce nouveau cycle de vie et les changements qu’il impose qui seront étudiés en détail dans ce chapitre.

Figure 5–1 Comprendre et apprivoiser le nouveau cycle de vie des applications Windows Store

Chaque fois qu’une application est lancée, celle-ci consomme de nombreuses ressources : des cycles processeur pour effectuer des opérations, de la mémoire pour stocker des données, des ressources graphiques et enfin du temps et de l’espace disque pour stocker des données ou y accéder. Tout cela a une incidence sur les performances globales du système, mais surtout sur la tenue de la charge de la batterie. Avec l’avènement des périphériques mobiles (ordinateurs portables, smartphones et maintenant tablettes), il devient indispensable de minimiser la déperdition énergétique.

Lorsqu’une application de bureau est lancée, elle consomme des ressources jusqu’au moment où l’utilisateur décide de l’arrêter en fermant la fenêtre correspondante. C’est ainsi l’utilisateur qui contrôle le nombre d’applications lancées en parallèle sur son système et, par conséquent, la quantité grandissante de ressources utilisées qui en découle. Le système est bien sûr capable d’optimiser la façon dont les ressources sont allouées, mais si les applications sont trop nombreuses, la limite des ressources du système peut être atteinte, avec pour conséquence un ralentissement sensible de l’ordinateur et une expérience utilisateur dégradée.

Afin d’éviter à l’utilisateur la tâche fastidieuse de gérer finement l’allocation des ressources de sa machine, le système d’exploitation de Windows Phone a introduit un mécanisme qui « suspend » (met en pause) automatiquement une application. Ce même mécanisme se retrouve d’ailleurs dans d’autres systèmes d’exploitation pour mobiles.

La vraie nouveauté réside dans la généralisation de ce procédé à toutes les applications Windows Store, même celles tournant sur PC. Le système intervient lorsque le niveau des ressources devient critique et peut alors décider de terminer les applications en arrière-plan qui étaient déjà suspendues. Pour l’utilisateur, tout cela doit rester transparent et il doit pouvoir reprendre une application dans l’état où il l’a laissée, exactement comme une fenêtre laissée en arrière-plan puis reprise en avant-plan sur le bureau classique. Cela impose au...

6

Les vignettes et notifications

Comprendre, créer et contrôler les vignettes et notifications aide à intégrer une application dans l’environnement Windows 8.

Points d’entrée des applications, mais également composants « vivants », les vignettes établissent le premier contact entre une application et l’utilisateur en lui fournissant des informations enrichies sans que celui-ci n’ait à lancer l’application.

Ce chapitre aborde en profondeur la gestion de ces vignettes et les différents moyens disponibles pour soumettre une information à l’utilisateur.

Figure 6-1

Vignettes dynamiques

Même si cela ne constitue qu’une petite partie du langage de design Modern UI, un écran d’accueil rempli de pavés regorgeant d’informations est l’emblème de cette nouvelle interface utilisateur que Microsoft généralise sur ses différentes plates-formes.

Figure 6–2 Écrans d’accueil Windows 8 et Windows Phone, utilisant des vignettes

Ces vignettes (souvent appelées tuiles comme avec leur nom anglais tiles) constituent un véritable tableau de bord pour l’utilisateur qui peut, d’un seul regard, suivre toutes les informations qui lui tiennent à cœur, comme l’activité de ses proches ou les cours de la bourse. En effet, les vignettes sont bien plus que de classiques icônes : elles contiennent aussi bien du texte que des images, organisés de différentes manières, et surtout, elles peuvent être mises à jour quasiment en temps réel, sans que l’utilisateur n’ait à lancer les applications correspondantes.

Par ailleurs, l’écran d’accueil de Windows peut être personnalisé à l’aide d’une fonction appelée Zoom Sémantique, grâce à laquelle l’utilisateur crée des groupes de vignettes, déplace celles-ci ou en change la taille (largeur simple ou double). Il est aussi possible d’associer une vignette non pas à une application, mais à une fonction de celle-ci, voire à des données particulières. Par exemple, un utilisateur peut afficher sur son écran d’accueil les prévisions météorologiques de la ville où il habite et celles du lieu de ses prochaines vacances dans deux vignettes différentes mais gérées par la même application.

Pour le développeur, une vignette affichant des informations pertinentes concourt au succès de l’application de deux façons. D’abord sur le Windows Store où l’utilisateur trouvera généralement plusieurs applications aux fonctionnalités voisines, celles qui auront les vignettes les plus attrayantes seront...

7

Tirer profit de la puissance des charmes

Windows favorise les interactions entre les applications pour en démultiplier la puissance et l’attrait. Ces interactions sont rendues possibles grâce à des contrats qui permettent aux différentes applications de se mettre d’accord sur la façon de communiquer entre elles et sur le contenu de ces communications.

Ce chapitre présente ces contrats particuliers et la façon de les implémenter.

Figure 7-1

La notion de contrat

Les contrats sont l’un des concepts importants du développement Windows : c’est grâce à eux que des applications différentes interagissent entre elles et avec le système d’exploitation, et ce de façon structurée et organisée. Les ancêtres de ces contrats, comme le presse-papier ou les interfaces COM du Shell, sont des exemples classiques, mais Windows pousse aujourd’hui ces concepts plus loin. Maintenant, ces contrats plongent au cœur des applications pour offrir à l’utilisateur des options de recherche ou de partage uniformisées et formalisées. Les applications se fondent encore plus dans le système d’exploitation et son interface visuelle ; elles participent dynamiquement à un tout, à une expérience utilisateur homogène.

Un contrat est un accord que l’application « signe » en indiquant qu’elle est capable de répondre à l’interaction ciblée par celui-ci en appliquant les méthodologies, les prérequis et les contraintes attendus.

Ces contrats prennent différentes formes. Les principaux sont utilisés dans le cadre des « charmes », ces actions situées dans la barre droite de l’écran qui apparait lorsque la souris atteint un coin à droite de l’écran ou que le côté droit de l’écran tactile est touché d’un doigt. Ces charmes sont l’une des principales nouveautés ergonomiques introduites avec Windows 8.

On distingue plusieurs types de contrat.

• Le contrat de partage sert à envoyer ou recevoir des données sans connaître le destinataire ou la source.

• Le contrat de recherche met à disposition l’interface de recherche du système d’exploitation pour chercher parmi les données d’une application.

• Le contrat de paramètres affiche un écran standardisé et rapide d’accès pour configurer les paramètres d’une application.

• Le contrat PlayTo permet à l’application de partager des données avec des périphériques comme la Xbox.

• Le contrat Sélection de fichier utilise les fenêtres du système d’exploitation pour parcourir les dossiers.

La mise en place de ces contrats au sein d’une application est souvent simplifiée au maximum, mais apporte surtout une plus-value en termes de fonctionnalités et d’intégration avec le système ou les autres applications. Néanmoins, chaque contrat a sa propre implémentation et c’est ce qui est étudié en détail dans la suite de ce chapitre.

Le charme de partage

Le partage est aujourd’hui la force même de l’informatique. Les applications partagent entre elles via des messages ou des canaux de transmission et ont toutes un point commun : le communiquant connaît le destinataire. Cela signifie que les deux applications se connaissent et « parlent le même langage » pour comprendre les données qui sont transmises. Dans le cas de Windows 8, où de nombreuses applications différentes peuvent être téléchargées et installées, il était nécessaire de trouver un moyen de passer outre ce prérequis.

Pour cela a été mis en place le contrat de partage. Ce mécanisme consiste à préciser les formats qu’une application sait gérer ; ainsi, le système est en mesure de lister automatiquement les applications sachant gérer ce format et pouvant répondre à la demande de partage. De cette façon, une application d’affichage de nouvelles (news) peut proposer une option de partage de l’URL de l’information affichée. En se reposant sur le charme de partage et son contrat, toute application sachant gérer une URL pourra alors automatiquement y avoir accès et le système d’exploitation saura proposer à l’utilisateur cette sélection d’applications compatibles. Cette liste contiendrait par exemple :

• Internet Explorer pour ouvrir la page web ;

• Twitter pour l’enregistrer sur son compte après l’avoir transformée en URL courte ;

• Facebook pour la partager sur son profil auprès de ses amis ;

• etc.

L’application source, qui n’a qu’à partager son URL sans se soucier de la façon dont sera utilisé le lien, accroît ainsi ses fonctionnalités en tirant parti d’autres applications installées dont elle n’a pas même connaissance. Ainsi, plus les applications installées sont nombreuses, plus les possibilités de partage sont importantes. Cela aboutit à disposer d’une galaxie d’applications sachant communiquer...