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

Cra*_*rge 9 wcf sync microsoft-sync-framework

此处给出的文件同步示例 - http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=3424仅讨论在同一台计算机上同步文件.有没有人遇到过使用类似WCF之类的工作示例,以使其适用于网络中的文件?

Bryant的例子 - http://bryantlikes.com/archive/2008/01/03/remote-file-sync-using-wcf-and-msf.aspx并不完整,只是单向同步而且不太理想.

Phi*_*son 2

只要您有可用的网络共享,同步框架就可以跨网络同步文件。

在 FileSyncProvider 的构造函数中,将 rootDirectoryPath 设置为您具有读写权限的网络共享位置:

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

    FileSyncProvidor provider = new FileSyncProvider(networkPath);
Run Code Online (Sandbox Code Playgroud)

要以这种方式进行双向同步,您需要为源系统和目标系统创建一个 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;
Run Code Online (Sandbox Code Playgroud)

其作用是定义两个文件同步提供程序,编排器将双向同步文件。它跟踪提供程序中设置的目录中文件的创建、修改和删除。

此时所需要做的就是在 SyncOrchestrator 上调用 Synchronize:

    orchestrator.Synchronize();
Run Code Online (Sandbox Code Playgroud)