2010-05-18 11 views
0

Dans mon AP, nous serilaize les données localement pour une utilisation hors ligne. Pour s'assurer que l'application est toujours à jour, je lance une mise à jour sur le lancement.monotouch - mettre à jour les données localement

Pour ce faire, j'ai un ensemble de services WCF qui obtiendront un delta pour les données demandées. Plutôt que de compliquer les choses, j'ai un service pour mettre à jour les événements, un service pour mettre à jour les étapes, un service pour mettre à jour les actes etc. Ce qui signifie que je dois chaîner ces appels dans les callbacks.

Le problème avec ceci est qu'ils peuvent prendre un peu de temps pour se mettre à jour et il semble un peu maladroit de les enchaîner comme ça.

Quelle est la méthode de mise à jour préférée de plusieurs services pour réaliser ce dont j'ai besoin ici?

Vive

w: //

Répondre

0

Pour Cracklytics (http://cracklytics.com), ainsi que quelques autres applications d'entreprise que j'ai travaillé, je cours deux appels de service en même temps en parallèle, au lieu de faire l'un après l'autre.

J'ai passé pas mal de temps à tester les performances de faire des appels un à la fois contre deux à la fois contre trois à la fois, etc., et j'ai obtenu les meilleurs résultats sous 2G et 3G en exécutant 2 threads à la fois. Sur le sans fil, je pourrais commencer comme 8-10 fils ensemble et ils courraient très vite. En plus de ces deux appels, Cracklytics télécharge également quelques cartes de Google en même temps que ces deux appels, mais je n'ai remarqué aucun impact sur les performances.

Pour l'implémentation, j'ai une classe principale qui garde une trace de tous les classes et contrôles webservices quand ils devraient être démarrés et terminés.

Cependant, il est tout aussi important de savoir quand les appels de services Web doivent être annulés; Par exemple, si vous téléchargez des données pour une table, mais que l'utilisateur passe à un autre écran, vous devez immédiatement annuler l'appel, afin que cela n'ait aucune incidence sur le téléchargement des données pour l'écran suivant.

Espérons que cela aide.

+0

hey - merci - c'est une réponse brillante. Je montre un écran d'attente de chargement pendant les appels de service, il n'y a donc aucun moyen qu'un utilisateur puisse être envoyé n'importe où pendant les appels. J'ai également ajouté une configuration AutoUpdate dans les préférences afin qu'ils puissent l'éteindre si elle commence à les ennuyer. – iwayneo

+0

Merci, je pourrais aider. –

+0

une dernière question à ce sujet - pour les exécuter en parallèle - est-ce que vous n'avez qu'à les séparer ensemble et à les enchaîner à partir de là ou utilisez-vous des fils pour les mettre en route? – iwayneo

Questions connexes