La session MIX11 illustre s’il en était besoin la disponibilité de très nombreux kits de développement logiciel (SDK) et bibliothèques OData côté client.

Ce tutoriel découverte vous permettra de développer en 30 minutes une application basique pour Smartphone, en l’occurrence Windows Phone (mais d’autres plateformes viendront par la suite).

Nous vous proposons de développer ensemble rapidement une application Silverlight pour Windows Phone consommant les données d’une instance OGDI et plus particulièrement le service de données OGDI qui est en charge de les exposer suivant le protocole standard OData, protocole que l’on ne présente plus !

Nous commençons cependant par un bref rappel sur le protocole OData que vous pouvez passer si vous avez déjà fait connaissance avec lui par le passé (par exemple en ayant lu les précédents articles du blog).

Protocole OData

Le protocole OData (Open Data Protocol) est basé sur un modèle d’entités et de relations qui vous permet d’accéder aux données sous forme de ressources REST (REpresentational State Transfer). Vous vous basez donc sur des requêtes http pour exécuter des requêtes, créer, mettre à jour ou supprimer les données ainsi exposées.

Pour une présentation complète du protocole OData et notamment de ses opérateurs, nous vous invitons à consulter le lien suivant : http://www.odata.org/developers/protocols.

Pour les besoins de ce tutoriel, il vous suffit de savoir que c’est un protocole qui vous permet de manipuler des collections de données mises en ligne par de plus en plus de services/producteurs comme eBay, Netflix, SharePoint 2010, SQL Azure, etc.

Ainsi, via une exposition sur le protocole OData, l’instance française d’OGDI, à savoir le site de test OGDI France, permet aux développeurs de tirer parti de collections de données hébergées dans l'infrastructure Windows Azure dans le Cloud. C’est cette instance que vous allez cibler pour le développement de l’application. Elle propose différentes collections de données prêtes à l’usage comme, en particulier, celle des places de stationnement réservées aux personnes handicapées de la ville de Rennes issue des données ouvertes mises à disposition par la ville de Rennes, données ouvertes sur lesquelles nous nous sommes déjà appuyés dans d’autres billets.

La bibliothèque cliente OData WCF Data Services pour Windows Phone fournit une couche d’abstraction au-dessus des spécifications du protocole OData pour faciliter l’exploitation des données publiées en OData par l’instance OGDI considérée. Elle se charge ainsi :

  • De générer les classes proxy correspondant aux modèles de classes publiées par le service de données OGDI pour les places de stationnement réservées aux personnes handicapées ;
  • D’envoyer les requêtes http REST au service de données OGDI ;
  • De « parser » le flux Atom reçu en retour de façon à le traiter vis-à-vis des classes proxy ; les données retournées initialement au format AtomPub sont ainsi transformées sous forme d’objets C# que vous pouvez directement utiliser dans votre code.

Avant de rentrer dans les détails de mise en œuvre, l’architecture de l’application est la suivante :

image

Mise en place des prérequis

image

Pour créer un projet sous Windows Phone dans l’environnement de développement Visual Studio 2010, vous avez dans un premier temps besoin du kit de développement logiciel (SDK) Windows Phone disponible gratuitement à l’adresse http://create.msdn.com/en-us/home/getting_started.

A l’heure où nous rédigeons ces lignes, vous avez le choix entre deux versions du SDK :

  • Windows Phone SDK (Windows Phone Developer Tools) 7.0 : Il s’agit du SDK courante permettant de développer des applications pour Windows Phone 7, de les exécuter dans l’émulateur local et ensuite de les publier sur la place de marché (Marketplace). (Pour ce dernier point, il est nécessaire de créer au préalable un compte développeur sur le portail développeur, l’App-Hub. Le processus d’inscription sur le Marketplace et les ressources associées sont décrites ici.) En plus de l’installation du SDK, vous devez également installer la mise à jour de janvier 2011 ainsi que le correctif des outils de développement fourni.
  • Windows Phone SDK 7.1 Beta 2 : Il s’agit du SDK actuellement en bêta tirant parti des nouvelles fonctionnalités de la prochaine mise à jour pour Windows Phone (nom de code Mango) qui inclut notamment de nouvelles interfaces programmatiques (API), un profiler d’application ainsi qu’un émulateur amélioré. Toutes les nouveautés sont synthétisées ici. A noter que si vous choisissez de développer des applications sur ce SDK, vous ne pourrez pas les publier tout de suite sur le Marketplace et devrez attendre la sortie officielle grand public de Mango.

Choisissez le SDK qui vous convient, ce choix n’a pas d’incidence sur la suite de ce tutoriel étant donné que les 2 SDK sont traités, chaque fois qu’une différence ou variation notable existe entre ces deux versions.

Création du projet Windows Phone

Une fois le SDK dument installé, ouvrez l’environnement Visual Studio 2010, créez un nouveau projet puis choisissez Windows Phone Pivot Application dans la catégorie Silverlight for Windows Phone.

image

La solution générée est fondée sur le contrôle Pivot de Silverlight pour Windows Phone qui est une sorte de contrôle Onglet (TabControl) dont l’ergonomie a été revue pour s’adapter à un périphérique tactile (device touch-screen). Ce contrôle est l’un des éléments de Metro, le langage de design de Windows Phone.

(Il nous difficile de décrire Metro dans le cadre de ce tutoriel si l’on veut lui garder une certaine concision et se concentrer sur l’essentiel, à savoir décrire les étapes clé du développement d’une application Windows Phone consommant des données OData. Dans ce contexte, nous vous invitons à consulter, de façon complémentaire, les ressources indispensables pour bien appréhender Metro regroupées ici.)

Comme vous le constatez, le projet s’ouvre avec en première vue la page MainPage.xaml qui représente l’unique vue de la solution fondée sur le contrôle Pivot de Silverlight.

Vous pouvez aussi constater qu’il y a un dossier ViewModels qui contient les classes représentant la logique applicative de vos vues ainsi qu’un dossier SampleData qui contient les fichiers fournissant des données aux vues au moment de la conception (design) de l’application, c’est-à-dire lors de l’exécution de l’interface graphique dans le designer de Visual Studio ou dans celui d’Expression Blend.

On dit que l’application est « Blendable », sous-entendu que l’on peut tester le rendu de des vues et des modèles (template) sans avoir besoin d’exécuter toute l’application en mode Debug ce qui rend le développement beaucoup plus productif.

Par tous ces aspects, vous avez déjà une application Silverlight qui respecte l’architecture (design pattern) MVVM (Model View ViewModel), une architecture qui vise à répondre aux problématiques de maintenabilité et de testabilité de la logique applicative pour faire synthétique.

image

Ceci clôt cette première partie du tutoriel qui est découpé en quatre parties, de façon à bien illustrer les étapes clé du développement de l’application :

  • Dans la seconde partie, vous allez voir comment générer les classes proxy côté client qui permettront de se connecter au service de données OGDI ;
  • Dans la troisième partie, nous nous intéressons à l’affichage des données ainsi consommées dans une liste ;
  • Et enfin dans une quatrième et dernière partie, nous poursuivons le développement de votre application basique en illustrant comment afficher les données ainsi consommées sur une carte Bing Cartes.

Pour simplifier la lecture de ces différents billets, nous ne traitons pas les détails de l’application ou le design de celle-ci. Il ne s’agit pas, en effet, de décrire son développement dans les moindres détails et possibilités mais plutôt d’en illustrer les principes qui la soutendent. Néanmoins, le code source fourni sera beaucoup plus complet et contiendra toute la logique applicative.

Nous espérons avoir éveillé votre curiosité et vous avoir donné l’envie de regarder les prochains billets composant ce tutoriel ainsi que le code source complet mis à disposition.