1
Windows Phone 7 Sync
application on Azure
David Allaigre
Lead Solution Internet
Digital Marketing
Avanade
2
Objectifs de la session
Découvrir comment concevoir une application
« Offline » ready.
Découvrir comment utiliser le Sync Framework
4.0
Découvrir comment utiliser la plateforme Azure
pour une application « Offline » Ready.
Gagner du temps en s’évitant quelques
problèmes !
3
Un peu d’histoire !
L’ère du mainframe :
Application 1 Tiers : l’écran est déporté !
L’ère de la micro informatique :
Application 2 Tiers : on externalise la base de données.
L’ère du réseau et de l’internet :
Application 3 Tiers : Base  Middle Service (Serveur Web) 
Client (Browser)
L’ère de la mobilité & du cloud:
Application n tiers, explosion des applications multi devices.
Disparition du stockage on « promise », développement des
offres « Software as a Service »
4
Mais un vieux problème
Comment résoudre les problèmes liés à la
mobilité :
Une promesse intenable : Une connexion partout et à
un prix acceptable !
Les applications full web n’ont plus d’intérêt sans
connexion :
Transformer son smartphone en brique inutile : les
joies du « roaming » 
5
Des solutions ?
Comment toujours avoir les
« données » nécessaires à son
application même hors
connexion.
Garder les données sur soi ! Ex les
contacts téléphoniques
Copier les données avant mobilité
sur le device et les recopier au
retour : ex fichier Access  Excel
Utiliser la réplication de données :
SQL Replication ou rejouer un
fichier de transaction
Offline Client
Server / Service
Remote
Store
Local Data
Cache
Client App
Sync
6
Sync Framework
Sync
Simple protocol
(OData & Sync)
Minimal client &
store
requirements
Windows Server / IIS
Sync
Endpoints
Auth / Mgmt
/ Bus Logic
SyncFx
SQL Server
Windows Azure
Sync
Endpoints
Auth / Mgmt
/ Bus Logic
SyncFx
SQL Azure
Easy to develop the
sync endpoints
Client API
support
Architecture générale
7
Sync Framework
Isolated
Storage
Provider
Silverlight Offline
Application
OData Sync
Proxy
Cache
Controller
Isolated
Storage Sync Logic
Collections
Silverlight Offline Client
Windows Azure Application
SQL
Azure
SQL
Azure
Provider
Sync
Logic
OData Sync Endpoint
Busines
s Logic
Architecture Silverlight
8
De la méthode
Le « offline ready » doit être pris en compte dès le départ
Il n’est pas possible d’accéder à la base de façon totale:
Problème de sécurité: avoir une copie de données auxquelles
on ne devrait pas accéder.
Problème de stockage sur le device
On va partitionner notre base par table et par ligne.
On ne synchronise qu’une partition.
On accepte l’idée d’avoir de l’info en double dans la
base pour des gains de performance et s’éviter des
tables de liaisons à synchroniser.
9
Pour des raisons de santé mentale !
Le développement d’applications « offline » ready
suivra une montée en charge de la difficulté :
Etape 1 : Création d’une base SQL locale, d’un service
de synchronisation local et d’un client facilement
débuggable (ex Silverlight)
Etape 2 : On externalise sur le cloud la base SQL
Etape 3 : On externalise le service sur le cloud
Etape 4 : On passe sur des clients moins facilement
débuggables ex WP7.
10
Le scénario de la démo
Une application de « Wishes list » :
Un utilisateur peut créer et manager sa liste en mode
online  Offline
Les entités :
User : Entité représentant les utilisateurs
WishList : Entité représentant les listes de vœux
Wish : Entité représentant les vœux
Connected : Entité permettant de donner accès a
sa liste de vœux à d’autres utilisateurs
11
Etape 1: Génération du fichier de
config
Après installation du sdk
Dans le répertoire : Microsoft SDKsMicrosoft Sync
Framework4.0bin
SyncSvcUtil : outil en ligne de commande
SyncSvcUtilHelper : GUI du même outil.
L’outil va permettre :
De générer le fichier de config
De provisionner la base
De générer les proxys
12
Etape 1 : Génération du fichier de
config
Le fichier de config contient :
La structure des données
Les informations de localisation des données
Le partitionning des données
13
Etape 2 : Provisionning de la base
Le provisionning consiste en la génération de
tables au sein de la base pour la gestion de la
synchonisation.
L’opération de provisionning est réversible à tout
moment.
14
Etape 3 : Génération des fichiers pour
le serveur et les clients
Côté serveur :
OData Service + génération des entités
Modification des fichiers serveurs pour inclure la
configuration et les informations de partitionning
Côté client :
Au choix : dans le cas de la démo l’isolateStorage
15
Etape 4 : Utilisation des proxy client
Les principales fonctions :
Pour le stockage local :
OfflineContext.Load  LoadAsync
OfflineContext.ClearCache
OfflineContext.AddItem  DeleteItem
OfflineContext.SaveChanges
OfflineContext.CancelChanges
Pour la synchronisation
OfflineContext.CacheControler.IsBusy
OfflineContext.CacheControler.RefreshAsync
Attention : Bien utiliser le dispatcher car potentiellement les
retours sont dans des threads différents
16
Etape 4 : Utilisation des proxy client
LoadAsync : Chargement des
données depuis le storage local
Erreur? ClearCache, RefreshAsync
AddItem  Modify Item  Delete
Item
Save Changes
Action cliente : Sync
RefreshAsync
17
Etape 5 : Déplacement vers SQL Azure
Attention dès le départ :
Certains datatypes n’existent pas : GUID !
L’utilisation de SQL Azure est très similaire à SQL Server.
Sync framework 4.0 est compatible avec SQL Azure de
manière native.
18
Etape 6 : Déplacement du service
Il s’agit d’un simple projet web offrant un web service sur
un binding webHttpBinding…
Mais cela ne marche pas comme nous le voudrions :
Sync Framework 4.0 est basé sur Sync Framework 2.1
Sync Framework 2.1 utilise une dll COM qu’il faut
registrer
-> On utilise donc un code dans le WebRole. OnStart
pour « registrer » la dll.
19
Etape 7 : Connection du WP7 vers le
cloud
Peu de différence avec la version Silverlight, on peut
utiliser le même ViewModel et partager une grande partie
du code.
Lors des tests sur le device, le déconnecter pour être sûr
de passer par la connexion mobile.
Attention à la taille des données à synchroniser.
20
Conclusion
Une application doit être réfléchi avant !
Les capacités offline d’une application doivent être
envisagées d’un point de vue fonctionnelle et
technique
Certaines fonctions n’ont aucun intérêt en mode
offline.
Attention à la sécurité des données, le offline sort
de l’information accessible souvent sans
authentification.
Merci à tous, et bon Techdays…

Windows phone 7 sync application sur Azure, création d'application offline ready avec le sync frame

  • 1.
    1 Windows Phone 7Sync application on Azure David Allaigre Lead Solution Internet Digital Marketing Avanade
  • 2.
    2 Objectifs de lasession Découvrir comment concevoir une application « Offline » ready. Découvrir comment utiliser le Sync Framework 4.0 Découvrir comment utiliser la plateforme Azure pour une application « Offline » Ready. Gagner du temps en s’évitant quelques problèmes !
  • 3.
    3 Un peu d’histoire! L’ère du mainframe : Application 1 Tiers : l’écran est déporté ! L’ère de la micro informatique : Application 2 Tiers : on externalise la base de données. L’ère du réseau et de l’internet : Application 3 Tiers : Base Middle Service (Serveur Web) Client (Browser) L’ère de la mobilité & du cloud: Application n tiers, explosion des applications multi devices. Disparition du stockage on « promise », développement des offres « Software as a Service »
  • 4.
    4 Mais un vieuxproblème Comment résoudre les problèmes liés à la mobilité : Une promesse intenable : Une connexion partout et à un prix acceptable ! Les applications full web n’ont plus d’intérêt sans connexion : Transformer son smartphone en brique inutile : les joies du « roaming » 
  • 5.
    5 Des solutions ? Commenttoujours avoir les « données » nécessaires à son application même hors connexion. Garder les données sur soi ! Ex les contacts téléphoniques Copier les données avant mobilité sur le device et les recopier au retour : ex fichier Access Excel Utiliser la réplication de données : SQL Replication ou rejouer un fichier de transaction Offline Client Server / Service Remote Store Local Data Cache Client App Sync
  • 6.
    6 Sync Framework Sync Simple protocol (OData& Sync) Minimal client & store requirements Windows Server / IIS Sync Endpoints Auth / Mgmt / Bus Logic SyncFx SQL Server Windows Azure Sync Endpoints Auth / Mgmt / Bus Logic SyncFx SQL Azure Easy to develop the sync endpoints Client API support Architecture générale
  • 7.
    7 Sync Framework Isolated Storage Provider Silverlight Offline Application ODataSync Proxy Cache Controller Isolated Storage Sync Logic Collections Silverlight Offline Client Windows Azure Application SQL Azure SQL Azure Provider Sync Logic OData Sync Endpoint Busines s Logic Architecture Silverlight
  • 8.
    8 De la méthode Le« offline ready » doit être pris en compte dès le départ Il n’est pas possible d’accéder à la base de façon totale: Problème de sécurité: avoir une copie de données auxquelles on ne devrait pas accéder. Problème de stockage sur le device On va partitionner notre base par table et par ligne. On ne synchronise qu’une partition. On accepte l’idée d’avoir de l’info en double dans la base pour des gains de performance et s’éviter des tables de liaisons à synchroniser.
  • 9.
    9 Pour des raisonsde santé mentale ! Le développement d’applications « offline » ready suivra une montée en charge de la difficulté : Etape 1 : Création d’une base SQL locale, d’un service de synchronisation local et d’un client facilement débuggable (ex Silverlight) Etape 2 : On externalise sur le cloud la base SQL Etape 3 : On externalise le service sur le cloud Etape 4 : On passe sur des clients moins facilement débuggables ex WP7.
  • 10.
    10 Le scénario dela démo Une application de « Wishes list » : Un utilisateur peut créer et manager sa liste en mode online Offline Les entités : User : Entité représentant les utilisateurs WishList : Entité représentant les listes de vœux Wish : Entité représentant les vœux Connected : Entité permettant de donner accès a sa liste de vœux à d’autres utilisateurs
  • 11.
    11 Etape 1: Générationdu fichier de config Après installation du sdk Dans le répertoire : Microsoft SDKsMicrosoft Sync Framework4.0bin SyncSvcUtil : outil en ligne de commande SyncSvcUtilHelper : GUI du même outil. L’outil va permettre : De générer le fichier de config De provisionner la base De générer les proxys
  • 12.
    12 Etape 1 :Génération du fichier de config Le fichier de config contient : La structure des données Les informations de localisation des données Le partitionning des données
  • 13.
    13 Etape 2 :Provisionning de la base Le provisionning consiste en la génération de tables au sein de la base pour la gestion de la synchonisation. L’opération de provisionning est réversible à tout moment.
  • 14.
    14 Etape 3 :Génération des fichiers pour le serveur et les clients Côté serveur : OData Service + génération des entités Modification des fichiers serveurs pour inclure la configuration et les informations de partitionning Côté client : Au choix : dans le cas de la démo l’isolateStorage
  • 15.
    15 Etape 4 :Utilisation des proxy client Les principales fonctions : Pour le stockage local : OfflineContext.Load LoadAsync OfflineContext.ClearCache OfflineContext.AddItem DeleteItem OfflineContext.SaveChanges OfflineContext.CancelChanges Pour la synchronisation OfflineContext.CacheControler.IsBusy OfflineContext.CacheControler.RefreshAsync Attention : Bien utiliser le dispatcher car potentiellement les retours sont dans des threads différents
  • 16.
    16 Etape 4 :Utilisation des proxy client LoadAsync : Chargement des données depuis le storage local Erreur? ClearCache, RefreshAsync AddItem Modify Item Delete Item Save Changes Action cliente : Sync RefreshAsync
  • 17.
    17 Etape 5 :Déplacement vers SQL Azure Attention dès le départ : Certains datatypes n’existent pas : GUID ! L’utilisation de SQL Azure est très similaire à SQL Server. Sync framework 4.0 est compatible avec SQL Azure de manière native.
  • 18.
    18 Etape 6 :Déplacement du service Il s’agit d’un simple projet web offrant un web service sur un binding webHttpBinding… Mais cela ne marche pas comme nous le voudrions : Sync Framework 4.0 est basé sur Sync Framework 2.1 Sync Framework 2.1 utilise une dll COM qu’il faut registrer -> On utilise donc un code dans le WebRole. OnStart pour « registrer » la dll.
  • 19.
    19 Etape 7 :Connection du WP7 vers le cloud Peu de différence avec la version Silverlight, on peut utiliser le même ViewModel et partager une grande partie du code. Lors des tests sur le device, le déconnecter pour être sûr de passer par la connexion mobile. Attention à la taille des données à synchroniser.
  • 20.
    20 Conclusion Une application doitêtre réfléchi avant ! Les capacités offline d’une application doivent être envisagées d’un point de vue fonctionnelle et technique Certaines fonctions n’ont aucun intérêt en mode offline. Attention à la sécurité des données, le offline sort de l’information accessible souvent sans authentification. Merci à tous, et bon Techdays…