Cette semaine a eu lieu du 11 au 13 février 2014 la conférence Microsoft TechDays. J’ai été présent à la première journée dédiée principalement aux développeurs. Après la session plénière « Votre futur est dans le code », place aux sessions techniques allant du débutant (100) au niveau confirmé (300). Ce présent article a pour but de vous faire un compte rendu de la session intitulée « Mode offline et Synchronisation avec Windows Phone et Windows 8.1 » avec un niveau 300. La session a été présentée par Guillaume BROUT de chez Itelios et Sébastien PERTUS, évangéliste chez Microsoft.

tech-days 2014

La présentation a été découpée en 2 parties :

  • la première partie traite de l’exécution d’une application en mode offline (déconnectée) en montrant les différentes manières pour stocker des données en locale allant de la simple sérialisation dans un fichier à l’insertion dans une base de données relationnelle locale
  • l’utilisation d’une application en mode offline est utile dans certains cas pour les utilisateurs qui n’ont pas accès au réseau. Une fois que le réseau est accessible il peut être intéressant de rapatrier les données stockées en locale vers le serveur. La deuxième partie de la présentation a porté sur la synchronisation des données entre le client et le serveur.

Stockage de données locales

Cette première partie a été présentée par Guillaume qui nous a expliqué que Windows 8 et Windows Phone 8 offrent différents modes de stockage de nos données :

  • locales : ce sont des données persistantes et n’existeront que sur le dispositif actuel.
  • temporaires : les données pourraient être supprimées par le système à tout moment.
  • itinérantes : ces données existeront sur tous les appareils sur lesquels l’utilisateur a installé l’application.

Toutes les classes facilitant le stockage des données en local sont localisées dans l’espace de noms Windows.Storage. Chaque fichier résultant de l’un de ces modes est localisé dans l’un des sous dossiers LocalStateRoamingState ou TempState du dossier parent portant le nom du package de l’application. Ex : C :\Users\{nom de l’utilisateur}\AppData\Local\Packages\{nom du package de l’application}.

Deux petites démonstrations ont été faites pour expliquer l’utilisation du premier mode de stockage avec un lecteur de flux RSS en Windows 8 comme exemple. Le fonctionnement est très simple : récupérer un flux RSS et stocker ces données en locale dans un fichier (1ère démo) et dans une base de données relationnelle locale SQL Lite (2ème démo). Ces données stockées en locales sont celles affichées, à la prochaine exécution de l’application, à l’utilisateur le temps de récupérer du contenu récent (si le réseau est trop lent) ou tout simplement disposer de ces données en mode déconnecté (si le réseau n’est pas disponible).

Le stockage des données dans un fichier est relativement simple il suffit de savoir comment sérialiser et dé-sérialiser le contenu. Quant au stockage sur SQL Lite il va falloir regarder du côté des 2 utilitaires sqllite-net et sqllite-winrt pour vous faciliter la tâche. L’image ci-dessous montre un exemple de code interrogeant une base SQL Lite avec SQLLite-net :

tech-days 2014

Synchronisation des données avec Sync Framework

Comme dit plus haut il est parfois utile de synchroniser les données stockées en locale vers un serveur centrale.

Une librairie de classes, Sync Framework, existe déjà pour synchroniser n’importe quelle source de données d’un serveur à une application de bureau qui exécute SQL server, SQL server CE, SQL Server Express. Cette librairie existait bien avant l’avènement de Windows Phone et Windows 8. Elle n’a pas beaucoup évolué et a été arrêtée à la version 2.1. Cela n’a pas empêché la création d’un toolkit permettant d’étendre ses fonctionnalités à Silverlight, Windows Phone 7 mais aussi iPhone, Android et BlackBerry. La communication entre un client et le serveur pour se synchroniser se fait via le protocole OData et les formats de données possibles sont du JSON ou de l’ATOM.

Toute la partie synchronisation des données a été présentée par Sébastien qui, pour faciliter la vie des développeurs, a créé un autre toolkit Sync Toolkit for WinRT qui est une implémentation WinRT de Sync Framework. Sync Toolkit for WinRT permet de mettre en place assez rapidement la synchronisation avec WInRT ou Windows Phone 8 et une base de données SQL Lite.

Il a fait une démonstration de son toolkit de bout en bout : la génération du code côté client et celui côté serveur. Pour comprendre comment marche tout cela il vous suffit d’aller sur le site prévu pour Sync Toolkit for WinRT où vous trouverez la conception de l’application démo de la session via un tutoriel disponible ici.

Globalement j’ai trouvé la session très intéressante surtout la deuxième partie. Les speakers ont très bien expliqué le mode déconnecté ainsi que la synchronisation même si cette dernière a été présentée par Sébastien de façon un peu trop rapide. Toute la synchronisation est expliquée en détail sur le site dédié à son toolkit.

À bientôt pour d’autres articles.

Ne ratez plus aucunes actualités avec la newsletter mensuelle de SoftFluent