JP4927395B2 - 同期通信モードと非同期通信モードの間で遷移するための方法およびシステム - Google Patents

同期通信モードと非同期通信モードの間で遷移するための方法およびシステム Download PDF

Info

Publication number
JP4927395B2
JP4927395B2 JP2005355259A JP2005355259A JP4927395B2 JP 4927395 B2 JP4927395 B2 JP 4927395B2 JP 2005355259 A JP2005355259 A JP 2005355259A JP 2005355259 A JP2005355259 A JP 2005355259A JP 4927395 B2 JP4927395 B2 JP 4927395B2
Authority
JP
Japan
Prior art keywords
shared object
manifest file
peer
location
shared
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2005355259A
Other languages
English (en)
Other versions
JP2006195966A5 (ja
JP2006195966A (ja
Inventor
ピー.クラーク サイモン
ラスミュッセン デイヴィッド
コフマン イゴール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006195966A publication Critical patent/JP2006195966A/ja
Publication of JP2006195966A5 publication Critical patent/JP2006195966A5/ja
Application granted granted Critical
Publication of JP4927395B2 publication Critical patent/JP4927395B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Description

本発明は、同期通信モードと非同期通信モードの間で遷移するための方法およびシステムに関する。
ファイル共有アプリケーションは、数名の異なるユーザが、情報を集団で共有することを可能にする。いくつかのクライアントが、サーバ上で共有ファイルに非同期でアクセスすることができる。クライアントは、別のクライアントとピアツーピアネットワークを確立して、両方のクライアントが、共有ファイルに同期で、直接に(すなわち、リアルタイムで)アクセスすることを可能にすることができる。クライアントは、接続が失われた際、ピアツーピアネットワーク上、またはサーバ上で共有ファイルにアクセスしていたことが可能である。サーバへの接続は、サーバがクラッシュした場合、またはクライアントがサーバから切断した場合に失われる可能性がある。ピアツーピアネットワークへの接続は、2つのクライアントが、もはや同じ近辺に存在しない場合、またはクライアントのどちらかがピアツーピアネットワークから切断した場合に失われる可能性がある。いずれのケースでも、クライアントは、共有ファイルへのアクセスを取り戻すのに、ピアツーピアネットワークまたはサーバに手動で再接続しなければならない。
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、同期通信モードと非同期通信モードの間で遷移するための方法およびシステムを提供することにある。
本発明は、同期通信モードと非同期通信モードの間で遷移するための方法およびシステムを対象とする。多くの異なるユーザが、いくつかの異なるトランスポートを介して、同一の共有オブジェクトに同時にアクセスし、変更を行い、更新を行うことができる。オブジェクトは、ファイルとして共有されることが可能な任意のエンティティであることが可能である。クライアントは、物理的サーバを介して共有オブジェクトにアクセスすることにより、非同期で通信することができる。サーバの限界により、共有オブジェクト同期が、ユーザによって変更が実施された時点から遅延させられることが生じる可能性がある。また、クライアントは、ピアツーピアネットワークを介して共有オブジェクトにアクセスすることにより、同期で通信することもできる。ピアツーピアネットワークは、共有オブジェクトに対する変更が、サーバを介してではなく、クライアント間で直接に転送されることを可能にする。
各共有オブジェクトは、マニフェストファイルに関連する。マニフェストファイルは、システム内で共有オブジェクトの他のバージョンおよびインスタンスが格納されているロケーションを明らかにする。クライアントは、共有オブジェクトにアクセスし、その対応する共有オブジェクトの中の一意ロケーション識別子によって明らかにされるロケーションから、関連するマニフェストファイルを取得する。共有オブジェクトおよびマニフェストファイルは、通信モードが変わったことにユーザが気付かないように、クライアントが、ローカルアクセス、同期通信、および非同期通信の間でシームレスに遷移することを可能にする。ユーザは、ロケーションを変えることができ、任意の利用可能なデータ共有トランスポートが、自動的に明らかにされる。このため、ユーザは、異なる機構を介して、共有オブジェクトにアクセスして、他の許可されたユーザらと共同作業を行うことができる。
クライアントは、サーバ上で共有オブジェクトにアクセスすることができる。クライアントは、その共有オブジェクトに同様にアクセスしている他のクライアント群に自動的に接続される。その共有オブジェクトにアクセスすることが許可されている他のクライアント群も、ピアグループに含まれる。クライアントは、共有オブジェクトに関連するマニフェストファイルを取得する。マニフェストファイルは、共有オブジェクトの異なるバージョン、および異なるインスタンスのロケーションを明らかにする。このため、クライアントは、ピアグループ内の任意のクライアントが、マニフェストファイルの中で明らかにされる共有オブジェクトのあるバージョン、またはあるインスタンスにアクセスする際、ピアグループ内の他の任意のクライアントに対してピアツーピアネットワークを確立することができる。次に、クライアントは、サーバから切断して、ピアツーピアネットワーク上で共有ファイルにアクセスすることを続けることができる。
クライアントは、ピアツーピアネットワークから共有オブジェクトにアクセスすることができる。クライアントは、その共有オブジェクトに関連するマニフェストファイルを取得する。マニフェストファイルは、その共有オブジェクトが存在する、他のロケーションを明らかにする。クライアントは、サーバ上で共有オブジェクトにアクセスして、いずれの許可されたクライアントが、そのサーバに同様に接続されているかを判定することができる。接続されたクライアント群には、ピアツーピアネットワークが利用できない場合、サーバを介してアクセスすることができる。その場合、クライアントは、ピアツーピアネットワークから切断し、サーバ上で共有オブジェクトにアクセスすることを続けることができる。
本発明の一態様では、共有オブジェクトにアクセスが行われる。その共有オブジェクトに関連するマニフェストファイルが取得される。マニフェストファイルは、共有オブジェクトの別のインスタンスが格納されているロケーションを明らかにする。マニフェストファイルの中で明らかにされる共有オブジェクトのインスタンスに同様にアクセスしている少なくとも1つのクライアントに対して、直接同期通信が確立される。サーバ上で共有オブジェクトに同様にアクセスしている少なくとも1つのクライアントに対して、非同期通信が確立される。
本発明によれば、同期通信モードと非同期通信モードの間で遷移するための方法およびシステムを提供することができる。
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
本発明は、同期通信モードと非同期通信モードの間で遷移するための方法およびシステムを対象とする。多くの異なるユーザが、いくつかの異なるトランスポートを介して、同一の共有オブジェクトに同時にアクセスし、変更を行い、更新を行うことができる。クライアントは、物理的サーバを介して共有オブジェクトにアクセスすることにより、非同期で通信することができる。また、クライアントは、ピアツーピアネットワークを介して共有オブジェクトにアクセスすることにより、同期で通信することもできる。
各共有オブジェクトは、マニフェストファイルに関連する。マニフェストファイルは、システム内で共有オブジェクトの他のバージョンおよびインスタンスが格納されているロケーションを明らかにする。クライアントは、共有オブジェクトにアクセスし、その対応する共有オブジェクトの中の一意ロケーション識別子によって明らかにされるロケーションから、関連するマニフェストファイルを取得する。共有オブジェクトおよびマニフェストファイルは、通信モードが変わったことにユーザが気付かないように、クライアントが、ローカルアクセス、同期通信、および非同期通信の間でシームレスに遷移することを可能にする。ユーザは、ロケーションを変えることができ、任意の利用可能なデータ共有トランスポートが、自動的に明らかにされる。このため、ユーザは、異なる機構を介して、共有オブジェクトにアクセスして、他の許可されたユーザらと共同作業を行うことができる。
例示的な動作環境
図1を参照すると、本発明を実施するための1つの典型的なシステムが、コンピューティングデバイス100のようなコンピューティングデバイスを含む。コンピューティングデバイス100は、ネットワークベースの共同作業システムにおいてデータと対話する、クライアント、サーバ、移動デバイス、または他の任意のコンピューティングデバイスとして構成することができる。非常に基本的な構成では、コンピューティングデバイス100は、通常、少なくとも1つのプロセッサ102、およびシステムメモリ104を含む。コンピューティングデバイスの厳密な構成およびタイプに応じて、システムメモリ104は、揮発性(RAMのような)、不揮発性(ROM、フラッシュメモリなどのような)、またはこの2つの何らかの組み合わせであることが可能である。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のアプリケーションプログラム106を含み、プログラムデータ107を含むことが可能である。以下に詳細に説明する、通信モード遷移モジュール108が、アプリケーション群106の中で実施される。
コンピューティングデバイス100は、追加の特徴または機能も有することが可能である。例えば、コンピューティングデバイス100は、例えば、磁気ディスク、光ディスク、またはテープのような、追加のデータ記憶装置(リムーバブル装置および/またはノンリムーバブル装置)も含むことが可能である。そのような追加のストレージを図1に、リムーバブルストレージ109およびノンリムーバブルストレージ110で示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された、揮発性媒体および不揮発性媒体、リムーバブル媒体、およびノンリムーバブル媒体が含まれることが可能である。システムメモリ104、リムーバブルストレージ109、およびノンリムーバブルストレージ110はすべて、コンピュータ記憶媒体の実施例である。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピューティングデバイス100がアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。あらゆるそのようなコンピュータ記憶媒体が、デバイス100の一部であることが可能である。また、コンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス112も有することが可能である。また、ディスプレイ、スピーカ、プリンタなどの出力デバイス114も含まれることが可能である。
また、コンピューティングデバイス100は、デバイスが、ネットワークなどを介して、他のコンピューティングデバイス群118と通信することを可能にする通信接続116も含む。ネットワークには、ローカルエリアネットワークおよびワイドエリアネットワーク、ならびに、イントラネットおよびエクストラネットを含むが、以上には限定されない、他の大規模ネットワークが含まれる。通信接続116は、通信媒体の一実施例である。通信媒体は、通常、搬送波などの変調されたデータ信号内の、または他のトランスポート機構におけるコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって実現され、任意の情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内に情報を符号化するような形で、特性の1つまたは複数が設定、または変更されている信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、RF媒体、赤外線媒体、およびその他の無線媒体などの、無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語には、記憶媒体と通信媒体がともに含まれる。
同期通信モードと非同期通信モードの間で遷移すること
図2は、共有オブジェクトに対する複数ユーザ変更を同期させるためのシステムのブロック図を示す。オブジェクトは、ファイルなどの、共有されることが可能な任意のエンティティであることが可能である。システムは、クライアント200、210、220、230、Exchangeサーバ240のようなファイル格納機能を有する電子メールサーバ、Webサーバ250、ピアツーピアネットワーク260、および電子メール添付ファイル270を含む。クライアント200、210は、Exchangeサーバ240に結合される。クライアント210、220は、Webサーバ250に結合される。また、クライアント210、220は、ピアツーピアネットワーク260を介してともに結合されもする。電子メール添付ファイル270は、Webサーバ250によってクライアント230への転送、およびクライアント230からの転送が行われるように構成される。クライアント200、210はともに、同一のユーザ(ユーザ1)に関連する。例えば、クライアント200は、自宅においてユーザ1にアクセスされ、クライアント210は、職場においてユーザ1にアクセスされる。クライアント220、230は、異なるユーザ(それぞれユーザ2およびユーザ3)に関連する。クライアント200、210、220、230はそれぞれ、共有オブジェクトをローカルで格納するためのキャッシュ202、212、222、232を含む。ピアツーピアネットワーク260は、クライアント210、220の間で共有オブジェクトを転送するための仮想サーバ262を含む。変更ファイル242および共有オブジェクト252、264、272が、Exchangeサーバ240、Webサーバ250、仮想サーバ262、および電子メール添付ファイル270の中にそれぞれ格納される。変更ファイル242および共有オブジェクト252、264、272は、ピアグループ識別子に関連することが可能である。ピアグループ識別子は、特定の共有オブジェクトにアクセスし、変更を行うことが許可されているユーザら(すなわち、ピアグループ)を識別する。一実施形態では、ピアグループ識別子は、任意のWebクライアントに解決することができるピアグループに対するユニフォームリソースロケータ(URL)である。共有オブジェクト252、264は、マニフェストファイル254、266にそれぞれ関連する。
多くの異なるユーザが、いくつかの異なるトランスポートを介して、同一の共有オブジェクトに同時にアクセスし、編集を行い、更新を行うことができる。例えば、クライアント210におけるユーザ1、およびクライアント220におけるユーザ2が、Webサーバ250から共有オブジェクト252にアクセスすることができる。共有オブジェクトは、対応するキャッシュ212、222の中にローカルで格納される。ユーザ1とユーザ2はともに、共有オブジェクト252を変更することができる。変更は、サーバ250上で共有オブジェクト252と同期されて、ユーザ1が、ユーザ2によって行われた変更を見ることができ、ユーザ2が、ユーザ1によって行われた変更を見ることができるようになる。
別の例では、ユーザ3が、電子メール添付ファイル270を介して、共有オブジェクト272のアクセスをユーザ2と共有することができる。ユーザ2は、ローカルで格納された共有オブジェクトを変更し、共有オブジェクト全体、または共有オブジェクトに対する変更だけが添付された電子メールメッセージを、ユーザ3に送信することができる。ユーザ2によって行われた変更は、Webサーバ250上で共有オブジェクト252と同期される。電子メールが、クライアント230において受信されると、ユーザ2によって行われた変更は、キャッシュ232内に格納されたローカル共有オブジェクトと自動的に同期される。次に、ユーザ3が、共有オブジェクト272にさらなる変更を行い、共有オブジェクト全体、または共有オブジェクトに対する変更だけを電子メール添付ファイル270として含まれて、ユーザ2に返信することができる。ユーザ3によって行われた変更は、Webサーバ250上で共有オブジェクト252と同期される。また、クライアント220における共有オブジェクトも、ユーザ3によって行われた変更を含むように更新される。
別の例では、ユーザ1が、Exchangeサーバ240を介して、自宅においてクライアント200上で、または職場においてクライアント210上で、共有オブジェクトにアクセスすることができる。Exchangeサーバは、しばしば、外部サーバへのアクセスが許されない、または利用可能でない場合に利用される。変更ファイル242が、共有オブジェクトへの変更を含む。変更ファイル242は、ユニバーサルシリアルバス(USB)ドライブ、電子メールアプリケーション、あるいは変更が転送されてやりとりされることを可能にする他の何らかの機構を介して、クライアント200、210の間で転送されることが可能である。変更は、キャッシュ202、212の中に格納されたローカル共有オブジェクトが更新されることが可能なように、クライアント200、210に適用される。
Exchangeサーバ240は、扱うことができるファイルのサイズに制限(例えば、最大2メガバイト)を有することが可能である。ユーザ1が、共有オブジェクトに対する任意の変更を含む変更ファイル242を、クライアント200からExchangeサーバ240にアップロードすることができる。変更ファイル242は、Exchangeサーバ240のサイズ限度を超える場合、クライアント200からクライアント210にサブセクションで転送することができる。ファイルプロトコルは、サブセクションを転送するための要求/フィル(fill)プロセスを可能にする。一実施形態では、Exchangeサーバ240は、電子メールアプリケーションに関連する。別のユーザ(ユーザ2)によって行われた変更が、Webサーバ250またはピアツーピアネットワーク260を介して、クライアント220からクライアント210に転送され、次に、ユーザ1に発行された電子メールアカウントを介して、クライアント200に転送されることが可能である。別の実施形態では、クライアント200が、最新の変更ファイルに関して、Exchangeサーバに定期的にポーリングを行う。
別の例では、クライアント210、220からWebサーバ250への接続が失われた場合、またはユーザ1とユーザ2が、リアルタイムで直接に同期で通信することを選好する場合、クライアント210、220間でピアツーピアネットワーク260が確立されることが可能である。ユーザ1とユーザ2は、Webサーバ250を介するオブジェクト共有により、クライアント210において変更が行われた時点と、クライアント220において変更が利用可能な時点の間に遅れがもたらされる可能性があるため、ピアツーピアネットワーク260を介して通信することを選好する可能性がある。遅れは、大量のサーバトラフィックの結果であることが可能である。ピアツーピアネットワーク260は、共有オブジェクトに対する変更が、Webサーバ250を介してではなく、クライアント210、220間で直接に転送されることを可能にする。一実施形態では、ピアツーピアネットワーク260は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)直接ネットワークである。TCP/IP直接ネットワークは、変更の格納および取得が迅速に行われることを可能にする。
クライアント210、220はそれぞれ、Webサーバ250接続が中断された際、キャッシュ212、222の中に共有オブジェクト252のコピーをローカルで格納していることが可能である。共有オブジェクト252に関連するピアグループ識別子は、ユーザ1とユーザ2がともに、共有オブジェクトに同時にアクセスしていることを示す。ユーザらは、確立されたピアツーピアネットワークに両者がアクセスした(例えば、両方のユーザが、同一の航空機上で、ラップトップコンピュータで作業している)際に、互いに気付く。ピアツーピアネットワーク260は、ユーザ1とユーザ2が、仮想サーバ262上で共有オブジェクト264に対する変更に同時にアクセスし、さらなる変更を実施することを可能にする。変更は、クライアント210、220上で即時に複製されて、ユーザ1とユーザ2が、共有オブジェクト264に対して積極的に共同作業を行うことができるようになる。ピアツーピアネットワーク260は、ユーザ1とユーザ2が、もはや同一の近辺にいない(例えば、各ユーザが、それぞれのオフィスに戻った)場合、またはユーザ1とユーザ2が、もはやリアルタイムで通信することを所望しない場合、無効にされてもよい。その場合、共有オブジェクト252は、Webサーバ250からアクセスされることが可能である。ピアツーピアネットワーク260上で共有オブジェクト変更にアクセスすることと、Webサーバ250上で共有オブジェクト変更にアクセスすることの間の遷移は、自動的であり、シームレスである。
クライアント210、220は、Webサーバ250とピアツーピアネットワーク260の両方から、最新の変更を受信することができる。共有オブジェクトに行われた各変更は、グローバル一意識別子(GUID)およびタイムスタンプに関連する。タイムスタンプは、変更が行われた時刻を明らかにする。クライアント210は、Webサーバ250上で共有オブジェクト252を変更することができる。クライアント220は、キャッシュされたオブジェクトに関連するGUIDおよびタイムスタンプと、Webサーバ250上の共有オブジェクト252に関連するGUIDおよびタイムスタンプを比較することにより、キャッシュ222内の共有オブジェクトのローカルバージョンが最新であるかどうかを判定する。最新バージョンがローカルで格納されていない場合、キャッシュされたオブジェクトにおいて実施されていない最新の変更が、Webサーバ250からクライアント220にロードされ、ローカルファイルと同期される。このため、共有オブジェクトのローカルバージョンが更新するたびに、共有オブジェクト全体がクライアント220にロードされる必要はない。
一実施形態では、クライアント220は、変更に関連するGUIDおよびタイムスタンプから、同一の修正が、ピアツーピアネットワーク260から入手できると判定することが可能である。しかし、アクションは全くもたらされない。というのは、クライアント220は、その修正を既に実施しているからである。別の実施形態では、クライアント220は、変更に関連するGUIDおよびタイムスタンプから、同一の修正は、ピアツーピアネットワーク260から入手できないと判定することが可能である。このため、クライアント220は、変更をピアツーピアネットワーク260に送信して、ピアツーピアネットワーク260に接続されたその他のユーザらが、共有オブジェクトの最新バージョンと同期することができるようにする。
クライアント220が、ピアツーピアネットワーク260から別の変更を受信することが可能である。キャッシュ222内の共有オブジェクトが更新される。クライアント220は、変更に関連するGUIDおよびタイムスタンプを使用して、共有オブジェクトの最新の状態も、Webサーバ250上で入手できるかどうかを判定する。Webサーバ250上の共有オブジェクト252が、共有ドキュメントの最新の状態と同期されていない場合、クライアント220は、最新の変更をWebサーバ250に送信して、共有オブジェクト252を更新することができるようにする。
クライアントが、物理的サーバを介してシステムに接続されている間に、共有オブジェクトを変更する場合、非同期通信が行われる可能性がある。サーバの限界により、共有オブジェクト同期が、ユーザによって変更が行われた時点から遅延させられる可能性がある。一実施形態では、クライアントは、システムに接続されていない間に、共有オブジェクトのローカルでキャッシュされたバージョンを変更している可能性がある。クライアントによって行われたあらゆる変更が、クライアントが、サーバを介してシステムに再接続した際に、共有オブジェクトと同期されることが可能である。クライアントは、通信モードが変わったことにユーザが気付かないように、ローカルアクセス、同期通信、および非同期通信の間でシームレスに遷移することができる。ユーザは、ロケーションを変えることができ、任意の利用可能なデータ共有トランスポート(例えば、ピアツーピアネットワーク、サーバ)が、自動的に明らかにされる。このため、ユーザは、異なる機構を介して、共有オブジェクトにアクセスし、他の許可されたユーザと共同作業を行うことができる。
各共有オブジェクトは、マニフェストファイルに関連する。マニフェストファイルは、システム内で共有オブジェクトの他のバージョン、および他のインスタンスが格納されているロケーションを明らかにする。一実施形態では、マニフェストファイルは、拡張マークアップ言語(XML)ファイルである。別の実施形態では、マニフェストファイルは、複数の共有オブジェクトを明らかにする。別の実施形態では、マニフェストファイルは、クライアント間で共有されることが可能な任意のオブジェクトに関連することが可能である。例えば、マニフェストファイルは、共有オブジェクト全体、または共有オブジェクトの任意の部分(例えば、コンテンツコンテナ、セクション、ページ、アウトラインなど)に関連することが可能である。
マニフェストファイルは、システム内のどこにでも格納されることが可能である。図に示すとおり、マニフェストファイル254は、共有オブジェクト252に関連する。共有オブジェクト252とマニフェストファイル254はともに、Webサーバ250上に格納される。別の実施形態では、マニフェストファイルは、共有オブジェクトの中に格納される。さらに別の実施形態では、マニフェストファイルは、アクティブディレクトリの中に格納される。さらに別の実施形態では、マニフェストファイルは、システム内の複数のロケーションに格納される。マニフェストファイルは、一意ロケーション識別子によって明らかされるロケーションに格納される。一意ロケーション識別子により、ファイルサーバ、サーバの共有領域、Webサーバ、またはピアグループが明らかにされることが可能である。
共有オブジェクトは、キャッシュからローカルで、サーバを介して、またはピアツーピアネットワークを介してアクセスされることが可能である。クライアントは、対応する共有オブジェクトの中の一意ロケーション識別子によって明らかにされたロケーションから、マニフェストファイルを取得する。一実施形態では、クライアントは、マニフェストファイルを将来の参照のためにローカルで格納することができる。マニフェストファイルは、システム内の共有オブジェクトの他のバージョン、および他のインスタンスのロケーション(例えば、サブストアまたはピアグループの中)を示す。共有オブジェクトの別のバージョン/インスタンスが、ピアグループの中に格納されている場合、マニフェストファイルは、対応するピアグループ識別子を含むことが可能である。
一実施形態では、クライアント220が、Webサーバ250上で共有オブジェクト252にアクセスする。クライアント220は、共有オブジェクト252に同様にアクセスしている他のクライアント群(例えば、ピアグループ)に自動的に接続される。クライアント220は、共有オブジェクト252に関連するマニフェストファイル254を取得する。マニフェストファイル254は、共有オブジェクト252の異なるバージョン、および異なるインスタンスのロケーションを明らかにする。このため、クライアント220は、ピアグループ内の任意のクライアントが、マニフェストファイル254によって明らかにされる共有オブジェクト252のバージョン/インスタンスにアクセスする際、ピアグループ内の他の任意のクライアントに対してピアツーピアネットワークを確立することができる。次に、クライアント220は、Webサーバ250から切断して、ピアツーピアネットワーク上で共有オブジェクト252にアクセスすることを続けることができる。
別の実施形態では、クライアント210が、ピアツーピアネットワーク260から共有オブジェクト264にアクセスすることができる。クライアント210は、共有オブジェクト264に関連するマニフェストファイル266を取得する。クライアント210は、サーバに接続し、いずれのクライアントが、そのサーバに同様に接続されているかを判定することができる。接続されたクライアント群には、ピアツーピアネットワーク260が利用できない場合、サーバを介してアクセスすることができる。共有オブジェクト264(または252)、および関連するマニフェストファイル266(または254)により、クライアント210(またはクライアント220)が、非同期通信モードと同期通信モードの間で自動的に、シームレスに遷移することが可能になる。
ユーザらは、別のユーザが共有オブジェクトへのアクセスを有する場合に、その共有オブジェクトにアクセスし、変更を行うことをブロックされない。あらゆる許可されたユーザが、共有オブジェクトを同時に変更することができる。一実施形態では、変更トランザクションの整合性を確実にするように、ブロックの短いインスタンスが生じる可能性がある。例えば、ユーザが、サーバから切断されている間に、共有ドキュメントを大幅に変更する可能性がある。ユーザが、サーバに再接続すると、他のクライアント群は、ユーザの変更のすべてが共有オブジェクトにおいて実施されるまで、共有オブジェクトにアクセスすることを短い間、ブロックされることが可能である。
図3は、共有オブジェクトの相異なる部分を示すリンクされたノード群の階層グラフを示す。一実施形態では、共有オブジェクトは、数名のユーザの間で共有されるノートブックである。ノートブックノード300は、共有オブジェクト全体を表す。フォルダノード310が、ノートブックノード300内に含まれる。セクションノード320が、フォルダノード310内に含まれる。ページノード330、335が、セクションノード310内に含まれる。テーブルノード340、インクノード342、アウトラインノード344、およびイメージノード346が、ページノード330内に含まれる。アウトライン要素ノード350が、アウトラインノード344内に含まれる。テキストノード360が、アウトライン要素ノード350内に含まれる。相異なるノードが、コンテンツコンテナの中に一緒にグループ化されることが可能である。例えば、アウトラインノード344、アウトライン要素ノード350、およびテキストノード360が、コンテンツコンテナR0として一緒にグループ化されることが可能である。コンテンツコンテナR0には、GUID(例えば、GUID−0)が割り当てられる。GUIDは、コンテンツコンテナR0を一意に識別する。
コンテンツコンテナは、共有オブジェクトコンテンツ(例えば、語、文、段落、ページ、テーブル、ピクチャ、手書き入力(handwriting)、ユニフォームリソースロケータ、または共有オブジェクトの中に含まれるデータの任意の組み合わせ)を含む。コンテンツコンテナは、一緒にグループ化されたオブジェクトコンテンツのディメンション(dimension)を提供する。例えば、コンテンツコンテナは、行、段落、ページ、または特定のページ要素(例えば、特定のページ上のテーブルだけ)に対応することが可能である。
共有オブジェクトは、グラフの初期バージョンを格納する。次に、個々のコンテンツコンテナに対して、特定の操作が実行されることが可能である。例えば、ユーザが、コンテンツコンテナのデータを変更することが可能である。共有オブジェクトに対する変更は、コンテンツコンテナの状態として識別されることが可能である。共有オブジェクトは、グラフの変更されたコンテンツコンテナを格納する。コンテンツコンテナの最新の状態が、GUIDおよびタイムスタンプを使用して、前の状態と比較されて、コンテンツコンテナが変更されているかどうかの判定を行うことができるようになる。
例えば、2名の異なるユーザがそれぞれ、共有ドキュメントにアクセスして、コンテンツコンテナR0を変更する可能性がある。1名のユーザは、テキストノード360を削除することにより、コンテンツコンテナR0を変更することが可能である(変更R1に示す)。変更R1は、共有オブジェクトの中に格納される。変更R1に、変更されたコンテナを一意に識別するGUID(例えば、GUID−1)、ならびに変更R1が共有オブジェクトに書き込まれた時刻と日付を明らかにするタイムスタンプが割り当てられる。別のユーザが、テキストノード380をアウトライン要素ノード350に追加することにより、コンテンツコンテナR0を変更することができる(変更R2に示す)。変更R2は、共有オブジェクトの中に格納される。変更R2に、タイムスタンプ、ならびに変更されたコンテンツコンテナを一意に識別するGUID(例えば、GIUD−2)が割り当てられる。
異なるユーザが、異なる時点で共有オブジェクトを変更することができ、したがって、共有オブジェクトの複数のバージョンが並存することが可能である。しかし、共有オブジェクトの1つだけの最新バージョンが存在する。一実施形態では、共有オブジェクトの最新バージョンは、共有オブジェクトと同期され、他の許可されたユーザらに提供された最新の変更を含むバージョンである。
例えば、ユーザが、アウトライン要素ノード370をアウトラインノード344に追加することにより、変更R1として識別された共有オブジェクトのコンテンツコンテナを変更することが可能である(変更R3に示す)。変更R3は、共有オブジェクトの中に格納される。変更R3にも、タイムスタンプ、ならびに変更されたコンテンツコンテナを一意に識別するGUID(例えば、GUID−3)が割り当てられる。変更R3は、変更R1の拡張である。このため、変更R1は、ユーザが気付いていた共有オブジェクト(例えば、ローカルで格納されたバージョン)の最新バージョンである。共有オブジェクトは、共有オブジェクトの最新バージョンが、依然として、変更R1であるかどうかを判定するように検査される。一実施形態では、共有オブジェクトの最新バージョンは、異なるコンテンツコンテナのタイムスタンプおよびGUIDを比較することにより、特定することができる。共有オブジェクトの最新バージョンが、変更R1より新しいタイムスタンプに関連している場合、別のユーザ(例えば、変更R2を作成したユーザ)が、同一のコンテンツコンテナを後に修正している。
変更R1が、共有オブジェクトと同期されて以来、別のユーザが同一のコンテンツコンテナを修正している場合、後のあらゆる変更が共有オブジェクトと同期され、あらゆる競合する変更が解決され、マージされるまで、変更R1の拡張(例えば、変更R3)である、いずれの変更も、共有オブジェクトと同期させることができない。例えば、変更R2が、変更R1の後に、共有オブジェクトと同期される。このため、共有オブジェクトの最新バージョンは、変更R2を含む。変更R3が、共有オブジェクトと同期される前に、変更R3は、変更R2と比較されて、競合する変更が存在するかどうかが判定される。この比較が必要であるのは、変更R3が、共有オブジェクトの最新バージョンにもはや関連していない変更R1の拡張だからである。変更R3は、変更R2と競合しないと判定される。というのは、アウトライン要素ノード370は、変更R2を妨げることなしに、アウトラインノード344に追加することができるからである。
一実施形態では、共有オブジェクトは、共有オブジェクト内の1つのロケーションから別のロケーションにコンテンツコンテナを移動することによって変更される。例えば、テーブルノード340が、ページノード330からページノード335に移動されることが可能である。テーブルノード340が移動されたという判定が行われるが、新たなロケーションは、特定することができない。テーブルノード340の元のロケーションにおいて、プロキシノードが作成される。プロキシノードは、テーブルノード340の新たなロケーションが特定された場合、テーブルノード340のその新たなロケーションに実施される。新たなロケーションが特定される前にテーブルノード340が削除された場合、プロキシノードは、破棄される。
異なるユーザが、共有オブジェクトを同時に編集することが可能である。通常、ユーザらは、共有オブジェクトの相異なるコンテンツコンテナを変更している。このため、各ユーザの変更は、さらなる処理なしに、共有オブジェクトと同期されることが可能である。2名のユーザが、共有オブジェクトの同一のコンテンツコンテナ(例えば、同一のテーブル値、同一の文)を編集する場合、競合が生じる可能性がある。異なるユーザ変更間の競合は、非同期でもたらされる可能性がある。例えば、ユーザが、サーバに接続されていない間に、共有オブジェクトのローカルでキャッシュされたバージョンを変更する可能性がある。その変更は、ユーザが、サーバに再接続した際に、共有オブジェクトと同期される。しかし、その変更は、共有オブジェクトと既に同期されている他のバージョンと競合する可能性がある。
例えば、変更R4は、変更R3の拡張である。変更R4は、アウトラインノード344からアウトライン要素ノード350を削除する。共有オブジェクトの最新バージョンが、変更R2を含むと判定される。変更R2と変更R4の比較により、競合が明らかにされる。というのは、アウトライン要素ノード350が、変更R2の中に存在するが、変更R4の中で削除されているからである。
コンテンツコンテナのマスタバージョンと、コンテンツコンテナの2つの相違する2つのバージョンの間で3方マージ(three−way merge)が実行されて、競合が解決される。例えば、コンテンツコンテナR0(すなわち、マスタバージョン)、変更R2、および変更R4がマージされて、共有オブジェクトの最新バージョンが確立される。コンテンツコンテナのマスタバージョンは、サーバ上の共有オブジェクトと最後に同期されたバージョンであることが可能である。マスタバージョンは、競合しない変更を含む。
競合するコンテンツコンテナは、マージアルゴリズムによって確立された一組の規則に従って調停されて、共有オブジェクトにマージされる。マージアルゴリズムは、いずれの変更が、共有オブジェクトと同期されるかを判定する。例えば、異なるユーザが、優先順位に従ってランク付けされて、あるユーザの変更が、他のすべてのユーザに優先されるようになることが可能である(すなわち、1次編集)。より低い優先順位のユーザが、より高い優先順位のユーザによって既に編集されている共有オブジェクトのコンテンツコンテナを変更しようと試みた場合、そのユーザは、変更(2次編集)が、共有オブジェクトと同期されないという通知を受ける。このため、1次編集が、共有オブジェクトのマスタページ上に表示され、いずれの2次編集にも、共有オブジェクトと同期されないというフラグが付けられる。
別の実施例では、サーバ上の共有オブジェクトに対して行われた変更が、クライアント上においてローカルで行われた変更に優先される。共有オブジェクトのサーバコピーは、多くの異なるユーザが、サーバ上の共有オブジェクトにアクセスし、変更を行っている可能性があるため、マスタバージョンと考えられる。1名だけのユーザが、ローカルで格納されたバージョンにアクセスし、変更を行っている。共有オブジェクトと同期されていない、変更されたコンテンツコンテナ(例えば、2次編集)は、競合するものとして識別される。競合するコンテンツコンテナは、共有オブジェクトの対応するマスタページに関連する競合ページ上に格納されることによって保存される。
図4は、共有オブジェクトのマスタページ、および関連する競合ページを示す。マスタページ400は、コンテンツコンテナ410、420などの、競合しない変更を含む。マージされてない、あらゆる競合する変更は、マスタページ400上で、競合インジケータによって識別される。一実施形態では、競合インジケータは、ドロップダウンメニュー430である。ドロップダウンメニュー430の第1のエントリは、ユーザによって生成された最新の競合であることが可能である。ドロップダウンメニュー430のエントリは、ユーザの名前、および対応するタイムスタンプを含むことが可能である。ドロップダウンメニュー430内の別のエントリは、ユーザが生成したが、調停しなかった他の競合ページを含むことが可能である。ドロップダウンメニュー430内の他のエントリは、他のユーザらによって生成された競合ページに対応することが可能である。ドロップダウンメニュー430からエントリを選択することにより、対応する競合ページが表示されて、共有オブジェクトのマスタバージョンの中にマージされなかった変更にユーザの注意を引き付けるように、競合する変更がハイライトされる。このため、ユーザは、競合を調停して、マスタページ400とマージするか、または競合が重要でないと判断することができる。
別の実施形態では、競合インジケータは、タブである。マスタページは、タブ440に関連することが可能である。また、対応する競合ページも、タブ440とは異質のタブに関連することが可能である。例えば、競合ページタブは、タブ440に対してインデントされているか(indented)、またはタブ440の下にたたまれている(collapsed)ことが可能である。特定のユーザに関連する、マージされてない競合を含む競合ページは、その他のタブとは異質であるタブによって識別されて、ユーザの注意が、そのユーザによって生成された競合ページに引き付けられるようにすることが可能である。すると、ユーザは、そのタブを選択して、対応する競合ページに移動する(navigate)ことができる。
選択された競合ページは、共有オブジェクトの対応するマスタページと並んで表示されて、ユーザが、マージされた変更のために、競合する変更を調停し、マージすることができるようにすることが可能である。競合ページ450が、マスタページ400に関連する。競合ページ450は、マスタページ400と似通っているが、競合が解決されていないことを示すように、あらゆる競合するコンテンツコンテナがハイライトされていることが異なっている。例えば、コンテンツコンテナ460が、マージされてない競合にユーザの注意を引き付けるように、ハイライトされた背景で提示される。コンテンツコンテナ460は、ユーザが、コンテンツコンテナ460の中のデータを変更して、競合を生じさせる前に、削除され、共有オブジェクトと同期されていることが可能である。ユーザは、コンテンツコンテナ460を選択して、マスタページ400上でその変更をマージすることができる。
一実施形態では、競合ページは、1名の特定のユーザに関連する。このため、複数のユーザが、マージされることが可能でない変更をページ上で行った場合、複数の競合ページが、マスタページ400に関連することが可能である。すべての競合する変更が、共有オブジェクトにアクセスすることが許可された、すべてのユーザに関して格納される。競合ページにアクセスするユーザは、おそらく、そのユーザによって生成された競合に最も関心があり、したがって、ユーザは、それらの競合を調停することができる。例えば、ユーザ1には、ユーザ1が競合インジケータを選択した際に、ユーザ1の対応する競合ページが提示される。また、ユーザは、別のユーザに関連する競合ページを見ることもできる。例えば、ユーザ1は、タブ470を選択して、ユーザ2に関連する競合ページに移動することができる。
共有オブジェクトの1つのマスタページに関連する多くの競合ページが、時とともに蓄積する可能性がある。その期間中、ユーザは、いくつかの変更を、対応する競合ページを無視しながら、サーバ上に位置する共有オブジェクトのマスタバージョンと同期させる可能性がある。このため、ユーザが調停しなかった、より古い競合ページは、おそらく、もはや重要ではない。一実施形態では、重要でないと識別された競合ページは、所定の期間が経過した後、パージされることが可能であり、ユーザが、その期間中にページの変更を同期させている。例えば、あらゆるマスタページに関連する3つの最新の競合ページが保存され、他のいずれの関連する競合ページも、作成から1カ月後にパージされる。
一実施形態では、競合ページは、競合が、非同期通信中よりも頻繁に生じる可能性があるため、リアルタイム通信中には作成されない。代わりに、ユーザは、同一のコンテンツコンテナを共同作業で変更することができる。競合は、即時に処理されることが可能である。というのは、すべてのユーザが、ユーザの変更が実施されたかどうかを迅速に確認することができるからである。代替として、ユーザは、別のユーザが、特定のコンテンツコンテナを変更しているという通知を受ける。ユーザは、その別のユーザの変更が完了するまで、異なるコンテンツコンテナを変更するように促されることが可能である。
図5は、共有オブジェクトに対する複数ユーザ変更を同期させるためのシステムのブロック図を示す。システムは、クライアント500、510、540、550、およびサーバ520、530を含む。クライアント500は、サーバ520、530に結合される。クライアント510は、サーバ520に結合される。クライアント540、550は、サーバ530に結合される。クライアント540は、ストア542および子ストア544を含む。サーバ520は、ストア522および子ストア524、526を含む。サーバ530は、ストア532を含む。ストア532は、サブストア534、536を含む。
ストア522、532、子ストア524、526、およびサブストア534、536は、共有オブジェクトに関連する変更を格納することができる。ストア522、532、子ストア524、526、およびサブストア534、536は、階層型である。例えば、ストア522は、共有ノートブックドキュメント全体に関連することが可能である。子ストア524は、共有ノートブックドキュメントのセクションに関連することが可能である。子ストア526は、共有ノートブックドキュメントのページに関連することが可能である。一実施形態では、最上レベルの共有オブジェクトの最新バージョンだけが、ストア522の中に含まれる。ストア532は、最上レベルの共有オブジェクト全体を格納することが可能である。サブストア534、536は、共有オブジェクトの諸部分に関連する。例えば、サブストア534は、共有オブジェクトのあるセクションに関連することが可能であり、サブストア536は、共有オブジェクトの異なるセクションに関連することが可能である。
アプリケーションは、共有オブジェクトの特定のコンテンツコンテナの最新バージョンなしに、サーバ520またはサーバ530からクライアント500に共有オブジェクトをロードする可能性がある。例えば、クライアント500が、共有オブジェクトをストア522から要求する。共有オブジェクトの最新の利用可能なバージョンが、クライアント500において提示される。共有オブジェクトの最新の利用可能なバージョンは、共有オブジェクトの最新バージョンと一致しない可能性がある。というのは、最新の変更のデータが、対応する子ストア526の中で入手できないからである。クライアント500が、共有オブジェクトを更新するのに最新の変更データを要することを示すように、要求タグが、子ストア526に割り当てられる。また、子ストア526には、クライアント500が、子ストア526から変更データを要求した時刻と日付を明らかにするタイムスタンプも割り当てられることが可能である。また、子ストアには、データを要求したクライアント(例えば、クライアント500)を識別するGUIDも割り当てられることが可能である。要求タグ、タイムスタンプ、およびGUIDは、別のクライアントが子ストア526にアクセスした際、クライアント500に知らせるのに使用される。例えば、クライアント510が、最新の変更データで子ストア526にアクセスすることが可能である。このため、クライアント500は、共有オブジェクトの最新の変更データが、子ストア526の中で入手できることを知らされる。
クライアント500は、ユーザの自宅コンピュータであることが可能であり、クライアント540は、ユーザの職場コンピュータであることが可能である。サーバ530は、クライアント500、540の間で変更ファイルを転送するExchangeサーバであることが可能である。変更ファイルを使用して、クライアント500、550上に格納された共有オブジェクトを更新することができる。一実施形態では、クライアント500は、所定のサイズ(例えば、2メガバイト)より大きいファイルを扱うことを制限される。例えば、クライアント500は、受信されることが可能な電子メールメッセージのサイズを制限する電子メールアプリケーションを含むことが可能である。ストア542は、最上レベルの共有オブジェクトに関連する変更を含む。子ストア544は、共有オブジェクトのコンテンツコンテナに関連する変更を含む。
クライアント540が、サーバ530にポーリングを行って、別のクライアントがデータ変更要求を送信しているかどうかを判定することが可能である。クライアント540は、要求されたデータ変更の最新バージョンが、ストア542または子ストア544の中で入手できる場合、その要求を満たすことができる。クライアント540は、変更ファイルのサイズが、クライアント500によって扱われることが可能な限度より小さい場合、要求された変更全体をクライアント500に転送することができる。変更ファイルのサイズが限度より大きい場合、ファイルは、限度より小さいファイルに分割することができる。代替として、変更ファイルのサイズは、前の要求を削除することにより、小さくすることもできる。次に、その、より小さいファイル群が、サーバ530を介してクライアント540からクライアント500に転送される。
変更データを求める複数の要求が、サーバ上で待っていることが可能である。一実施形態では、要求は、異なるクライアント(例えば、クライアント500、550)から行われる可能性がある。各要求側クライアントは、異なるファイルサイズ限度に関連する可能性がある。例えば、クライアント500は、2メガバイト未満のファイルに制限され、クライアント550は、20メガバイトまでのファイルを扱うことができる。変更ファイルが、2メガバイトより大きい場合、両方の要求とも、1回の転送トランザクションを介して満たすことができない。一実施形態では、優先順位ビットが、各要求側クライアントに関連付けられて、要求が満たされる順序が確立される。
要求は、変更ファイルをクライアント500、550と同期させることによって満たされる。変更ファイルは、変更ファイルのサイズに応じて、1回のトランザクションで、または一連の複数回のトランザクションを介して、クライアント500、550と同期されることが可能である。各クライアント500、550は、変更ファイル全体が同期されると、要求が満たされたと判定する。クライアント540は、要求が満たされたため、要求されたデータをパージすることができる。クライアント540は、後にサーバ530にポーリングを行って、満たされるべき、さらなる要求が待っているかどうかを判定することができる。
図6は、共有オブジェクトに対する複数ユーザ変更を同期させるためのプロセスを示す動作流れ図を示す。プロセスは、多くのユーザが、共有オブジェクトに同時にアクセスし、変更を行うことを許可される(すなわち、ピアグループ)開始ブロックで始まる。オブジェクトは、ファイルとして共有されることが可能な任意のエンティティであることが可能である。ピアグループは、ピアグループ識別子によって識別されることが可能である。共有オブジェクトの異なるバージョンは、対応するGUIDおよびタイムスタンプによって識別される。タイムスタンプは、共有オブジェクトが最後に変更と同期された時刻を明らかにする。
ブロック600に進むと、ユーザが、共有オブジェクトを変更する。共有オブジェクトは、サーバ上で、ローカルキャッシュ内で、またはピアツーピアネットワーク上で変更されることが可能である。一実施形態では、変更は、変更ファイルとして格納される。ブロック610に進むと、変更は、GUIDおよびタイムスタンプに関連する。タイムスタンプは、ユーザが共有オブジェクトを変更した時刻を明らかにする。
ブロック620に進むと、共有オブジェクトの最新バージョンが探し出される。共有オブジェクトの最新バージョンは、共有オブジェクトと同期され、他の許可されたユーザに利用可能にされた最新の変更を含む、バージョンである。共有オブジェクトの最新バージョンは、共有オブジェクトの異なるバージョンに関連するタイムスタンプおよびGUIDから特定することができる。
判定ブロック630に移ると、競合する変更が存在するかどうかの判定が行われる。変更は、異なるユーザが、同一のコンテンツコンテナを変更した場合、競合する可能性がある。変更は、競合する変更が存在する場合、共有オブジェクトと同期させることができない。競合する変更が存在する場合、処理は、ブロック640に進み、競合する変更が調停されて、マージされる(図7に関連して説明するとおり)。競合する変更が全く存在しない場合、処理は、ブロック650に進み、変更は、共有オブジェクトと同期されて、他のユーザらが、その変更を見ることができるようになる。次に、処理は、終了ブロックで終了する。
図7は、共有オブジェクトに対する競合する複数ユーザ変更を調停して、マージするためのプロセスを示す動作流れ図を示す。プロセスは、開始ブロックで始まり、複数のユーザが、共有オブジェクトの中で同一のコンテンツコンテナを変更している。変更されたコンテンツコンテナの1つが、共有オブジェクトと同期されて、そのコンテンツコンテナに対する他のいずれの変更も、同期させることができないようになると、競合がもたらされる。
ブロック700に進むと、競合する変更が、競合ページ上で表示される。競合ページは、対応するマスタページと似通っているが、競合するバージョンが、同期された変更の代わりにハイライトされ、表示されることだけが異なっている。
ブロック710に進むと、共有オブジェクトのマスタページ上に競合インジケータが表示される。競合インジケータは、マスタページに関して競合ページが利用できることをユーザに知らせる、ドロップダウンメニュー、タブ、または他の任意の機構であることが可能である。特定のユーザに関連する競合ページに関する競合インジケータは、現在のユーザが、現在のユーザによって生成された競合ページを迅速に識別することができるように、他のユーザらに関連する競合ページに関する競合インジケータとは異質であることが可能である。
ブロック720に進むと、競合インジケータが選択されると、競合ページは、マスタページと並んで表示される。ユーザには、マスタページの同期された状態と、対応する競合ページがともに提示される。
ブロック730に移ると、ユーザは、競合する変更を調停して、マスタページにマージする。一実施形態では、ユーザは、コンテンツコンテナを選択して、そのコンテンツコンテナが、マスタページとマージされるようにすることができる。別の実施形態では、ユーザは、変更をマスタページ上に直接に実施することができる。さらに別の実施形態では、ユーザは、競合する変更を重要ではないと識別することが可能である。
ブロック740に進むと、重要ではないと識別された、競合する変更がパージされる。一実施形態では、競合する変更は、ユーザによって重要ではないと識別されることが可能である。別の実施形態では、競合する変更は、重要ではないと自動的に識別されることが可能である。例えば、ユーザが、いくつかの変更を、対応する競合ページを無視しながら、サーバ上に位置する共有オブジェクトのマスタバージョンと同期させることが可能である。ユーザが調停しなかった、より古い競合ページは、所定の期間が経過した後、重要ではないと識別される。次に、処理は、終了ブロックで終了する。
図8は、共有オブジェクトに対する複数ユーザ変更を同期させるためのプロセスを示す動作流れ図を示す。プロセスは、開始ブロックで始まり、共有オブジェクトの異なるバージョンが、システム全体の様々なロケーションに格納される。ブロック800に進むと、共有オブジェクトが、ストアからクライアントにダウンロードされる。
判定ブロック810に進むと、共有オブジェクトが、共有オブジェクトの最新バージョンであるかどうかの判定が行われる。共有オブジェクトが、共有オブジェクトの最新バージョンである場合、処理は、終了ブロックで終了する。共有オブジェクトが、共有オブジェクトの最新バージョンでない場合、処理は、ブロック820に進む。共有オブジェクトは、共有オブジェクトのコンテンツコンテナに対する最新の変更がストアから入手できないため、最新バージョンではない可能性がある。
ブロック820に進むと、クライアントが、共有オブジェクトを更新するのに最新の変更データを要することを示すように、要求タグおよびクライアント情報がストアに割り当てられる。クライアント情報は、要求側クライアントを識別するGUID、ならびに共有オブジェクトの最新バージョンをクライアントがストアから要求した時刻を明らかにするタイムスタンプを含むことが可能である。
ブロック830に移ると、共有オブジェクトの最新バージョンが、ストアにおいて受け取られる。ストアは、別のクライアントが、最新の変更データでストアにアクセスした際、共有オブジェクトの最新バージョンを受け取ることが可能である。要求側クライアントは、共有オブジェクトの最新バージョンが、ストアによって受け取られたことを知らされる。ブロック840に進むと、共有オブジェクトの最新バージョンが、要求側クライアントと同期される。次に、処理は、終了ブロックで終了する。
図9は、非同期通信モードから同期通信モードにシームレスに遷移するためのプロセスを示す動作流れ図を示す。プロセスは、開始ブロックで始まり、共有オブジェクトにアクセスすることが許可されているユーザらを明らかにするピアグループが確立される。
ブロック900に進むと、クライアントが、サーバ上の共有オブジェクトにアクセスする。クライアントは、その共有オブジェクトに同様にアクセスしている他のクライアント群(すなわち、ピアグループ)に自動的に接続される。共有オブジェクトは、マニフェストファイルに関連する。共有オブジェクトは、対応するマニフェストファイルがシステム内で格納されているロケーションを明らかにする一意ロケーション識別子を含む。
ブロック910に進むと、マニフェストファイルが、一意ロケーション識別子によって明らかにされたロケーションから取得される。マニフェストファイルは、システム内で、共有オブジェクトの他のバージョン、および他のインスタンスが格納されているロケーションを明らかにする。マニフェストファイルは、共有オブジェクトのバージョンが格納された、ピアグループに対するピアグループ識別子を含む。
ブロック920に進むと、ピアグループ内の他のいずれかのクライアントが、マニフェストファイルによって識別された共有オブジェクトのバージョンまたはインスタンスにアクセスした際、ピアツーピアネットワークが確立される。このため、クライアントは、サーバから切断し、ピアツーピアネットワーク上で共有ファイルにアクセスすることを続けることができる。次に、処理は、終了ブロックで終了する。
図10は、同期通信モードから非同期通信モードにシームレスに遷移するためのプロセスを示す動作流れ図を示す。プロセスは、開始ブロックで始まり、共有オブジェクトにアクセスすることが許可された、少なくとも2名のユーザ間でピアツーピアネットワークが確立される。
ブロック1000に進むと、クライアントが、ピアツーピアネットワーク上で共有オブジェクトにアクセスする。共有オブジェクトは、マニフェストファイルに関連する。共有オブジェクトは、システム内で、対応するマニフェストファイルが格納されているロケーションを明らかにする一意ロケーション識別子を含む。
ブロック1010に進むと、共有オブジェクトに関連するマニフェストファイルが、一意ロケーション識別子によって明らかにされたロケーションから取得される。マニフェストファイルは、システム内で、共有オブジェクトの他のバージョン、および他のインスタンスが格納されているロケーションを明らかにする。ブロック1020に進むと、クライアントは、サーバに接続する。クライアントは、他のいずれのクライアントが、そのサーバに同様に接続されているかを特定する。ブロック1030に移ると、クライアントは、ピアツーピアネットワークから、その共有オブジェクトにアクセスすることが許可されている他のクライアントを識別する。ブロック1040に進むと、クライアントは、ピアツーピアネットワークが利用できない場合、許可されたクライアントに接続する。次に、処理は、終了ブロックで終了する。
以上の明細、実施例、およびデータにより、本発明の構成の製造および用法の完全な説明が提供される。本発明の趣旨および範囲を逸脱することなく、本発明の多くの実施形態を実施することができるため、本発明は、添付の特許請求の範囲に存する。
本発明の典型的な実施形態に従って使用することができるコンピューティングデバイスを示す図である。 本発明による、共有オブジェクトに対する複数ユーザ変更を同期させるためのシステムを示すブロック図である。 本発明による、共有オブジェクトの相異なる部分を示すリンクされたノード群を示す階層グラフである。 本発明による、共有オブジェクトのマスタページ、および関連する競合ページを示す図である。 本発明による、共有オブジェクトに対する複数ユーザ変更を同期させるためのシステムを示すブロック図である。 本発明による、共有オブジェクトに対する複数ユーザ変更を同期させるためのプロセスを示す動作流れ図である。 本発明による、共有オブジェクトの、複数のユーザからの競合する変更を調停し、マージするためのプロセスを示す動作流れ図である。 本発明による、共有オブジェクトに対する複数ユーザ変更を同期させるためのプロセスを示す動作流れ図である。 本発明による、非同期通信モードから同期通信モードにシームレスに遷移するためのプロセスを示す動作流れ図である。 本発明による、同期通信モードから非同期通信モードにシームレスに遷移するためのプロセスを示す動作流れ図である。
符号の説明
200 ユーザ1(自宅)
202、212、222、232 キャッシュ
210 ユーザ1(職場)
220 ユーザ2
230 ユーザ3
240 EXCHANGEサーバ
242 変更ファイル
250 WEBサーバ
252、264、272 共有オブジェクト
254、266 マニフェストファイル
260 ピアツーピアネットワーク
262 仮想サーバ
270 電子メール添付ファイル

Claims (19)

  1. コラボレート環境での複数の通信モードの間で遷移するためのコンピュータによって実施される方法であって、
    第1のネットワーク通信を形成するために、第1のコンピューティングデバイスから共有オブジェクトにアクセスするステップであって、前記共有オブジェクトはコラボレートなオブジェクトであり、マニフェストファイルの位置を示すロケーション識別子を含む、ステップと、
    前記アクセスされた共有オブジェクトにおける前記ロケーション識別子に基づいて、前記共有オブジェクトのためのマニフェストファイルの位置を判断するステップと、
    前記共有オブジェクトに含まれるロケーション識別子により示される位置に基づいて前記マニフェストファイルにアクセスするステップであって、前記マニフェストファイルは前記共有オブジェクトの複数のインスタンスの各々のネットワーク上の位置を示す、ステップと、
    前記共有オブジェクトの複数のインスタンスのうちの同時にアクセスされた各インスタンスのためのネットワークロケーションの前記マニフェストファイルに基づいて、自動的にシームレスに、前記同時にアクセスされた各インスタンスを有する第2のネットワーク通信へ移行するステップであって、前記第のネットワーク通信は、第1のネットワーク通信と異なり、かつ同期通信を提供するピアツーピアネットワーク通信であり、前記第のネットワーク通信は、非同期通信を提供するクライアント・サーバ通信である、ステップと
    を備えることを特徴とする方法。
  2. 前記マニフェストファイルは、ピアツーピアネットワークに関連する共有オブジェクトのインスタンスを示すピアグループの識別子を含むことを特徴とする請求項2に記載のコンピュータによって実施される方法。
  3. 前記第1のネットワーク通信は非同期のクライアント・サーバネットワーク通信であり、前記第2のネットワーク通信は同期通信のピアツーピアのネットワーク通信であることを特徴とする請求項1に記載のコンピュータによって実施される方法。
  4. 前記マニフェストファイルは、ピアツーピアネットワークに関連する共有オブジェクトのインスタンスを示すピアグループの識別子を含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
  5. 前記マニフェストファイルはXML文書であることを特徴とする請求項1に記載のコンピュータによって実施される方法。
  6. 前記マニフェストファイルは前記共有オブジェクトの第1の部分に関連付けられ、前記共有オブジェクトの第2の部分とは関連付けられていないことを特徴とする請求項1に記載のコンピュータによって実施される方法。
  7. 前記マニフェストファイルは、前記共有オブジェクト、ウェブサーバ、複数の位置およびアクチブディレクトリを有するグループの少なくとも1つのメンバー内に格納されることを特徴とする請求項1に記載のコンピュータによって実施される方法。
  8. 前記ロケーション識別子により示される前記位置は、ファイルサーバ、サーバの共有領域、ウェブサーバおよびピアグループの少なくとも1つのメンバーであることを特徴とする請求項1に記載のコンピュータによって実施される方法。
  9. コラボレート環境での複数の通信モードの間で遷移するために、
    第1のコンピューティングデバイスから共有オブジェクトにアクセスするステップであって、前記共有オブジェクトはコラボレートなオブジェクトであり、マニフェストファイルの位置を示すロケーション識別子を含む、ステップと、
    前記アクセスされた共有オブジェクトにおける前記ロケーション識別子に基づいて、前記共有オブジェクトのためのマニフェストファイルの位置を判断するステップと、
    前記共有オブジェクトに含まれるロケーション識別子により示される位置に基づいて前記マニフェストファイルにアクセスするステップであって、前記マニフェストファイルは前記共有オブジェクトの複数のインスタンスの各々のネットワーク上の位置を示す、ステップと、
    前記共有オブジェクトの複数のインスタンスのうちの同時にアクセスされた各インスタンスのためのネットワークロケーションの前記マニフェストファイルに基づいて、自動的にシームレスに、前記同時にアクセスされた各インスタンスを有する第2のネットワーク通信へ移行するステップであって、前記第のネットワーク通信は、第1のネットワーク通信と異なり、かつ同期通信を提供するピアツーピアネットワーク通信であり、前記第のネットワーク通信は、非同期通信を提供するクライアント・サーバ通信である、ステップと
    をコンピュータに実行させるためのコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能記録媒体。
  10. 前記マニフェストファイルはXML文書であることを特徴とする請求項9に記載のコンピュータ読み取り可能記録媒体。
  11. 前記マニフェストファイルは前記共有オブジェクトの第1の部分に関連付けられ、前記共有オブジェクトの第2の部分とは関連付けられていないことを特徴とする請求項9に記載のコンピュータ読み取り可能記録媒体。
  12. 前記マニフェストファイルは、前記共有オブジェクト、ウェブサーバ、複数の位置およびアクチブディレクトリを有するグループの少なくとも1つのメンバー内に格納されることを特徴とする請求項9に記載のコンピュータ読み取り可能記録媒体。
  13. 前記ロケーション識別子により示される前記位置は、ファイルサーバ、サーバの共有領域、ウェブサーバおよびピアグループの少なくとも1つのメンバーであることを特徴とする請求項9に記載のコンピュータ読み取り可能記録媒体。
  14. コラボレート環境での複数の通信モードの間で遷移するためのシステムであって、
    プロセッサと、
    第1のコンピューティングデバイスから共有オブジェクトにアクセスするステップであって、前記共有オブジェクトはコラボレートなオブジェクトであり、マニフェストファイルの位置を示すロケーション識別子を含む、ステップと、
    前記アクセスされた共有オブジェクトにおける前記ロケーション識別子に基づいて、前記共有オブジェクトのためのマニフェストファイルの位置を判断するステップと、
    前記共有オブジェクトに含まれるロケーション識別子により示される位置に基づいて前記マニフェストファイルにアクセスするステップであって、前記マニフェストファイルは前記共有オブジェクトの複数のインスタンスの各々のネットワーク上の位置を示す、ステップと、
    前記共有オブジェクトの複数のインスタンスのうちの同時にアクセスされた各インスタンスのためのネットワークロケーションの前記マニフェストファイルに基づいて、自動的にシームレスに、前記同時にアクセスされた各インスタンスを有する第2のネットワーク通信へ移行するステップであって、前記第のネットワーク通信は、第1のネットワーク通信モードと異なり、かつ同期通信を提供するピアツーピアネットワーク通信であり、前記第のネットワーク通信は、非同期通信を提供するクライアント・サーバ通信である、ステップと
    を前記プロセッサに実行させるためのコンピュータ実行可能命令を記録したメモリと
    を有することを特徴とするシステム。
  15. 前記マニフェストファイルはXML文書であることを特徴とする請求項14に記載のシステム。
  16. 前記マニフェストファイルは前記共有オブジェクトの第1の部分に関連付けられ、前記共有オブジェクトの第2の部分とは関連付けられていないことを特徴とする請求項14に記載のシステム。
  17. 前記マニフェストファイルは、前記共有オブジェクト、ウェブサーバ、複数の位置およびアクチブディレクトリを有するグループの少なくとも1つのメンバー内に格納されることを特徴とする請求項14に記載のシステム。
  18. 前記ロケーション識別子により示される前記位置は、ファイルサーバ、サーバの共有領域、ウェブサーバおよびピアグループの少なくとも1つのメンバーであることを特徴とする請求項14に記載のシステム。
  19. 前記マニフェストファイルは複数の共有オブジェクトを示すことを特徴とする請求項14に記載のシステム。
JP2005355259A 2005-01-14 2005-12-08 同期通信モードと非同期通信モードの間で遷移するための方法およびシステム Active JP4927395B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/035,617 2005-01-14
US11/035,617 US7953794B2 (en) 2005-01-14 2005-01-14 Method and system for transitioning between synchronous and asynchronous communication modes

Publications (3)

Publication Number Publication Date
JP2006195966A JP2006195966A (ja) 2006-07-27
JP2006195966A5 JP2006195966A5 (ja) 2009-04-23
JP4927395B2 true JP4927395B2 (ja) 2012-05-09

Family

ID=35990404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005355259A Active JP4927395B2 (ja) 2005-01-14 2005-12-08 同期通信モードと非同期通信モードの間で遷移するための方法およびシステム

Country Status (7)

Country Link
US (2) US7953794B2 (ja)
EP (1) EP1681629B1 (ja)
JP (1) JP4927395B2 (ja)
KR (1) KR101153137B1 (ja)
CN (1) CN1805394B (ja)
AT (1) ATE449379T1 (ja)
DE (1) DE602005017732D1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1738258A4 (en) 2004-03-13 2009-10-28 Cluster Resources Inc SYSTEM AND METHOD IMPLEMENTING OBJECT TRIGGERS
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
CA2586763C (en) 2004-11-08 2013-12-17 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US7953794B2 (en) * 2005-01-14 2011-05-31 Microsoft Corporation Method and system for transitioning between synchronous and asynchronous communication modes
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US7698430B2 (en) 2005-03-16 2010-04-13 Adaptive Computing Enterprises, Inc. On-demand compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP3203374B1 (en) 2005-04-07 2021-11-24 III Holdings 12, LLC On-demand access to compute resources
US7480673B2 (en) * 2005-07-06 2009-01-20 International Business Machines Corporation Optimized computer diagramming method
US9467530B2 (en) * 2006-04-11 2016-10-11 Nokia Technologies Oy Method, apparatus, network entity, system and computer program product for sharing content
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US8010487B2 (en) * 2008-06-27 2011-08-30 Microsoft Corporation Synchronization and collaboration within peer-to-peer and client/server environments
US9311626B2 (en) * 2008-08-07 2016-04-12 International Business Machines Corporation Electronic mail reply with update
US8108777B2 (en) 2008-08-11 2012-01-31 Microsoft Corporation Sections of a presentation having user-definable properties
US8489999B2 (en) * 2008-09-02 2013-07-16 Accenture Global Services Limited Shared user interface surface system
WO2010036983A1 (en) 2008-09-25 2010-04-01 Rockliffe Systems, Inc. (Dba Mailsite) Personal information management data synchronization
US8909806B2 (en) * 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
US8296338B2 (en) * 2009-05-05 2012-10-23 Entangled Media Corp. Method for a cloud-based meta-file system to virtually unify remote and local files across a range of devices' local file systems
US10127524B2 (en) * 2009-05-26 2018-11-13 Microsoft Technology Licensing, Llc Shared collaboration canvas
US20100306018A1 (en) * 2009-05-27 2010-12-02 Microsoft Corporation Meeting State Recall
US8219526B2 (en) 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US9323582B2 (en) * 2009-08-12 2016-04-26 Schlumberger Technology Corporation Node to node collaboration
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8874951B1 (en) * 2010-04-05 2014-10-28 Cloudpic Global Inc. Private peer-to-peer network platform for secure collaborative production and management of digital assets
US9118612B2 (en) 2010-12-15 2015-08-25 Microsoft Technology Licensing, Llc Meeting-specific state indicators
US9383888B2 (en) 2010-12-15 2016-07-05 Microsoft Technology Licensing, Llc Optimized joint document review
US9864612B2 (en) 2010-12-23 2018-01-09 Microsoft Technology Licensing, Llc Techniques to customize a user interface for different displays
EP2993585B1 (en) * 2010-12-27 2017-06-28 Amplidata NV Distributed object storage system comprising performance optimizations
US9544158B2 (en) 2011-10-05 2017-01-10 Microsoft Technology Licensing, Llc Workspace collaboration via a wall-type computing device
US8682973B2 (en) 2011-10-05 2014-03-25 Microsoft Corporation Multi-user and multi-device collaboration
US9996241B2 (en) 2011-10-11 2018-06-12 Microsoft Technology Licensing, Llc Interactive visualization of multiple software functionality content items
US10198485B2 (en) 2011-10-13 2019-02-05 Microsoft Technology Licensing, Llc Authoring of data visualizations and maps
US8700569B1 (en) 2012-05-09 2014-04-15 Bertec Corporation System and method for the merging of databases
US9043278B1 (en) 2012-05-09 2015-05-26 Bertec Corporation System and method for the merging of databases
US8543540B1 (en) * 2012-05-09 2013-09-24 Bertec Corporation System and method for the merging of databases
US9571416B2 (en) 2012-11-08 2017-02-14 Ingersoll Rand Company Server and computer interaction via local shared objects
CN103118122A (zh) * 2013-02-21 2013-05-22 腾讯科技(深圳)有限公司 一种用户生产内容的处理方法、装置和系统
US9460073B2 (en) * 2013-02-27 2016-10-04 Google Inc. Systems and methods for mutations and operational transforms in a collaborative spreadsheet environment
US20150347966A1 (en) * 2014-05-31 2015-12-03 Hartford Fire Insurance Company Meeting management and project management element reconciliation
US10503698B2 (en) * 2014-07-31 2019-12-10 Splunk Inc. Configuration replication in a search head cluster
US10671800B2 (en) * 2016-09-15 2020-06-02 Oracle International Corporation Providing way to store process data object state as snapshots at different points of process
US11749312B2 (en) * 2017-03-24 2023-09-05 Adobe Inc. Timeline creation of electronic document creation states
US11283880B2 (en) * 2019-04-15 2022-03-22 International Business Machines Corporation Termination of database connection
US11593397B2 (en) * 2020-10-05 2023-02-28 Micro Focus Llc Low latency polling
US11880650B1 (en) * 2020-10-26 2024-01-23 Ironclad, Inc. Smart detection of and templates for contract edits in a workflow

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US6006239A (en) * 1996-03-15 1999-12-21 Microsoft Corporation Method and system for allowing multiple users to simultaneously edit a spreadsheet
US5890177A (en) * 1996-04-24 1999-03-30 International Business Machines Corporation Method and apparatus for consolidating edits made by multiple editors working on multiple document copies
JP3022326B2 (ja) 1996-06-18 2000-03-21 日本電気株式会社 ファイル変更履歴管理システム
US5787262A (en) * 1996-06-26 1998-07-28 Microsoft Corporation System and method for distributed conflict resolution between data objects replicated across a computer network
US6226652B1 (en) 1997-09-05 2001-05-01 International Business Machines Corp. Method and system for automatically detecting collision and selecting updated versions of a set of files
US6240414B1 (en) * 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6067551A (en) * 1997-11-14 2000-05-23 Microsoft Corporation Computer implemented method for simultaneous multi-user editing of a document
US6058416A (en) * 1998-05-22 2000-05-02 International Business Machines Corportion Flexible state sharing and consistency mechanism for interactive applications
US6317754B1 (en) 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6341291B1 (en) * 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6212534B1 (en) * 1999-05-13 2001-04-03 X-Collaboration Software Corp. System and method for facilitating collaboration in connection with generating documents among a plurality of operators using networked computer systems
US6662212B1 (en) 1999-08-31 2003-12-09 Qualcomm Incorporated Synchronization of a virtual workspace using E-mail extensions
WO2001033383A1 (en) 1999-11-01 2001-05-10 Mangosoft Corporation Internet-based shared file service with native pc client access and semantics and distributed version control
US7711771B2 (en) * 2001-05-25 2010-05-04 Oracle International Corporation Management and synchronization application for network file system
JP4658412B2 (ja) 2001-09-20 2011-03-23 富士通株式会社 データ共有装置
US20030097410A1 (en) * 2001-10-04 2003-05-22 Atkins R. Travis Methodology for enabling multi-party collaboration across a data network
US20030112273A1 (en) * 2001-12-17 2003-06-19 Workshare Technology, Ltd. Document collaboration suite using a common database
US20060136441A1 (en) * 2002-04-02 2006-06-22 Tetsunosuke Fujisaki Method and apparatus for synchronous project collaboration
US6938042B2 (en) * 2002-04-03 2005-08-30 Laplink Software Inc. Peer-to-peer file sharing
CN100411380C (zh) * 2002-08-19 2008-08-13 万达信息股份有限公司 一种网络数据交换中同步与异步间的转换方法
JP2004171083A (ja) 2002-11-18 2004-06-17 Nippon Telegr & Teleph Corp <Ntt> 情報共有装置、情報共有方法、情報共有プログラム、及び記録媒体
WO2004064481A2 (en) 2003-01-23 2004-08-05 Dexterra, Inc. System and method for mobile data update
JP2004326176A (ja) 2003-04-21 2004-11-18 Matsushita Electric Works Ltd 情報サーバ、情報サーバ用プログラムおよび情報システム
AU2003903994A0 (en) * 2003-07-31 2003-08-14 Canon Kabushiki Kaisha Collaborative editing with automatic layout
US7296023B2 (en) * 2004-01-15 2007-11-13 International Business Machines Corporation Method and apparatus for persistent real-time collaboration
US20060059481A1 (en) * 2004-09-16 2006-03-16 Rodney Smith Presenting, delivering and installing electronic downloads with an installed list
US7593943B2 (en) * 2005-01-14 2009-09-22 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
US7953794B2 (en) * 2005-01-14 2011-05-31 Microsoft Corporation Method and system for transitioning between synchronous and asynchronous communication modes

Also Published As

Publication number Publication date
CN1805394B (zh) 2010-05-26
KR20060083117A (ko) 2006-07-20
EP1681629A1 (en) 2006-07-19
US20110225242A1 (en) 2011-09-15
EP1681629B1 (en) 2009-11-18
DE602005017732D1 (de) 2009-12-31
US7953794B2 (en) 2011-05-31
KR101153137B1 (ko) 2012-06-04
US8150919B2 (en) 2012-04-03
JP2006195966A (ja) 2006-07-27
ATE449379T1 (de) 2009-12-15
CN1805394A (zh) 2006-07-19
US20060161585A1 (en) 2006-07-20

Similar Documents

Publication Publication Date Title
JP4927395B2 (ja) 同期通信モードと非同期通信モードの間で遷移するための方法およびシステム
JP4874640B2 (ja) 共有オブジェクトに対する複数ユーザ変更を同期させるための方法およびシステム
US11269852B2 (en) Method and apparatus for a file sharing and synchronization system
US20210203742A1 (en) Providing access to managed content
US6694335B1 (en) Method, computer readable medium, and system for monitoring the state of a collection of resources
US9166939B2 (en) Systems and methods for uploading media content in an instant messaging conversation
RU2337398C2 (ru) Способ и устройство для синхронизации того, как данные сохраняются в различных хранилищах данных
KR20200093606A (ko) 콘텐츠 아이템을 동기화하기 위한 커밋 프로토콜
US20050086384A1 (en) System and method for replicating, integrating and synchronizing distributed information
JP2005129018A (ja) オペレーション・システム・フォルダー式ファイル・システムにおけるコラボレーション・システムの属性を提供するための方法及び装置
EP1422901A1 (en) Client driven synchronization of file and folder content in web publishing
JP4247975B2 (ja) データ管理方法、データ管理システム、およびそのためのプログラムならびに記録媒体
US9813514B2 (en) Information repository system including a wireless device and related method
Lim et al. Design and implementation of a collaborative team-based cloud storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110622

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120116

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120203

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120209

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4927395

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250