2010-02-02 5 views
1

J'écris une application django et une application Iphone, je dois les synchroniser. Les utilisateurs peuvent supprimer, mettre à jour et créer de nouveaux objets dans l'application Web et dans l'application iPhone. Lorsqu'ils sont en ligne avec l'iPhone, l'application doit être synchronisée. Y at-il un moyen simple de faire cela?Django Iphone sync

Merci,

Joaquin

+0

Il serait utile que vous posiez une question plus précise et/ou que vous nous disiez plus de détails sur l'application que vous construisez. –

Répondre

0

Il n'y a pas construit de façon de le faire. Vous devez conserver un magasin de données serveur et un magasin de données local sur l'iPhone. Une fois en ligne, vérifiez les différences manuellement et déterminez les actions à effectuer sur le serveur et le côté iPhone (suppression, mise à jour, etc.).

Sync est généralement difficile. Je vous suggère de commencer à disposer les magasins de données du serveur et de l'iPhone, et de réfléchir à leur relation, et comment le serveur ou l'iPhone peut-il connaître l'état de leur enregistrement de contrepartie, afin de les synchroniser.

2

En général: Il n'y a pas de manière simple. Mais je vais décrire une approche. Si vous ne vous souciez pas de l'écrasement des modifications: Conservez un horodatage des modifications les plus récentes apportées à chaque enregistrement et un horodatage de chaque synchronisation. Lors de la synchronisation, vous obtenez une liste de toutes les mises à jour sur l'iPhone depuis la dernière synchronisation et toutes les mises à jour sur le serveur. Vous écrivez de l'iPhone au serveur si l'horodatage de l'iPhone pour cet enregistrement est plus récent que celui du serveur, et vice versa.

Mais vous vous en souciez probablement. Supposons que vous ayez édité une note intitulée "Où se retrouver le vendredi". Il a commencé vide. Maintenant, au téléphone, vous avez écrit "Ma maison". Dix minutes plus tard, votre ami édite la même note sur le serveur et écrit «Le dîner». Qui gagne? Stack Overflow ne peut pas répondre à cette question pour vous. C'est spécifique à l'application. OK, donc modifiez l'approche ci-dessus: si la version du serveur d'un enregistrement et la version locale ont été modifiées depuis la dernière synchronisation, vous devez demander à l'utilisateur quoi faire. C'est l'algorithme de base. Si vous vous souciez beaucoup des modifications qui ne sont pas remplacées, au point que vous souhaitez fusionner les modifications à différents endroits dans les mêmes documents, votre système commencera à se rapprocher de la complexité des systèmes de contrôle de version comme Subversion ou Git. Pas du tout simple.