我有很多定期更新的静态内容,通过IIS通过IIS作为虚拟目录提供。我有一个C#应用程序来更新这个静态内容。静态内容表示匹配集。 此内容会定期更改,并在向客户提供之前进行验证。我目前正在使用this code进行目录复制,但这有点暴力。
内容包含带有版本信息的清单文件。我知道我可以最后更新清单文件,但我不想从已经下载较旧内容的客户端中删除地毯,并留下一组脏文件。
建议更换文件夹的方法是什么,以便现有客户端不会获得文件集的混合版本?这必须是常见的,但我找不到任何图书馆或最佳实践指导来做到这一点。 我看起来像rsync for Windows和其他备份/恢复样式工具,但它们看起来都有点矫枉过正,而且通常没有API。
答案 0 :(得分:0)
我最终使用了Microsoft Sync Framework。它运作得相当好。还有一些错误。这是框架的good intro。 这是我实施的重要部分。
public static bool DirectorySynchronisation(string sourceFiles, string targetFiles)
{
Trace.Info("Beginning Directory Sync");
try
{
Trace.Info("... between source location: {0} and targeted location: {1}", sourceFiles, targetFiles);
//Exclude metadata from sync.
var fileSyncScopeFilter = new FileSyncScopeFilter();
fileSyncScopeFilter.FileNameExcludes.Add("metadata.abc");
// Create file system provider
var source = new FileSyncProvider(Guid.NewGuid(), sourceFiles, fileSyncScopeFilter, FileSyncOptions.None);
var target = new FileSyncProvider(Guid.NewGuid(), targetFiles);
// Ask providers to detect changes
source.DetectChanges();
target.DetectChanges();
// Sync changes
SyncOrchestrator agent = new SyncOrchestrator
{
LocalProvider = source,
RemoteProvider = target,
Direction = SyncDirectionOrder.Upload //One way only
};
agent.Synchronize();
Trace.Info("Completed Directory Sync");
return true;
}
catch (Exception exception)
{
Trace.Info("Exception thrown while syncing files");
Trace.Exception(exception);
return false;
}
}
希望这有助于某人。