Microsoft Synchronisation Framework (MSF) est donc une nouvelle plateforme de synchronisation, et comme tout Framework, va servir de base à tout système voulant mettre en oeuvre une logique de coordination et de collaboration entre différents outils, qu'ils soient connectés, ou déconnectés.
MSF fournit plusieurs Providers de synchronisation, en standard.
On peut compter:
- Sync Services for ADO.NET : Permet la synchronisation de sources de données ADO.NET
- Sync Services for File Systems : Permet la synchronisation de systèmes de fichiers et dossiers
- Sync Services for SSE : Perme la synchronisation d'extensions comme RSS ou encore ATOM
Nous allons aborder aujourd'hui Sync Services for ADO.NET.
Nous allons nous attacher à créer un exemple simple qui a pour but de vous familiariser avec MSF.
Pour illuster cet exemple, nous créerons un projet simple, de type Windows Forms, qui va communiquer avec une source de données via :
- Un Dataset, qu'il soit fortement typé ou non.
- Un DataAdapter, supportant les commandes de bases de sélection, d'insertion, suppression et mise à jour de la source de données.
Si on matérialise cela via un schéma simpliste, nous aurions :
Que se passe-t-il si la connexion entre notre application et sa source de donnée n'est plus disponible ?
Notre application ne peut plus fonctionner et dans la plupart des cas, elle levera une exception non gérée.
Pour résoudre ce problème, nous allons utiliser MSF et utiliser une base locale Sql Server CE.
Nous allons aborder ici le concept de Base de données locale de cache.
Cette base de données va permettre à notre application de fonctionner correctement même si la connexion à notre source de données est intérrompue.
Là où il va falloir changer notre conception de l'application, c'est que nous allons déporter toute la gestion des données sur notre base de données locale et celle-ci se synchronisera à notre demande (et si le réseau le permet) à notre source de données principale.
Nous allons donc créer une application qui :
- Communique avec une base de données cache.
- Demander à cette base de se synchroniser avec notre source de données principale lorsque le réseau est disponible.
Dans le schéma précédent vous pouvez voir que notre DataAdapter est remplacé par un SyncAdapter. Nous allons détailler son fonctionnement dans la prochaine section.
Vous pouvez aussi remarquer que des ordres supplémentaires sont disponibles. En effet, lorsque nous allons demander à notre base de données locale de se synchroniser, que doit-on faire ?
- Récupérer les enregistrements insérés dans la source de données serveur.
- Récupérer les enregistrements modifiés dans la source de données serveur.
- Récupérer les enregistrements supprimés dans la source de données serveur.
- Insérer les enregistrements nouvellement créés dans la base de données cache.
- Supprimer les enregistrements supprimés dans la base de données cache.
- Mettre à jour les enregistrements modifiés dans la base de données cache.