Développement Windows Phone 7 (partie 2/2)

#ide#Microsoft#mobile

La première partie de cet article est consultable à cette adresse : https://www.osaxis.fr/developpement-windows-phone-7-partie-1-2/

4. Principes de programmation

Le développement des applications s’effectue en Silverlight, ou XNA suivant qu’il s’agisse d’applications standards ou de jeux. Les APIs XNA sont d’ailleurs celles utilisées pour développer des jeux pour Zune, Windows et XBox 360, mais nous n’aborderons pas l’utilisation de XNA dans cet article.

La conception des interfaces peut en partie s’effectuer graphiquement depuis l’éditeur de Visual Studio ou avec un outil dédié : Expression Blend. Pour peaufiner le tout, il est bien sûr possible d’éditer les fichiers “.xaml” à la main.

Pour voir son application publiée sur le Market Place, le développeur doit respecter un certain nombre de contraintes. Notons par exemple que le code non managé (code directement exécuté par le processeur par opposition au code managé, exécuté sous le contrôle de la machine virtuelle) n’est pas autorisé. Pour toutes les informations relatives aux points à respecter pour publier sur le market place, ne pas hésiter à consulter le site officiel.

La suite de cette section est consacrée à Silverlight pour WP7 ainsi qu’au fonctionnement des pages XAML.

4. a. Silverlight

A la base, Silverlight est un framework basé sur WPF (Windows Presentation Foundation) permettant de développer des applications Web riches. C’est en quelque sorte une version simplifiée de WPF, qui s’exécute directement dans un navigateur (moyennant l’installation d’un plugin embarquant l’environnement d’exécution). WPF propose aux développeurs des APIs permettant d’utiliser toute la puissance de la carte graphique pour dessiner des interfaces graphiques à forte valeur ajoutée et proposer aux utilisateurs un meilleur rendu. WPF et donc Silverlight permettent de séparer la partie graphique de l’application de la partie contenu. Pour la conception de l’interface, c’est XAML qui est utilisé, celui-ci s’apparentant à un HTML aux possiblités accrues. Nous le présentons brièvement dans la section suivante. Pour la partie développement, C# comme VB peuvent être choisis. Microsoft propose une documentation complète en ligne.

Microsoft a choisi d’utiliser Silverlight pour le développement des applications sur Windows Phone. On peut donc par exemple utiliser l’objet “WebClient” pour gérer les appels de l’application à un serveur Web. Pour s’adapter à cette nouvelle plateforme, Silverlight dispose de quelques ajouts par rapport à la version Windows, lui permettant de gérer le matériel des Windows Phone et les particularités logicielles. Cela concerne entre autres :

  • l’appareil photo
  • l’accéléromètre
  • le GPS
  • la vibration
  • la radio FM
  • l’écran tactile
  • les notifications

Il permet également de :

  • gérer la navigation au sein de l’application (naviguer entre les pages de l’application)
  • transférer des données d’une page à une autre
  • sauvegarder l’état d’une page (PhoneApplicationService)
  • etc.

Les différences entre Silverlight pour Windows et Silverlight pour Windows Phone sont listées dans l’aide en ligne de Microsoft.

Une application WP7 est découpée en pages, composées de différents contrôles (ou objets graphiques), avec lesquels l’utilisateur interagit. Ce dernier déclenche différents évènements qu’utilise le développeur pour définir le comportement de l’application. Il s’agit d’une programmation dite évènementielle. Comme pour un développement Web ASP .Net, chaque page est représentée par deux fichiers dans la solution, pour la séparation entre l’interface de l’application et le contenu :

  • NomDeLaPage.xaml : pour l’interface graphique principalement, codé en XAML
  • NomDeLaPage.xaml.cs (ou NomDeLaPage.xaml.vb) : appelé Code Behind, pour la logique de l’application, codé en C# (ou en VB), et qui fait appel aux différentes APIs proposées par Silverlight

Remarque : dans un souci de simplification de lecture, dans le présent article, nous ne présentons que la version C# pour le Code Behind, sachant que les deux technologies C# et VB sont proposées au choix pour le développeur.

4. b. XAML

Comme nous l’avons déjà évoqué brièvement, les pages qui composent une application WP7 sont décrites dans des fichiers XML écrits en XAML (eXtensible Application Markup Language), semblables aux vues Android en de nombreux points. Un fichier XAML permet donc de décrire l’apparence générale de la page et des contrôles qui la composent, mais pas seulement. En effet, XAML permet aussi aux développeurs d’effectuer des opérations supplémentaires comme l’ajout d’animations, le Data Binding (association entre contrôles et données), … qui sont autant de fonctions en moins à implémenter.

Le code C# lié à la page a directement accès aux éléments de la page XAML associée. Il n’y a rien de spécial à écrire pour lier une page XAML à son fichier C# associé. La page est en réalité une seule classe partielle partagée entre les deux fichiers :

  • le .xaml :

  • et son Code Behind associé (le .xaml.cs) :

Avec ces principes en tête, nous pouvons présenter de façon très intuitive un exemple succinct d’utilisation de ces outils pour l’ajout d’un contrôle (objet graphique) et d’un handler (intercepteur) sur un évènement.

4. c. Les premiers pas en tant que développeur WP7

Les premiers pas dans le développement d’une application WP7 sont simples même si l’on ne connaît pas encore les technologies Microsoft car Visual Studio nous simplifie la vie. De plus, Internet regorge de tutoriels et de documentations. Tout comme pour les applications WebForms ou WPF, on peut placer les différents composants de l’interface de l’application via un éditeur graphique et générer automatiquement les stubs de méthodes (méthodes provisoires permettant d’avancer dans le développement avant d’avoir codé leur contenu) à exécuter lors de la levée des évènements voulus.

Voici un exemple simple d’ajout d’un bouton et de génération du stub de la méthode à exécuter lors du clic de celui-ci :

1. Le choix du contrôle se fait dans la boite à outils (cf. figure 11).


Figure 11. Boîte à outils – rassemble les contrôles disponibles pour les pages

2. Son placement dans la page XAML étant alors simplement effectué par un glisser-déposer (cf. figure 12).


Figure 12. Placement d’un bouton dans la page

3. Le code XAML est automatiquement modifié en conséquence, on y retrouve notre contrôle nouvellement ajouté :

4. Une fois le contrôle placé, on se lie à l’évènement souhaité grâce à la fenêtre “Propriétés” (cf. figure 13).


Figure 13. Fenêtre des propriétés du bouton

5. Sur l’onglet “Évènements”, on double clique sur l’évènement souhaité pour générer le stub de la méthode qui sera exécutée lors de la levée de l’évènement :

.xaml.cs :

.xaml :

6. Il ne reste alors que le principal à faire… à savoir implémenter l’action souhaitée lors du clic sur le bouton ! 😉 Et là encore la tâche est simplifiée, grâce à l’Intellisense (complétion de code), aux snippets (génération automatique de squelettes de code), etc…

Pour une plus grande souplesse, on peut bien sûr éditer tous les fichiers manuellement. Même si le principe derrière WPF et donc Silverlight est de séparer la présentation de la page de la partie code, tout peut être fait dans le code behind en C#, y compris la conception de l’interface graphique de l’application.

Cet exemple très basique nous a permis de présenter l’utilisation de Visual Studio pour créer simplement les pages de son application et générer les stubs des handlers qui nous intéressent. Pour les informations concernant les différentes APIs de Silverlight permettant l’utilisation de toutes les capacités des Windows Phone, il est possible de se référer :

Un dernier point, la réalisation d’une application complexe ne peut bien sûr pas se faire en plaçant toute la logique du fonctionnement dans le code behind des pages. Il faut créer les librairies nécessaires et les faire communiquer avec les pages du projet Silverlight. Pour un modèle de développement adapté aux applications Silverlight, on peut se documenter sur le pattern MVVM en commençant par exemple par la visite de ce site : http://www.galasoft.ch/mvvm.

4. d. Expression Blend et la conception graphique de l’application

L’élément principal de l’application, qui peut faire son succès ou provoquer son échec, est certainement l’expérience utilisateur avec en première ligne l’interface graphique. Microsoft a bien compris ce point, et propose l’outil de conception d’interface graphique Expression Blend.


Figure 14. Une page XAML vue dans l’éditeur d’interface, Microsoft Expression Blend

Plus complet que l’éditeur graphique dans Visual Studio, Expression Blend permet de se concentrer sur la conception de l’interface de l’application. Il n’est cependant pas nécessaire de lancer Visual Studio en parallèle si l’on souhaite ajouter un évènement, implémenter une méthode, ou simplement consulter le code C#. Expression Blend permet en effet de faire tout ceci. Il est même possible de déployer l’application vers l’émulateur (ou un téléphone de développeur). Le point négatif d’Expression Blend est le nombre de menus / onglets / composants présents à l’écran : il faut cliquer partout. Les adeptes de Notepad et de la ligne de commande préféreront s’en passer. Expression blend est donc plus particulièrement destiné aux designers qui n’ont pas nécessairement d’expérience en programmation. Il permet en effet une séparation plus aisée entre le travail du développeur et celui du concepteur de l’interface utilisateur.

Conjointement à Expression Blend, Microsoft propose un certain nombre de normes à respecter pour une conception cohérente d’interfaces d’applications WP7 . En effet le développement pour mobiles impose quelques particularités au niveau de l’interface. Il ne faut pas oublier par exemple que le téléphone peut être tenu horizontalement comme verticalement, ce qui impose deux vues différentes pour une même application.

5. Persistance des données

Dans une application, la persistance des données est un élément clé. Elle permet de conserver la configuration de l’application ainsi que les données de l’utilisateur d’une exécution à l’autre de l’application.

Contrairement à Windows Mobile ou Android, les applications sous Windows Phone 7 n’ont pas un accès direct au système de fichiers. A l’instar de Silverlight sous Windows, il faut passer par l’Isolated Storage. Chaque application dispose de son espace de stockage individuel, ce qui rend impossible par ce biais le partage des informations entre différentes applications.

Toute la gestion de la persistance se trouve dans le namespace “System.IO.IsolatedStorage”

La classe IsolatedStorageFile s’utilise comme la classe File du framework .Net, tandis que la classe IsolatedStorageFileStream s’utilise comme la classe FileStream. On retrouve donc, mais cantonné à un espace reservé à l’application, la possibilité de vérifier la présence de fichiers ou de répertoires, de supprimer, d’ajouter ou de modifier des fichiers.

Pour ce qui est du cas particulier de la sauvegarde de la configuration de l’application, on peut utiliser l’IsolatedStorageSettings qui est en fait tout simplement un dictionnaire stocké sur l’IsolatedStorage. La clé est une chaîne de caractères au choix, et la valeur est l’objet à mémoriser :

Exemple : IsolatedStorageSettings.ApplicationSettings[« Clé »] = Objet;

A l’heure actuelle, l’IsolatedStorage est la seule solution de stockage d’information directement sur le téléphone. Il n’y a pas pour l’instant de version WP7 de SQL Compact Edition, version allégée de SQL Server disponible sur Windows Mobile.

6. Conclusion

Actuellement, WP7 souffre de sa jeunesse et de la concurrence directe avec iOS et Android. La faible quantité de téléphones proposés ainsi que le manque d’applications et de fonctionnalités l’empêche pour le moment de briller au combat. Cependant, ce nouveau système propose une interface originale et le principe des hubs permet de mettre en avant le contenu sans être obligé de lancer plusieurs applications. L’interface est pensée pour gagner du temps et avec la mise à jour de son système prévue pour l’automne 2011, le retard devrait se combler sérieusement par rapport à ses concurrents. De plus, l’intégration parfaite avec Visual Studio (Designer et Emulateur) et la facilité de prise en main de Silverlight fait de WP7 une plateforme alléchante pour les développeurs. Autre atout, Nokia a choisi d’abandonner Symbian au profit de WP7 comme système d’exploitation pour ses smartphones, et le premier téléphone WP7 estampillé “Nokia” devrait être proposé à la vente cet automne. Ceci devrait augmenter considérablement à court terme les parts de marché de l’OS de Microsoft. Par contre, s’il souhaite convaincre et revenir dans la bataille, Microsoft n’a plus le droit à l’erreur. Ceci est d’autant plus vrai que le géant de Redmond n’est pas encore présent sur un nouveau marché en plein essor, où Apple mène encore la danse pour le moment, et où Android aimerait se tailler une part du gâteau : le marché des Ardoises (oui, nous aussi, on préférait le terme “Tablette”) !

Avantages :

  • Interface épurée, agréable et réactive
  • Système original des hubs
  • Les outils proposés au développeur (Expression Blend et Visual Studio 2010 : Emulateur, Designer, Debogueur)
  • La stratégie future de Nokia axée sur Windows Phone

Inconvénients :

  • Pas de multitâches à ce jour
  • Manque d’applications
  • Mises à jour laborieuses et nécessitant la connexion à un ordinateur (et l’utilisation de Zune)
  • Des restrictions qui cumulées deviennent pesantes (pas de debug sur téléphone sans payer, obligation d’utiliser Zune pour la synchronisation, carte sim obligatoire pour démarrer le téléphone alors que seuls les appels et SMS devraient être impossibles sans carte…)