Utilisation de la réplication SQL dans le code .NET d'une application mobile - Implémentation & Conseils : PARTIE 3/3 (Réinitialisations d'abonnements)
Ce post représente la dernière partie de notre article sur l’utilisation de la réplication SQL dans le code .NET d’une application mobile.
Précédemment, nous avons vu comment utiliser les méthodes Synchronize (partie 1) et BeginSynchronize (partie 2), pour effectuer une synchronisation de données entre un terminal mobile et un serveur.
Aujourd’hui, nous allons voir comment gérer les réinitialisations d’abonnements…
Un abonnement a besoin de subir une réinitialisation dans les cas ci-dessous :
-
Lorsque le schéma de la publication (articles, filtres) a été modifié et que les abonnements ont été notés “à réinitialiser”.
-
Lorsqu’un abonnement expire, suite au dépassement du délai de rétention.
La réinitialisation d’un abonnement sur le terminal est assurée grâce à la méthode ReinitializeSubscription de la classe SqlCeReplication.
La nécessité de réinitialiser un abonnement peut être détectée en attrapant une erreur particulière (exception) dans la clause “Catch” lors du processus de réplication.
Le code de l’erreur native de l’exception est alors le code 28587.
Si cette erreur particulière est attrapée, cela signifie que l’abonnement a expiré, et la méthode ReinitializeSubscription doit immédiatement être appelée :
private void btnSynchro_Click(object sender, EventArgs e)
{
SqlCeReplication repl = null;
try
{
repl = new SqlCeReplication();
// (...)
// (Définition des propriétés de l'objet repl)
// (...)
repl.Synchronize();
}
catch (SqlCeException ex)
{
switch (ex.NativeError)
{
case 28587:
repl.ReinitializeSubscription(true);
repl.Synchronize();
break;
default:
throw ex;
}
}
finally
{
if (repl != null)
repl.Dispose();
}
}
Remarque importante :
Lors de la phase de réinitialisation, l’abonné redescend systématiquement l’ensemble des données pour reconstruire entièrement sa base mobile. Il s’agit d’une opération très couteuse en terme de volumétrie, d’où l’importance d’éviter les modifications de schéma sur la base serveur et de définir une période de rétention correcte.
Pi-R.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :