(57)【要約】  サーバファイルのコピーのコンテンツを、ダウンロードファイル、基本ファイル、及び作業ファイルに保存することができる。アプリケーションが作業ファイルを編集したというインジケーションがアプリケーションから受信されて、編集された作業ファイルのコピーが、アップロードファイルに保存される。サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータはクエリを行われる。サーバコンピュータのサーバファイルが変更されていない場合、サーバコンピュータのサーバファイルは、アップロードファイルのコンテンツで更新される。サーバコンピュータのサーバファイルが変更されている場合、アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての３方向マージが行われる。次に、サーバコンピュータのサーバファイルは、３方向マージの結果で更新される。
2011508342.tif 000002
【特許請求の範囲】
【請求項１】
非同期型レプリケーションを提供する方法であって、
ダウンロードファイル（１３０）、基本ファイル（１３５）、及び作業ファイル（１４０）にサーバファイル（１２０）のコピーのコンテンツを保存するステップ（２２５）と、
アプリケーション（１１５）が前記作業ファイル（１４０）を編集したというインジケーションを前記アプリケーション（１１５）から受信するステップ（２３０）と、
前記インジケーションに応じて、アップロードファイル（１４５）に前記編集された作業ファイル（１４０）のコピーを保存するステップ（２３５）と、
サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータにクエリを行うステップ（２４０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されていないと判断されると、前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記アップロードファイル（１４５）のコンテンツで更新するステップ（２６０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されていると判断されると、
前記アップロードファイル（１４５）、前記基本ファイル（１３５）、及び前記サーバコンピュータ（１１０）の前記変更されたサーバファイル（１２０）についての３方向マージを行うステップ（２５０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記３方向マージの結果で更新するステップ（２５５）と、
を含むことを特徴とする方法。
【請求項２】
前記サーバファイル（１２０）のコピーの要求を前記アプリケーション（１１５）から受信するステップ（２１０）を更に含むことを特徴とする請求項１記載の方法。
【請求項３】
前記サーバコンピュータ（１１０）に前記サーバファイル（１２０）の前記コピーを要求するステップ（２１５）を更に含むことを特徴とする請求項１記載の方法。
【請求項４】
前記サーバコンピュータ（１１０）から前記サーバファイル（１２０）の前記コピーを受信するステップ（２２０）を更に含むことを特徴とする請求項１記載の方法。
【請求項５】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されていると判断されると、前記ダウンロードファイル（１３０）のコンテンツ及び前記基本ファイル（１３５）のコンテンツを前記３方向マージの前記結果で置換するステップを更に含むことを特徴とする請求項１記載の方法。
【請求項６】
前記インジケーションを前記アプリケーション（１１５）から受信するステップ（２３０）は、前記インジケーションを前記アプリケーション（１１５）から受信するステップを含み、前記アプリケーション（１１５）、前記ダウンロードファイル（１３０）、前記基本ファイル（１３５）、前記作業ファイル（１４０）、及び前記アップロードファイル（１４５）はクライアントコンピュータ（１０５）にあることを特徴とする請求項１記載の方法。
【請求項７】
前記アップロードファイル（１４５）に前記編集された作業ファイル（１４０）のコピーを保存するステップ（２３５）は、前記作業ファイル（１４０）を保存する前記アプリケーション（１１５）に対してユーザが開始したコマンドに応じて、前記アップロードファイル（１４５）に前記編集された作業ファイル（１４０）のコピーを保存するステップを含むことを特徴とする請求項１記載の方法。
【請求項８】
前記アップロードファイル（１４５）に前記編集された作業ファイル（１４０）のコピーを保存するステップ（２３５）は、前記アプリケーション（１１５）をクローズするために前記アプリケーション（１１５）に対してユーザが開始したコマンドに応じて、前記アップロードファイル（１４５）に前記編集された作業ファイル（１４０）の前記コピーを保存するステップを含むことを特徴とする請求項１記載の方法。
【請求項９】
前記３方向マージを実行するステップ（２５０）は、前記３方向マージを実行する前記アプリケーション（１１５）を含むことを特徴とする請求項１記載の方法。
【請求項１０】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）のロックを失くした前記アプリケーション（１１５）に応じて、前記サーバコンピュータ（１１０）にクエリを行うステップを含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、前記アプリケーション（１１５）を実行中であって、前記サーバコンピュータ（１１０）との接続を失いかつ回復したクライアントコンピュータ（１０５）に応じて、前記サーバコンピュータ（１１０）にクエリを行うステップを含むことを特徴とする請求項１記載の方法。
【請求項１２】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、前記アプリケーション（１１５）を実行中であって、前記サーバコンピュータ（１１０）に接続されている前記クライアントコンピュータ（１０５）に応じて、前記サーバコンピュータ（１１０）にクエリを行うステップを含むことを特徴とする請求項１記載の方法。
【請求項１３】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、前記アプリケーション（１１５）を実行中であって、ユーザコマンドに応じて前記サーバコンピュータ（１１０）に接続されているクライアントコンピュータ（１０５）に応じて、前記サーバコンピュータ（１１０）にクエリを行うことを特徴とする請求項１記載の方法。
【請求項１４】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、予め定められたスケジュールに応じて、前記サーバコンピュータ（１１０）にクエリを行うステップを含むことを特徴とする請求項１記載の方法。
【請求項１５】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）は、前記アプリケーション（１１５）を実行中のクライアントコンピュータ（１０５）と前記サーバコンピュータ（１１０）との間の接続部（３１６）の利用可能な帯域幅が予め定められた値より大きいのに応じて、前記サーバコンピュータ（１１０）にクエリを行うステップを含むことを特徴とする請求項１記載の方法。
【請求項１６】
前記サーバ（１１０）から前記サーバファイル（１２０）への更新情報を受信するステップと、
前記ダウンロードファイル（１３０）及び前記作業ファイル（１４０）に前記受信した更新情報を保存するステップと、
を更に含むことを特徴とする請求項１記載の方法。
【請求項１７】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記アップロードファイル（１４５）のコンテンツで更新するステップ（２６０）は、
前記基本ファイル（１３５）と前記アップロードファイル（１４５）との間のディフを実行して前記基本ファイル（１３５）と前記アップロードファイル（１４５）との間の差分を判断するステップと、
前記基本ファイル（１３５）と前記アップロードファイル（１４５）との間の前記差分を、前記アプリケーション（１１５）を実行中でかつ前記基本ファイル（１３５）及び前記アップロードファイル（１４５）が存在するクライアントコンピュータ（１０５）から前記サーバコンピュータ（１１０）へ送信するステップと、
を含むことを特徴とする請求項１記載の方法。
【請求項１８】
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記３方向マージの結果で更新するステップ（２５５）は、
前記３方向マージの結果と前記サーバファイル（１２０）との間のディフを行って、前記３方向マージの前記結果と前記サーバファイル（１２０）との間の前記差分を判断するステップと、
前記３方向マージの前記結果及び前記サーバファイル（１２０）を、前記アプリケーション（１１５）を実行中でかつ前記３方向マージを行ったクライアントコンピュータ（１０５）から前記サーバコンピュータ（１１０）に送信するステップ（１８５）と、
を含むことを特徴とする請求項１記載の方法。
【請求項１９】
実行されると非同期型レプリケーションを提供する一組の命令を記憶するコンピュータ可読媒体であって、
前記一組の命令で実行される前記方法は、
アプリケーション（１１５）からサーバファイル（１２０）のコピーの要求を受信するステップ（２１０）と、
サーバコンピュータ（１１０）に前記サーバファイル（１２０）のコピーを要求するステップ（２１５）と、
前記サーバコンピュータ（１１０）から前記サーバファイル（１２０）の前記コピーを受信するステップ（２２０）と、
ダウンロードファイル（１３０）、基本ファイル（１３５）、及び作業ファイル（１４０）に前記サーバファイル（１２０）の前記コピーのコンテンツを保存するステップ（２２５）と、
前記アプリケーション（１１５）が前記作業ファイル（１４０）を編集したというインジケーションを前記アプリケーション（１１５）から受信するステップ（２３０）と、
前記インジケーションに応じて、アップロードファイル（１４５）に前記編集された作業ファイル（１４０）のコピーを保存するステップ（２３５）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されているかどうかを判断するために前記サーバコンピュータ（１１０）にクエリを行うステップ（２４０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されていないと判断されると、前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記アップロードファイル（１４５）のコンテンツで更新するステップ（２６０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）が変更されていると判断されると、
前記アップロードファイル（１４５）、前記基本ファイル（１３５）、及び前記サーバコンピュータ（１１０）の前記変更されたサーバファイルについての３方向マージを行うステップ（２５０）と、
前記サーバコンピュータ（１１０）の前記サーバファイル（１２０）を前記３方向マージの結果で更新するステップ（２５５）と、
前記ダウンロードファイル（１３０）の前記コンテンツ及び前記基本ファイルの前記コンテンツを前記３方向マージの前記結果で置換するステップと、
を含むことを特徴とするコンピュータ可読媒体。
【請求項２０】
非同期型レプリケーションを提供するシステムであって、
記憶装置と、
前記記憶装置に接続された処理装置と、
を含み、
前記処理装置は、
編集された作業ファイル（１４０）のコピーをアップロードファイルに保存し、
サーバコンピュータのサーバファイルが変更されていないと判断されると、前記サーバコンピュータの前記サーバファイルを前記アップロードファイルのコンテンツで更新し、
前記サーバコンピュータの前記サーバファイルが変更されていると判断されると、
前記アップロードファイル、基本ファイル（１３５）、及び前記サーバコンピュータの前記変更されたサーバファイルについての３方向マージを行って、
前記サーバコンピュータの前記サーバファイルを前記３方向マージの結果で更新することを特徴とするシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
クライアントサーバは、コンピュータネットワークを介してサーバとクライアントを分離するコンピューティングアーキテクチャである。コンピュータネットワークに接続された各クライアントまたは各サーバは、ノードと称される。最も基本的なクライアントサーバアーキテクチャタイプは、２つのノードタイプだけを用いる。即ち、クライアント及びサーバである。このアーキテクチャタイプは「２階層（ティア）」と称されることがある。２階層アーキテクチャは、クライアントとサーバとがコンピュータネットワークを介してファイル及び資源を共有できるようにする。
【０００２】
クライアントは、多くのソフトウェアのインスタンスを実行することができる。クライアントのソフトウェアのインスタンスの各々は、１つまたは複数の接続されたサーバにデータファイル要求を送信することができる。次に、サーバはこれらの要求を受信して処理し、要求しているクライアントに要求されたデータファイルを返送することができる。他のいかなるクライアントもデータファイルを編集することができないように、「ロック」がサーバの要求されたデータファイルに配されてもよい。しかしながら、クライアントとサーバとの間のコンピュータネットワークを介した接続が失われると、ロックもまた失われる可能性がある。このことは問題になる可能性がある。なぜなら、所定の位置のロックなしに接続が回復されると、接続（及びその結果としてロック）が失われた後にデータファイルが別のクライアントによって編集されたかどうかについて知る方法がクライアントにはないからである。
【発明の概要】
【０００３】
この概要は、詳細な説明において更に後述される単純化された形式の概念の選択を導くために提供される。この概要は、請求された発明の重要な特徴または基本的特徴を識別することを意図していない。また、この概要は、請求された本発明の範囲を限定するために用いられることも意図していない。
【０００４】
サーバファイルのコピーのコンテンツは、ダウンロードファイル、基本ファイル、及び作業ファイルに保存することができる。これらのファイル（例えば、ダウンロードファイル、基本ファイル、及び作業ファイル）は、より効率的に保存及び更新できるようにするために、抽象的な方法で（例えば、データベースで）クライアントのマシンに格納されてもよい。これらのファイルは、実際のファイルである必要はない。アプリケーションが作業ファイルを編集したというインジケーションがアプリケーションから受信されて、編集された作業ファイルのコピーがアップロードファイルに保存される。サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータにクエリを行うことができる。サーバコンピュータのサーバファイルが変更されていない場合、サーバコンピュータのサーバファイルはアップロードファイルのコンテンツで更新することができる。原子性（不可分性）を保証するためにロックは存在しないかもしれないので、サーバコンピュータはこのチェックを行って、１つの原子性のトランザクションを代わりに行うことができる。サーバコンピュータのサーバファイルが変更されている場合、アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての３方向マージを実行することができる。次に、サーバコンピュータのサーバファイルは、３方向マージの結果で更新することができる。
【０００５】
前述の概要及び以下の詳細な説明は、例を示しており、説明のためだけのものである。従って、前述の概要及び以下の詳細な説明は、限定的であると見なされるべきではない。更に、複数の特徴または複数の変化形を、本明細書において説明される特徴及び変化形に加えて備えることができる。例えば、実施形態は、詳細な説明において説明される様々な特徴の組合せ及び下位の組合せを対象にすることができる。
【０００６】
この開示の一部に組み込まれていてかつこの開示の一部を構成している添付の図面は、本発明の様々な実施形態を示す。
【図面の簡単な説明】
【０００７】
【図１】動作環境を示すブロック図である。
【図２】非同期型レプリケーションを提供する方法についてのフローチャートである。
【図３】クライアントコンピュータを含むシステムのブロック図である。
【発明を実施するための形態】
【０００８】
以下の詳細な説明は、添付の図面を参照する。可能な限り、同じ参照番号が、同じ要素または類似の要素を参照するために図面及び以下の説明において用いられている。本発明についての複数の実施形態が説明されるが、変更態様、適応及び他の実施例が可能である。例えば、置換、追加、または変更が図面に示された要素に対して行われてもよく、本明細書において説明される方法は、開示された方法に対して複数のステージを置換、並べ替え、または追加することで変更することができる。従って、以下の詳細な説明は、本発明を限定しない。代わりに、本発明の適当な範囲は、添付の特許請求の範囲によって画定される。
【０００９】
非同期型レプリケーションが提供される（例えば、ユーザインタフェースに関して）。本発明の実施形態は、ユーザのサーバをベースとしたファイルについての信頼できる可用性を提供することができる。例えば、本発明の実施形態は、（例えば、クライアントの）ローカルストアにリモートコンテンツを（例えば、サーバから）自動的にキャッシュすることができる。このキャッシュは、クライアントのローカルアプリケーションが所有して管理することができる。このリモートキャッシュ機能を提供するために、本発明の実施形態は、ｉ）ユーザによって操作されるクライアントのローカルストアにサーバファイルをシームレスにレプリケーションする、ｉｉ）ローカルストアのファイルで動作する、ｉｉｉ）ローカルストアから必要に応じサーバにファイルをバックアップしてマージする。この特徴は、オープンされているサーバをベースとしたファイル及び保存されているサーバベースのファイルを障害に対してより回復力があるようにすることができる。なぜならば、より詳細に以下に説明されるように、サーバファイルのロックを維持することが要求されないからである。
【００１０】
図１は、動作環境１００のブロック図である。図１に示すように、動作環境１００は、ネットワーク（図示せず）を介して接続されているクライアントコンピュータ１０５及びサーバコンピュータ１１０を含むことができる。サーバコンピュータ１１０は、例えばサーバファイル１２０を供給するリモートのファイルサーバであってもよい。クライアントコンピュータ１０５は、アプリケーション１１５及びローカルストア１１７を含むことができる。アプリケーション１１５は、電子メール及び連絡先用アプリケーション、文書処理アプリケーション、表計算アプリケーション、データベースアプリケーション、スライドを使ったプレゼンテーション用アプリケーション、または描画アプリケーションプログラムもしくはコンピュータを使ったアプリケーションプログラムを含むことができるが、これらに限定されない。ローカルストア１１７は、同期マネージャ１２５、ダウンロードファイル１３０、基本ファイル１３５、作業ファイル１４０、及びアップロードファイル１４５を含むことができる。同期マネージャ１２５は、図２に関してさらに詳細に下記に説明されるように、ローカルストア１１７を動作させることができるソフトウェアモジュールを含むことができる。
【００１１】
図２は、非同期型レプリケーションを提供する本発明の実施形態による方法２００に含まれる概略的なステージを説明するフローチャートである。方法２００は、図３に関してより詳細に下記に説明されるようにクライアントコンピュータ１０５を用いて実施することができる。方法２００のステージを実施する方法が、更に詳細に下記に説明される。方法２００は、開始ブロック２０５で始まり、ステージ２１０へ進む。ステージ２１０において、同期マネージャ１２５は、アプリケーション１１５からのサーバファイル１２０のコピー要求を受信することができる。例えば、アプリケーション１１５は、文書処理アプリケーションを含むことができるが、これに限定されない。例えば、アプリケーション１１５を操作しているユーザは、サーバコンピュータ１１０にある文書を開きたいと思うかもしれない。従って、アプリケーション１１５は、アプリケーション１１５がサーバコンピュータ１１０のサーバファイル１２０を開く必要があるということを同期マネージャ１２５に示すことができる。
【００１２】
同期マネージャ１２５がサーバファイル１２０のコピー要求を受信するステージ２１０から、方法２００はステージ２１５へ進み、ステージ２１５において同期マネージャ１２５はサーバコンピュータ１１０にサーバファイル１２０のコピーを要求することができる。例えば、同期マネージャ１２５は、クライアントコンピュータ１０５をサーバコンピュータ１１０に接続しているネットワークを介してサーバコンピュータ１１０と通信し、サーバコンピュータ１１０にサーバファイル１２０のコピーを要求することができる。
【００１３】
ステージ２１５において一旦同期マネージャ１２５がサーバコンピュータ１１０にサーバファイル１２０のコピーを要求すると、方法２００はステージ２２０に続き、ステージ２２０において、同期マネージャ１２５はサーバコンピュータ１１０からサーバファイル１２０のコピーを受信することができることができる。例えば、同期マネージャ１２５は、サーバコンピュータ１１０からネットワークを介してサーバファイル１２０のコピーを受信することができる（状態１５０）。本発明の実施形態によれば、サーバファイル１２０はサーバコンピュータ１１０に完全に残っていて、同期マネージャはサーバファイル１２０のコピーを受信するだけである。サーバファイル１２０のコピーが同期マネージャ１２５で受信されると、ロックがサーバコンピュータ１１０にあるサーバファイル１２０に配されてもよいし配されなくてもよい。本発明の実施形態によれば、サーバコンピュータ１１０にあるサーバファイル１２０のロックは、任意であってもよい。ロックをするかしないかは、ユーザのシナリオ及び特徴（例えば、マルチユーザ編集は望ましいかどうか）によって決まってもよい。
【００１４】
ステージ２２０において同期マネージャ１２５がサーバコンピュータ１１０からサーバファイル１２０のコピーを受信した後に、方法２００はステージ２２５へ進み、ステージ２２５において同期マネージャ１２５は、ダウンロードファイル１３０、基本ファイル１３５、及び作業ファイル１４０にサーバファイル１２０のコピーのコンテンツを保存することができる。例えば、同期マネージャ１２５は、クライアントコンピュータ１０５のローカルストア１１７にサーバファイル１２０のコピーをレプリケーションすることができる。言い換えれば、サーバファイル１２０のコピーは、ダウンロードファイル１３０にレプリケーションされ（状態１５５）、基本ファイル１３５にレプリケーションされ（状態１６０）、作業ファイル１４０にもレプリケーションされる（状態１６５）。
【００１５】
同期マネージャ１２５がサーバファイル１２０のコピーのコンテンツをダウンロードファイル１３０、基本ファイル１３５、及び作業ファイル１４０に保存するステージ２２５から、方法２００はステージ２３０へ進み、ステージ２３０において、同期マネージャ１２５は、アプリケーション１１５が作業ファイル１４０を編集したというインジケーションをアプリケーション１１５から受信することができる。例えば、上記のように、アプリケーション１１５は文書処理アプリケーションであってもよい。ユーザの操作するアプリケーション１１５は、サーバコンピュータ１１０から文書（例えば、サーバファイル１２０）を開きたいかもしれない。上記のように、サーバファイル１２０のコピーは、作業ファイル１４０へコピーすることができる。作業ファイル１４０は、ユーザが編集するコピーであってもよいしまたはユーザがアプリケーション１１５にそこで動作するよう指示するコピーであってもよい。例えば、ユーザは文書に変更を加えることができる。これらの変更は、アプリケーション１１５によって作業ファイル１４０に保存される（状態１７０）。作業ファイル１４０に編集情報を保存すると、アプリケーション１１５は、アプリケーション１１５が作業ファイル１４０を編集したというインジケーションを同期マネージャ１２５に送信することができる。更に、アプリケーション１１５を閉じると、アプリケーション１１５は同期マネージャ１２５にインジケーションを送信することができる。
【００１６】
ステージ２３０において一旦同期マネージャ１２５がアプリケーション１１５からインジケーションを受信すると、方法２００はステージ２３５に続き、ステージ２３５において同期マネージャ１２５は、インジケーションに応じて、編集された作業ファイル１４０のコピーをアップロードファイル１４５に保存することができる。例えば、アプリケーション１１５が作業ファイル１４０に変更を行ったというインジケーションを受信すると、またはアプリケーション１１５がクローズされると、同期マネージャ１２５は、編集された作業ファイル１４０のコピーをアップロードファイル１４５に保存することができる（状態１７５）。
【００１７】
ステージ２３５において同期マネージャ１２５が編集された作業ファイル１４０のコピーをアップロードファイル１４５に保存した後に、方法２００はステージ２４０に進み、ステージ２４０において同期マネージャ１２５は、サーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断するためにサーバコンピュータ１１０にクエリを行うことができる。言い換えれば、判断ブロック２４５で、同期マネージャ１２５は、サーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断することができる。例えば、サーバファイル１２０のコピーが同期マネージャ１２５によって受信されたときに、ロックがサーバコンピュータ１１０によってサーバファイル１２０に配されていなかった場合、サーバファイルのコピーがローカルストア１１７にレプリケーションされた後に別のクライアントがサーバファイル１２０に変更を加えたかもしれない。
【００１８】
更に、サーバファイル１２０のコピーが同期マネージャによって受信されたときにサーバコンピュータ１１０によってサーバファイル１２０にロックが配されたがその後ロックが失われた場合、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後に、別のクライアントがサーバファイル１２０に変更を加えたかもしれない。サーバコンピュータ１１０とクライアントコンピュータ１０５との間の接続が失われる場合にロックが失われた可能性がある。接続が失われたことによりロックが失われた場合において、サーバコンピュータ１１０とクライアントコンピュータ１０５との間の接続を回復すると、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後でかつロックが失われた後に、別のクライアントがサーバファイル１２０に変更を加えた可能性がある。
【００１９】
更に、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後に、ユーザはサーバコンピュータ１１０からオフラインでアプリケーション１１５を扱うことができる。オフラインで動作した後にサーバコンピュータ１１０に再接続すると、同期マネージャ１２５は、サーバコンピュータ１１０にクエリを行って、オフラインで動作する前にサーバファイル１２０のコピーがローカルストア１１７にレプリケーションされてから後にサーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断することができる。言い換えれば、クライアントコンピュータ１０５がサーバコンピュータ１１０に再接続するときはいつでも、同期マネージャ１２５はサーバコンピュータにクエリを行って、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後にサーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断することができる。
【００２０】
更に、同期マネージャ１２５は、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされてから後にサーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断するために、以下の場合にサーバコンピュータ１１０にクエリを行うことができる。即ち、ｉ）クエリを行えというユーザコマンドに応じて、ｉｉ）予め定められたスケジュールに基づいて周期的に、または、ｉｉｉ）クライアントコンピュータとサーバコンピュータとの間の帯域幅に基づいて、特定の予め定められたレベルに達しているかまたは予め定められた範囲にある場合に、行うことができる。サーバコンピュータ１１０が変更通知をサポートしている場合、前述の事は「ポーリング」に基づく方法についてであってもよいが、これらの事はプロセスをより効率的にするために用いられてもよい。
【００２１】
サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後にサーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかに関して判断をする際に、同期マネージャ１２５は以下の場合にサーバコンピュータ１１０のサーバファイル１２０が変更されたとみなすことができる。即ち、ｉ）ロックがサーバファイル１２０に必要とされない場合に、ｉｉ）ロックがサーバファイル１２０で失われるときにはいつでも、ｉｉｉ）クライアントコンピュータ１１５とサーバコンピュータ１１０との間の接続が失われるときにはいつでも、または、ｉｖ）クライアントコンピュータ１１５がサーバコンピュータ１１０に接続されるかまたは再接続されるときにはいつでも、変更されたとみなすことができる。更に、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後にサーバコンピュータ１１０のサーバファイル１２０が変更されているかどうかを判断する際に、基本ファイル１３５は、いつローカルストア１１７に保存されたかに関してタイムスタンプを有することができる。更に、サーバコンピュータ１１０のサーバファイル１２０は、最終の変更時間に関してタイムスタンプを有することができる。最終の変更時間に関してサーバコンピュータ１１０のタイムスタンプのサーバファイル１２０に基本ファイル１３５のタイムスタンプポストが日付を付けると同期マネージャ１２５が判断する場合、サーバコンピュータ１１０のサーバファイル１２０はサーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後に変更されていないと、同期マネージャ１２５は判断することができる。場合によっては、タイムスタンプは、あまり強固でないかもしれない（例えば、時間はサーバで調整することができる。）。タイムスタンプに加えて、ＥＴＡＧなどのファイルのバージョン／改訂ＩＤが用いられてもよい。
【００２２】
同期マネージャ１２５がサーバコンピュータ１１０のサーバファイル１２０が変更されていると判断した場合、方法２００は判断ブロック２４５からステージ２５０へ進み、ステージ２５０において同期マネージャ１２５は、アップロードファイル１４５、基本ファイル１３５、及びサーバコンピュータ１１０のサーバファイル１２０についての３方向マージを行うことができる。例えば、基本ファイル１３５は、共通のリファレンスポイントを示すことができ、該リファレンスポイントから、編集された作業ファイル１４０とサーバ１１０の変更されたサーバファイル１２０とが分岐した可能性がある。ステージ２３５に関して上記のように、アップロードファイル１４５は、作業ファイル１４０のコピーを含むことができる。従って、３方向マージを実行することによって、サーバファイル１２０のコピーがローカルストア１１７にレプリケーションされた後に、アプリケーション１１５のユーザが作業ファイル１４０に行った編集及びサーバファイル１２０に対して別のユーザが行ったあらゆる変更が示される。従って、３方向マージの出力は、アプリケーション１１５のユーザが行った変更及びサーバコンピュータ１１０のサーバファイル１２０を変更した他のユーザが行った変更を考慮することができる。本発明の実施形態によれば、３方向マージはアプリケーション１１５によって行なわれてもよい。アプリケーション１１５はアプリケーション１１５に特有のファイル形式で３方向マージを行う機能を含むことができるので、アプリケーション１１５は３方向マージを行うことができる。それにもかかわらず、同期マネージャ１２５は、３方向マージを行なうことができる。
【００２３】
ステージ２５０において同期マネージャ１２５が３方向マージを行なった後に、方法２００はステージ２５５に進み、ステージ２５５において同期マネージャ１２５は、サーバコンピュータ１１０のサーバファイル１２０を３方向マージの結果で更新することができる。例えば、３方向マージの出力は、アプリケーション１１５のユーザが行った変更及びサーバコンピュータ１１０のサーバファイル１２０を変更した他のユーザが行った変更を考慮することができるので、サーバコンピュータ１１０のサーバファイル１２０を３方向マージの結果で更新することによって、いかなるユーザによる編集及び変更をも損なうことなしにサーバファイル１２０を最新にすることができる。更に、同期マネージャ１２５が３方向マージを行った後に、同期マネージャ１２５はまた、ダウンロードファイル１３０のコンテンツ及び基本ファイル１３５のコンテンツを３方向マージの結果で置換することもできる。
【００２４】
しかしながら、同期マネージャ１２５が、サーバコンピュータ１１０のサーバファイル１２０が変更されていないと判断した場合、方法２００は判断ブロック２４５からステージ２６０へ進み、ステージ２６０において同期マネージャ１２５は、サーバコンピュータ１１０のサーバファイル１２０をアップロードファイル１４５のコンテンツで更新することができる。例えば、サーバコンピュータ１１０のサーバファイル１２０が変更されていないので、基本ファイル１３５とサーバコンピュータ１１０のサーバファイル１２０とは同一である可能性がある。このため、同期マネージャ１２５は、基本ファイル１３５とアップロードファイル１４５との間でディフ（diff）を行って、ネットワーク接続を介してサーバコンピュータ１１０にディフの結果を送信することができる。アップロードファイル１４５は大きい可能性があるので、接続を介してアップロードファイル１４５の全てを送信するには、接続のかなりの帯域幅を使用する可能性がある。また、基本ファイル１３５とアップロードファイル１４５との間にはかなりの冗長性がある可能性があるので、ディフの結果は非常に小さい可能性がある。ディフの結果が非常に小さい可能性があるので、接続を介してディフの結果を送信することは、アップロードファイル１４５の全てを送信することと比較して接続の帯域幅をほとんど使用しない可能性がある。
【００２５】
更に、本発明の実施形態によれば、同期マネージャ１２５は、サーバコンピュータ１１０のサーバファイル１２０に対して他のユーザが行った更新情報を受信することができる。一旦これらの更新情報が受信されると、同期マネージャは、ユーザが作業ファイル１４０で作業している間に、作業ファイル１４０をこれらの更新情報で更新する。例えば、同期マネージャ１２５は、更新情報が利用可能であるというメッセージをアプリケーション１１５に送信することができる。アプリケーション１１５のユーザからのユーザ入力に応じて、同期マネージャ１２５は、作業ファイル１４０を更新情報で更新することができる。一旦同期マネージャ１２５が、ステージ２６０においてサーバコンピュータ１１０のサーバファイル１２０をアップロードファイル１４５のコンテンツで更新するかまたはステージ２５５においてサーバコンピュータ１１０のサーバファイル１２０を３方向マージの結果で更新すると、方法２００はステージ２６５において終了することができる。
【００２６】
本発明による実施形態は、非同期型レプリケーションを提供するシステムを含むことができる。システムは、記憶装置及び記憶装置に結合された処理装置を含むことができる。処理装置は、アプリケーションから、サーバファイルのコピーの要求を受信して、サーバコンピュータにサーバファイルのコピーを要求する働きをすることができる。更に、処理装置は、サーバコンピュータからサーバファイルのコピーを受信して、サーバファイルのコピーのコンテンツをダウンロードファイル、基本ファイル、及び作業ファイルに保存する働きをすることができる。更に、処理装置は、アプリケーションが作業ファイルを編集したというアプリケーションからのインジケーションを受信し、インジケーションに応じて、編集された作業ファイルのコピーをアップロードファイルに保存する働きをすることができる。更に、処理装置は、サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータにクエリを行う働きをすることができる。サーバコンピュータのサーバファイルが変更されていないと判断されると、処理装置はサーバコンピュータのサーバファイルをアップロードファイルのコンテンツで更新する働きをすることができる。しかしながら、サーバコンピュータのサーバファイルが変更されていると判断されると、処理装置は、ｉ）アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての３方向マージを行い、ｉｉ）サーバコンピュータのサーバファイルを３方向マージの結果で更新し、ｉｉｉ）ダウンロードファイルのコンテンツ及び基本ファイルのコンテンツを３方向マージの結果で置換する、働きをすることができる。
【００２７】
図３は、クライアントコンピュータ１０５を含むシステムのブロック図である。本発明の実施形態によれば、前述の記憶装置及び処理装置は、図３のクライアントコンピュータ１０５などのコンピュータデバイスに実装されてもよい。ハードウェア、ソフトウェア、またはファームウェアのいずれかの適当な組合せも、記憶装置及び処理装置を実装するために用いることができる。例えば、記憶装置及び処理装置は、クライアントコンピュータ１０５に実装されてもよいしまたはクライアントコンピュータ１０５との併用で複数の他のコンピュータデバイス３１８のうちのいずれか（例えば、サーバコンピュータ１１０）に実装されてもよい。前述のシステム、デバイス、及びプロセッサは例であって、他のシステム、他のデバイス、及び他のプロセッサが、本発明の実施形態により、前述の記憶装置及び処理装置を含むことができる。
【００２８】
図３を参照すると、本発明の実施形態によるシステムは、クライアントコンピュータ１０５などのコンピュータを含むことができる。基本的な構成において、クライアントコンピュータ１０５は、少なくとも１つの処理装置３０２及びシステムメモリ３０４を含むことができる。コンピュータデバイスの構成及びタイプに従って、システムメモリ３０４は、揮発性（例えば、ランダムアクセスメモリ（ＲＡＭ））、不揮発性（例えば、リードオンリメモリ（ＲＯＭ））、フラッシュメモリ、またはいずれかの組合せを含むが、これらに限定されない。システムメモリ３０４は、オペレーティングシステム３０５、１つまたは複数のプログラムモジュール３０６を含むことができ、プログラミングデータ３０７を含むことができる。プログラミングデータ３０７は、ダウンロードファイル１３０、基本ファイル１３５、作業ファイル１４０、及びアップロードファイル１４５を含むことができる。例えば、オペレーティングシステム３０５は、クライアントコンピュータ１０５の動作を制御することができる。１つの実施形態において、プログラミングモジュール３０６は、例えばアプリケーション１１５及び同期マネージャ１２５などを含むことができる。更に、本発明の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、または他のあらゆるアプリケーションプログラムとともに実施されてもよく、いずれかの特定のアプリケーションまたはシステムに限定されない。この基本的な構成は、点線３０８内のコンポーネントで図３に示されている。
【００２９】
クライアントコンピュータ１０５は、追加の特徴または追加の機能を有することができる。例えば、クライアントコンピュータ１０５も、例えば、磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶装置（着脱自在及び／または固定式）を含むことができる。かかる追加の記憶装置は、着脱自在の記憶装置３０９及び固定式の記憶装置３１０で図３に示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するためのあらゆる方法または技術で実施される揮発性及び不揮発性、着脱自在及び固定式の媒体を含むことができる。システムメモリ３０４、着脱自在の記憶装置３０９、及び固定式の記憶装置３１０は、全てのコンピュータ記憶媒体の例（即ち、記憶装置）である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または情報を記憶しかつクライアントコンピュータ１０５がアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるものではない。いずれかのかかるコンピュータ記憶媒体は、デバイス３００の一部であってもよい。クライアントコンピュータ１０５はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス（または複数の入力デバイス）３１２を含むことができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス（または複数の出力デバイス）３１４も含むことができる。前述のデバイスは例であって、他のものが用いられてもよい。
【００３０】
クライアントコンピュータ１０５はまた、通信接続部３１６を含むことができ、通信接続部３１６は、例えばイントラネットまたはインターネットなどの分散コンピューティング環境においてネットワークを介してなど、デバイス３００が他のコンピュータデバイス３１８（例えば、サーバコンピュータ１１０）と通信できるようにする。通信接続部３１６は、通信媒体の１つの例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送メカニズムなどの変調されたデータ信号内の他のデータによって具体化され、あらゆる情報送達媒体を含むことができる。用語「変調されたデータ信号」は、信号の情報をコード化することに関する方法において設定されたかまたは変更された１つまたは複数の特徴を有する信号を説明することができる。一例であってこの例に限定されないが、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体及び、音響、無線周波数（ＲＦ）、赤外線、及び他の無線媒体などの無線媒体を含むことができる。本明細書において用いられる用語「コンピュータ可読媒体」は、記憶媒体及び通信媒体の両方を含むことができる。
【００３１】
上記のように、オペレーティングシステム３０５を含む多くのプログラムモジュール及びデータファイルを、システムメモリ３０４に保存することができる。処理装置３０２で実行している間、プログラムモジュール３０６（例えば、同期マネージャ１２５またはアプリケーション１１５）は、例えば、上記のように方法２００の１つまたは複数のステージを含むプロセスを行なうことができる。上述のプロセスは例であって、処理装置３０２は他のプロセスを行なうことができる。本発明の実施形態に従って用いることができる他のプログラミングモジュールは、電子メール及び連絡先用アプリケーション、文書処理アプリケーション、表計算アプリケーション、データベースアプリケーション、スライドを使ったプレゼンテーション用アプリケーション、または描画アプリケーションプログラムもしくはコンピュータを使ったアプリケーションプログラムなどを含むことができる。
【００３２】
通常、本発明の実施形態によれば、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、及び特定のタスクを実行することができるかまたは特定の抽象データ型を実施することができる他の種類の構造を含むことができる。更に、本発明の実施形態は、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施することができる。本発明の実施形態はまた、通信ネットワークを介して接続されたリモートの処理装置がタスクを実行する分散コンピューティング環境において実施することができる。分散コンピューティング環境において、プログラムモジュールはローカルの記憶装置及びリモートの記憶装置の両方にあってもよい。
【００３３】
更に、本発明の実施形態は、個別の電子的要素、論理ゲートを含むパッケージ化された電子チップもしくは集積された電子チップ、マイクロプロセッサを利用する回路を含む電気回路において、または電子的要素またはマイクロプロセッサを含む単一のチップにおいて実施することができる。本発明の実施形態はまた、例えばＡＮＤ、ＯＲ、及びＮＯＴなどの論理演算を実行することができる他の技術を用いて実施することができる。他の技術には、機械技術、光技術、流体技術、量子技術を含むがこれらに限定されない、更に、本発明の実施形態は、汎用コンピュータ内でまたは他のあらゆる回路もしくはシステムにおいて実施することができる。
【００３４】
例えば、本発明の実施形態は、コンピュータプロセス（方法）、コンピュータシステムとして、またはコンピュータプログラム製品もしくはコンピュータ可読媒体などの製品として実施することができる。コンピュータプログラム製品は、コンピュータシステムが読み出すことができかつコンピュータプロセスを実行するための命令からなるコンピュータプログラムをコード化するコンピュータ記憶媒体であってもよい。コンピュータプログラム製品はまた、コンピュータシステムが読み出すことができかつコンピュータプロセスを実行するための命令からなるコンピュータプログラムをコード化する搬送波上の伝播された信号であってもよい。従って、本発明は、ハードウェアにおいてかつ／またはソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード、その他を含む）において具体化されてもよい。言い換えれば、本発明の実施形態は、命令実行システムが使用するためのまたは命令実行システムと関連して使用するための媒体において具体化されるコンピュータ使用可能プログラムコードまたはコンピュータ可読プログラムコードを有するコンピュータ使用可能記憶媒体上またはコンピュータ可読記憶媒体上のコンピュータプログラム製品の形をとることができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置もしくは命令実行デバイスが使用するためのまたは命令実行システム、命令実行装置もしくは命令実行デバイスと関連して使用するためのプログラムを含むことができるあらゆる媒体、該プログラムを格納することができるあらゆる媒体、該プログラムを伝えることができるあらゆる媒体、該プログラムを伝播することができるあらゆる媒体、または該プログラムを搬送することができるあらゆる媒体であってもよい。
【００３５】
コンピュータ使用可能媒体またはコンピュータ可読媒体は、例えば、電子、磁気、光学、電磁、赤外線、または半導体の、システム、装置、デバイス、または伝播媒体であってもよいがこれらに限定されない。より多くの特定のコンピュータ可読媒体の例（限定的なリスト）として、コンピュータ可読媒体には、以下を含むことができる。即ち、１つまたは複数の配線を有する電気接続、ポータブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、及びポータブルコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）である。プログラムを、例えば紙または他の媒体の光学的なスキャニングを介して電子的に補足し、コンパイルし、解釈し、または必要に応じて適当な方法で処理し、コンピュータメモリに記憶することができるので、コンピュータ使用可能媒体またはコンピュータ可読媒体は、プログラムを印刷する紙または別の適当な媒体であってもよいということに注意が必要である。
【００３６】
本発明の実施形態は、例えば、本発明の実施形態による方法、システム、コンピュータプログラム製品のブロック図及び／または動作の説明図を参照して上記に説明されている。ブロックにおいて言及される機能／動作は、いずれかのフローチャートにおいて示された順番と異なって生じてもよい。例えば、連続して示された２つのブロックは、実際にはほぼ並行して実行されてもよいしまたは、該ブロックは、関係する機能／動作によって逆の順番で実行される場合があってもよい。
【００３７】
本発明の特定の実施形態が説明されてきたが、他の実施形態が存在する可能性がある。更に、本発明の実施形態は、メモリ及び他の記憶媒体に記憶されたデータに付随しているように説明されてきたが、データはまた、例えば、ハードディスク、フロッピディスク、もしくはＣＤ−ＲＯＭのような２次的な記憶装置、インターネットからの搬送波、または他のＲＡＭもしくはＲＯＭの形式などの、他の種類のコンピュータ可読媒体に記憶されるかまたはそこから読み出すことができる。更に、開示された方法のステージは、本発明から逸脱することなく、ステージを並べ替えること、及び／またはステージを挿入することもしくは削除することを含むあらゆる方法で変更することができる。
【００３８】
本明細書に含まれるコードの著作権を含む全ての権利は、出願人に帰属しておりかつ出願人の資産である。出願人は、本明細書に含まれるコードの全ての権利を保持しかつ留保し、与えられた特許の複製に関係するだけで他のいかなる目的のためでもない構成要素を複製する許可を与える。明細書は例を含んでいるが、本発明の範囲は以下の特許請求の範囲で示される。更に、明細書は構造上の特徴及び／または方法の動作に固有な言語で説明されているが、特許請求の範囲は、上記の特徴または動作に限定されない。むしろ、上記の特定の特徴及び動作は、本発明の実施形態のための例として説明されている。
【図１】
2011508342.tif 000003
【図２】
2011508342.tif 000004
【図３】
2011508342.tif 000005
【国際調査報告】
2011508342.tif 000006
2011508342.tif 000007