現在、dropbox c# API を使用してアプリケーションを開発しています。
DropBox は、サーバー上の変更をキャプチャするだけでなく、クライアントの変更もほぼ即座にキャプチャできます。
この 2 つのレプリカを同期するために、彼らはどのような手法を使用していますか?
誰かが手がかりを教えてくれることを願って、タイマーベースの同期を避けようとしています。
ありがとう。
現在、dropbox c# API を使用してアプリケーションを開発しています。
DropBox は、サーバー上の変更をキャプチャするだけでなく、クライアントの変更もほぼ即座にキャプチャできます。
この 2 つのレプリカを同期するために、彼らはどのような手法を使用していますか?
誰かが手がかりを教えてくれることを願って、タイマーベースの同期を避けようとしています。
ありがとう。
彼らが何を使っているのかわかりません。ただし、c#からfilesystemwatcherを使用できます。これにより、ファイル変更イベントをキャッチできます。作業するのは簡単ではありませんが、使い方は簡単です。
ファイルの古いリビジョンが新しいものを上書きしないようにするために、リビジョンカウンターを使用していると思いますが、これはよくあることです。
ファイルが現在保存されているファイルから変更されているかどうかを識別するために、いくつかのチェックを使用する可能性があると思います
if (local[file.name].size != server[file.name].size)
{
file.changed = true;
}
else if (local[file.name].md5 != server[file.name].md5)
{
file.changed = true;
}
else
{
file.changed = false;
}
クライアントの変更には、ファイルシステムウォッチャーを使用する場合があります。ドロップボックスフォルダに変更があった場合、APIをトリガーしてドロップボックスサーバーを更新します。
サーバー側の変更についてはわかりませんが、サーバーをポーリングして変更を確認するためのタイマーメカニズムが必要です。
サーバー側の変更については、V2 API で「list_folder_continue」を要求する必要があります。行われた変更のリストを返します。このリンクを使用してテストします。