此处给出的文件同步示例 - 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并不完整,只是单向同步而且不够理想。
答案 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();