Costruire un clone di dropbox

2

Voglio creare il mio clone Dropbox (per scopi di apprendimento - solo l'app Windows) e sto cercando alcuni suggerimenti.

Attualmente utilizzo il FileSystemWatcher per verificare se c'è una modifica, quindi utilizzare rsync per sincronizzare tutti i dati. Ora, come funziona con più computer? Se il computer A cambia un file, dovrebbe essere trasferito al computer B (e viceversa).

Le mie domande sono:

  • Devo creare un sistema di notifica push o ci sono (migliori) alternative, quindi so se i dati devono essere tirati (come in un file è cambiato sul server)?
  • Dropbox ha il segno di spunta verde e un'icona di sincronizzazione blu. Come si può fare? Come faccio a sapere quali file vengono caricati / scaricati (se rsync -ing l'intera directory)?
posta Devator 21.05.2012 - 14:01
fonte

2 risposte

1

Do I need to create a push notification system?

Questa è una soluzione. Sono sicuro che ce ne sono molti che farebbero quello che vuoi.

Are there (better) alternatives so I know if data has to be pulled (as in a file has changed on the server)?

Definisci "migliore" dovresti tenere traccia di quali file sono stati aggiornati. Ciò richiede che tu mantenga più versioni e il tuo sistema catturerà sempre la versione più recente a meno che non sia richiesta un'altra versione.

Dropbox has the green tick and a blue sync icon. How can this be done? How do I know which files are being uploaded/downloaded (if rsync-ing the whole directory)?

Come puoi implementare esattamente cosa? Quando il sistema rileva una nuova versione di un file sul sistema locale, crea una nuova versione sul server prima di caricare il file.

Sembra che tu debba pensare a come questo sistema funzionerà prima di procedere.

    
risposta data 21.05.2012 - 14:41
fonte
0
  • È possibile eseguire una notifica push sull'aggiornamento dei file OPPURE è possibile impostare un timer sul client per verificare periodicamente gli aggiornamenti dei file e, se necessario, estrarlo. Se si dipende dai timer, potrebbe essere necessario attendere un po 'prima che l'aggiornamento si verifichi. Devi fare qualcosa come download-if-newer seguito da id-file e il suo ultimo aggiornamento-tempo.

  • Devi mantenere i timestamp / o i valori hash degli ultimi aggiornamenti per ogni file. Il client avrà anche il valore dell'ultimo ora dell'aggiornamento / valore hash. Se il timestamp è più recente / hash diverso sul server, si saprà che il file sul server è più recente. Se si utilizzano i timestamp, assicurarsi che sia un valore temporale globale del lato server.

risposta data 21.05.2012 - 14:46
fonte

Leggi altre domande sui tag