2011-01-28 11 views
9

L'esempio di sincronizzazione dei file fornito qui - http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=3424 parla solo della sincronizzazione dei file sulla stessa macchina. Qualcuno si è imbattuto in un esempio funzionante di utilizzo di qualcosa come WCF per consentire a questo di funzionare per i file attraverso una rete?Utilizzo di Microsoft Sync Framework per sincronizzare i file attraverso la rete

L'esempio di Bryant - http://bryantlikes.com/archive/2008/01/03/remote-file-sync-using-wcf-and-msf.aspx non è completo ed è solo una sincronizzazione unidirezionale e non è l'ideale.

+0

ho provato, ma non sembra possibile. Il provider di file utilizza molte classi interne e non vedo alcun modo per delegarle. – Timores

risposta

1

Il framework Sync può sincronizzare i file attraverso la rete finché si dispone di una condivisione di rete disponibile.

Nel costruttore della FileSyncProvider impostare la rootDirectoryPath ad un percorso di condivisione di rete di avere permessi di lettura e scrittura per:

string networkPath = @"\\machinename\sharedfolderlocation"; 

    FileSyncProvidor provider = new FileSyncProvider(networkPath); 

Per eseguire una sincronizzazione a due vie in questo modo sarà necessario creare un FileSyncProvider sia per i sistemi di origine che di destinazione e usa SyncOrchestrator per eseguire il sollevamento pesante per te.

Un esempio:

string firstLocation = @"\\sourcemachine\sourceshare"; 
    string secondLocation = @"\\sourcemachine2\sourceshare2"; 

    FileSyncProvidor firstProvider = new FileSyncProvider(firstLocation); 
    FileSyncProvidor secondProvider = new FileSyncProvider(secondLocation); 

    SyncOrchestrator orchestrator = new SyncOrchestrator(); 
    orchestrator.LocalProvider = firstProvider; 
    orchestrator.RemoteProvider = secondProvider; 
    orchestrator.Direction = SyncDirectionOrder.DownloadAndUpload; 

Quello che fa è definire due fornitori FileSync e l'orchestratore sarà sincronizzare i file in entrambe le direzioni. Tiene traccia di creazioni, modifiche ed eliminazioni di file nelle directory impostate nei provider.

Tutto ciò che è necessario a questo punto è quello di chiamare Sincronizza lo SyncOrchestrator:

orchestrator.Synchronize(); 
+0

se sto usando il percorso di rete usando IP, ad es. "\\ 10.1.1.102 \\ sharedPath", quindi non è in grado di creare l'istanza. Mi ha appena dato l'errore che "non riusciva a trovare parte del percorso del file". lo stesso percorso sono in grado di accedere a usng eseguire il comando. Quale può essere il problema??? – Shubhit304

+0

Forse è il \\ prima di sharedPath? Non ne sono sicuro. –