|
このごろ はてなダイアリーの方にも同じようなエントリを書いてます。 で、向こうではちょっと先にサンプルを乗せたんだけれど、Microsoft Sync Framework をちょこっと触ったので少し紹介してみようと思います。 参考にしたサンプルはMSDNにあるIntroducing Microsoft Sync Framework: Sync Services for File Systems まぁこれにコメント入れながら自分なりにコードを書き換えて試してみました。 Sync Framework はインストールするとこんな感じのディレクトリ構成になって、for Text 版も for ADO.NET 版もサンプルがくっついてくるので参考にしてみるといいと思います。 で今回作ったサンプルではレプリカディレクトリ1(C:\temp\Replica1)とレプリカディレクトリ2(C:\temp\Replica2)を同期します。 コード自体は向こうを見てもらうとして動きの解説を。(だって長いし。。。) まずレプリカディレクトリ1の内容はこれで、 ディレクトリ2はこれ(空ですね) で、さっきのサンプルを実行するとこうなる。 ディレクトリ1 ディレクトリ2 ディレクトリ1と2の内容が同期されているのがわかると思います。 そのほかにも最初はなかったファイルが2つ新しくできています。 SyncFile.ID は同期先を一意に表すファイルでサンプル中の GetReplicaId メソッドで作成しています。 もうひとつの filesync.metadata は、サンプル中の RegisterReplicateFolderメソッドで作成されます。 実際には FileSyncProvider.DetectChanges() を実行したときに作成されるファイルで、そのディレクトリのファイル情報を格納するメタファイルになります。 そして CreateSnapshot ではファイルコピー成功時の動作と失敗時のイベントハンドらを定義後 同期元、同期先の SyncId を元に同期プロバイダを使用して2つのデイレクトリを同期します。 USBのファイルを同期させたり、サーバのファイルを同期させてオフラインのときに使うといったことが簡単にできそうですね。 ファイルのコピーが失敗したときなども、イベント内のステータスで分岐することで細かく記述するし使いどころを考えると結構面白いかもしれない。 |
| << 前記事(2007/11/08) | トップへ | 後記事(2007/11/13)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2007/11/08) | トップへ | 後記事(2007/11/13)>> |