windows phone 7 sync application sur azure, création d'application offline ready avec le sync...
DESCRIPTION
TRANSCRIPT
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
Business 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 SDKs\Microsoft Sync
Framework\4.0\bin
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…