2010-07-28 7 views
1

J'ai synchronisé une application iPhone avec un site Web à l'aide d'un service Web. La procédure de synchronisation J'utilise est la suivante:Idées de synchronisation entre l'iPhone et le site Web

  1. Envoyer les éléments qui doivent synchroniser l'iPhone sur le site
  2. Ajouter les articles sur le site MySql
  3. renverrons les articles qui doivent synchroniser sur le site Web pour iPhone
  4. Ajouter les articles sur la base de données SQLite iPhone

Tout cela se fait à l'aide d'une requête au serveur. Souvent, l'utilisateur n'a que quelques éléments à synchroniser (< 20), mais parfois un utilisateur peut avoir 2000 éléments à synchroniser. L'ajout de 2000 éléments à une base de données MySql peut prendre un certain temps. J'utilise les transactions et engager sur le site lors de l'ajout des éléments, quelque chose comme ceci:

mysqlTransaction.BeginTransaction(); 
foreach item sent from iPhone 
{ 
    mysql.CommandText = //Sql query 
    mysql.ExecuteNonQuery(); 
} 
mysqlTransaction.Commit(); 

Parfois, lorsqu'un utilisateur a beaucoup d'éléments à ajouter, cela peut prendre trèèès longtemps. Mon idée est donc de changer un peu la procédure de synchronisation et, au lieu d'utiliser une requête de grande taille, je divise la requête en morceaux, en envoyant et en recevant 50 éléments à la fois. Cela entraînera des demandes plus nombreuses mais plus rapides. Quelles sont vos idées à ce sujet? Comment le résoudriez-vous? Est-ce la bonne chose à utiliser les transactions et commettre sur le serveur?

+0

Je n'utilise que les transactions pour les requêtes qui sont inexplicablement liés d'une certaine façon, que si l'on requête a échoué, causerait une sorte de questions de corruption ou de l'intégrité des données. Je comprends pourquoi vous utilisez des transactions ici, mais je ne voudrais pas utiliser une transaction, sauf si vous voulez donner une modification à confirmer. D'autres personnes peuvent être en désaccord. Je ne suis pas sûr. – Layke

+0

Mon idée d'utiliser les transactions ici était de faire l'insertion d'articles plus rapidement que si vous n'utilisez pas de transactions. Est-ce que je me trompe ici? – Mrbiggerm

Répondre

1

Je voudrais essayer de faire la mise à jour de « iPhone au serveur » et « serveur iphone » simultanée et asynchrone si possible. De cette façon, la synchronisation sera plus rapide et l'application iPhone ne bloquera pas l'attente de l'ensemble du processus.

En plus divisant la mise à jour en trames si la mise à jour est plus grande qu'une taille donnée est une bonne idée.

Questions connexes