Использование Microsoft Sync Framework для синхронизации файлов по сети - PullRequest
9 голосов
/ 28 января 2011

Приведенный здесь пример синхронизации файлов - http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=3424 говорит только о синхронизации файлов на одном компьютере.Кто-нибудь сталкивался с рабочим примером использования чего-то вроде WCF, чтобы это работало для файлов в сети?

Пример Брайанта - http://bryantlikes.com/archive/2008/01/03/remote-file-sync-using-wcf-and-msf.aspx не завершен и является только односторонней синхронизацией и не идеален.

1 Ответ

2 голосов
/ 10 ноября 2011

Среда Sync может синхронизировать файлы по сети, если у вас есть доступный общий сетевой ресурс.

В конструкторе FileSyncProvider установите rootDirectoryPath для общего сетевого ресурса, для которого у вас есть права на чтение и запись:

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

    FileSyncProvidor provider = new FileSyncProvider(networkPath);

Чтобы выполнить двустороннюю синхронизацию таким образом, вам потребуется создать FileSyncProvider для исходной и целевой систем и использовать SyncOrchestrator, чтобы выполнить тяжелую работу за вас.

Пример:

    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;

Это определяет двух провайдеров синхронизации файлов, и оркестратор будет синхронизировать файлы в обоих направлениях. Он отслеживает создание, изменение и удаление файлов в каталогах, установленных в поставщиках.

Все, что нужно на этом этапе, - это вызвать Synchronize на SyncOrchestrator:

    orchestrator.Synchronize();
...