使用Microsoft Sync Framework跨网络同步文件

时间:2011-01-28 04:26:09

标签: wcf sync microsoft-sync-framework

此处给出的文件同步示例 - 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 个答案:

答案 0 :(得分:2)

只要您拥有可用的网络共享,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;

这样做是定义两个文件同步提供程序,而协调器将在两个方向同步文件。它跟踪提供程序中设置的目录中文件的创建,修改和删除。

此时需要的只是在SyncOrchestrator上调用Synchronize:

    orchestrator.Synchronize();