2009年12月3日木曜日

Sync Frameworkによるファイルの同期

いろいろあってSync Frameworkによる同期について調査。
とりあえず、でやってみたのは「ファイルの同期」。SyncToyとか使ってやればいいんだけど勉強と調査をかねてやってみた。

結論から言うと「物凄く簡単にファイル同期ができる」というところに。

注意すべきところは
「参照設定で個別にSyncFrameworkのDllを設定する必要がある」
点かな。今回のファイル同期であれば、

  • Microsoft.Synchronization(Microsoft.Synchronization.dll)
  • Microsoft.Synchronization.Files(Microsoft.Synchronization.Files.dll)

これらはSyncFramework2.0をインストールすると、ProgramFiles関係のフォルダにインストールされているのでそこから直接参照しないといけないのよ。GACに入っていると思っていたから少し探してしまった。

'同期オプションの指定

Dim syncOption As FileSyncOptions = FileSyncOptions.CompareFileStreams Or FileSyncOptions.ExplicitDetectChanges Or FileSyncOptions.RecycleConflictLoserFiles Or FileSyncOptions.RecycleDeletedFiles

 

'対象ファイルの設定(今回未使用)
Dim syncFilter As New FileSyncScopeFilter
With syncFilter

End With

 

'同期処理の実行
Using src As New FileSyncProvider(コピー元, Nothing, syncOption)
    Using dest As New FileSyncProvider(コピー先, Nothing, syncOption)

        src.DetectChanges()
        dest.DetectChanges()

        Dim syncAgent As New SyncOrchestrator
        With syncAgent
            .RemoteProvider = src
            .LocalProvider = dest
            .Direction = SyncDirectionOrder.Download
            .Synchronize()
        End With

    End Using
End Using

 

以上がファイル同期に書いてみたソースの全部。これだけで楽々できてしまうので、業務システムとかでよくある最新モジュールの適用などは大分楽にできるようになるねぇ。もちろんセキュリティ関係とか処理タイミングとか考えないといけないことが多々あるので、そこらへんは一工夫。

0 件のコメント:

コメントを投稿