2010-10-18 14 views
1

Je développe actuellement une application utilisant l'API dropbox C#.Technique de synchronisation DropBox

DropBox est capable de capturer les changements sur leur serveur et aussi les changements dans leur client presque immédiatement.

Quelle technique utilisent-ils pour synchroniser ces 2 réplicas?

Souhaite que quelqu'un puisse me donner un indice pour commencer, j'essaie d'éviter la synchronisation de base de la minuterie.

Merci.

Répondre

0

Pour les modifications client, ils peuvent utiliser un observateur de système de fichiers. S'il y a un changement dans le dossier de la boîte de dépôt, ils déclencheront l'API pour mettre à jour le serveur de la boîte de dépôt.

Je ne suis pas sûr au sujet des changements de côté serveur, mais il devrait y avoir un mécanisme de minuterie pour interroger le serveur pour voir les changements ..

+0

Existe-t-il une technologie similaire au courrier push, mais pour un protocole autre que le courrier électronique? – VHanded

+0

Il ne doit pas être toutes les secondes, quelque chose comme AJAX COMET sondages longs .. client initiera une connexion, et le serveur ne répondra que s'il y a un changement. Donc, le client lance le prochain sondage après avoir récupéré la première réponse .. quelque chose comme ça ... – RameshVel

1

Je ne sais pas ce qu'ils utilisent. Mais vous pouvez utiliser fileystemwatcher de C#. Cela vous permettra d'attraper un événement de changement de fichier. Ce n'est pas la chose la plus facile à utiliser, mais simple à utiliser.

Pour vous assurer que les anciennes révisions du fichier pour ne pas remplacer le nouveau, je suppose qu'ils utilisent un compteur de révision, ce qui est souvent le cas.

Pour identifier si le fichier est modifié à partir du fichier stocké actuel, je pense qu'ils peuvent utiliser un certain nombre de contrôles

if (local[file.name].size != server[file.name].size) 
{ 
    file.changed = true; 
} 
else if (local[file.name].md5 != server[file.name].md5) 
{ 
    file.changed = true; 
} 
else 
{ 
    file.changed = false; 
} 
+0

Je comprends cette partie, ce que je ne comprends pas, c'est comment le client sait que les fichiers sont modifiés du côté serveur. Client Dropbox est capable de détecter les changements sur le serveur presque immédiatement, et la technologie similaire que je peux utiliser? – VHanded

+0

Filesystemwatcher détectera un même sur le système de fichiers, comme le changement d'un fichier. C'est plus que probablement ce qui est utilisé. L'autre gars a dit exactement la même chose. voir http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx – Ablue

+0

Je devrais changer ma question: comment détecter les changements de serveur immédiatement? – VHanded

0

Pour côté serveur les modifications que vous devez demander « list_folder_continue » dans V2 api. Il renverra la liste des changements effectués. Testez-le en utilisant le lien this. S'ils utilisent un mécanisme de minuterie, cela signifie qu'il interroge presque toutes les secondes.