Migrer de 2003 à 2012 R2, adopter HyperV ou Microsoft Azure : comment réalise...
Windows phone 7 sync application sur Azure, création d'application offline ready avec le sync frame
1. 1
Windows Phone 7 Sync
application on Azure
David Allaigre
Lead Solution Internet
Digital Marketing
Avanade
2. 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. 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 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. 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. 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
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 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. 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. 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. 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…