(57)【要約】帯域適応コンピュータ・デバイスがデバイス通信を演算する方法およびシステムが説明される。帯域適応通信には、第一の参加者から通信を受信すること、通信のペイロード・データを第一の参加者に関連づけられたチャネル記憶要素に格納すること、およびペイロード・データを第二の参加者へ送信することが含まれる。本発明は、分散システムにおける複数の参加者間の帯域適応通信の方法を提供する。また本発明は、分散システムにおける複数の参加者間の帯域適応通信のための分散システムを提供する。
2009535994.tif 000002
【特許請求の範囲】
【請求項１】
分散システムにおける複数の参加者間の帯域適応通信の方法であって、
（ａ）第一の参加者からメタデータおよびペイロード・データを含む通信を受信することと、
（ｂ）複数のメモリ位置を備えるチャネル記憶要素に前記ペイロード・データを格納することであって、前記複数のメモリ位置のうちの一つは、前記メタデータを使用して選択され、かつ前記第一の参加者に関連づけられている、ことと、
（ｃ）前記ペイロード・データを第二の参加者へ送信することと
を含む、方法。
【請求項２】
ステップ（ａ）は、通信を第一の参加者から受信することを含み、前記通信は、参加者識別子およびペイロード・データを含む、請求項１に記載の方法。
【請求項３】
ステップ（ａ）は、通信を第一の参加者から受信することを含み、前記通信は、前記参加者の状態を表し、かつ、メタデータおよびペイロード・データを含む、請求項１に記載の方法。
【請求項４】
ステップ（ｂ）は、前記ペイロード・データを複数の配列位置のうちの一つに格納することを含み、前記複数の配列位置のうちの前記一つは、前記メタデータを使用して選択され、かつ、前記第一の参加者に関連づけられる、請求項１に記載の方法。
【請求項５】
ステップ（ｃ）は、前記配列を第二の参加者へ送信することを含む、請求項４に記載の方法。
【請求項６】
ステップ（ｃ）は、前記ペイロード・データを、前記第一の参加者からごく最近受信された前記第一の参加者のペイロード・データを識別する情報に応じて、第二の参加者へ送信することを含む、請求項１に記載の方法。
【請求項７】
ステップ（ｃ）は、前記ペイロード・データを第二の参加者からの要求に応じて前記第二の参加者へ送信することを含む、請求項１に記載の方法。
【請求項８】
ステップ（ｃ）は、前記ペイロード・データを第二の参加者からの要求に応じて前記第二の参加者へ送信することを含み、前記要求は、前記第二の参加者によりごく最近格納された前記第一の参加者のペイロード・データを識別する、請求項１に記載の方法。
【請求項９】
ステップ（ｃ）の前に前記第一の参加者から第二の通信を受信することをさらに含み、前記通信は第二のペイロード・データを含む、請求項１に記載の方法。
【請求項１０】
ステップ（ｃ）の前に前記第二のペイロード・データを前記第一の参加者に関連づけられた複数のメモリ位置のうちの一つに格納することをさらに含む、請求項９に記載の方法。
【請求項１１】
ステップ（ｃ）は、前記第二のペイロード・データを第二の参加者へ送信することを含む、請求項１０に記載の方法。
【請求項１２】
（ａ）メタデータおよびペイロード・データを含む通信を第二の参加者から受信することと、
（ｂ）前記ペイロード・データを、前記メタデータを使用して選択され、かつ前記第二の参加者に関連づけられた複数のメモリ位置のうちの一つに格納することと、
（ｃ）前記ペイロード・データを前記第一の参加者へ送信することと
をさらに含む、請求項１に記載の方法。
【請求項１３】
第二の通信を前記第一の参加者から受信することをさらに含み、前記通信は第二のペイロード・データを含む、請求項１に記載の方法。
【請求項１４】
前記第二の通信を前記第一の参加者に関連づけられた第二のメモリ位置に格納することをさらに含む、請求項１３に記載の方法。
【請求項１５】
分散システムにおける複数の参加者間の帯域適応通信のための分散システムであって、
状態データを送信する複数の参加者と、
サーバであって、（ｉ）前記複数のクライアントにより送信された前記状態データを受信することと、（ｉｉ）複数のメモリ位置を有する記憶要素に受信された状態データを格納することであって、前記複数のメモリ位置の各々は、前記複数の参加者のそれぞれに関連づけられている、ことと、（ｉｉｉ）前記複数の参加者のうちの１者から受信された前記状態データを、前記複数の参加者のその他各々へ送信することとを行う、サーバと
を備える、システム。
【請求項１６】
前記送信された状態データは、メタデータおよびペイロード・データを含む、請求項１５に記載のシステム。
【請求項１７】
前記送信された状態データは、参加者識別子およびペイロード・データを含む、請求項１５に記載のシステム。
【請求項１８】
前記サーバは、前記記憶要素の内容を前記複数の参加者のうちのその他各々へ送信する、請求項１５に記載のシステム。
【請求項１９】
前記サーバは、格納された状態データを参加者からの要求に応じ前記参加者へ送信する、請求項１５に記載のシステム。
【請求項２０】
前記サーバは、格納された状態データを参加者からの要求に応じて前記参加者へ送信し、前記要求は、送信されるべき前記状態データを識別する、請求項１５に記載のシステム。
【請求項２１】
前記サーバは、格納された状態データを、新しい状態データが受信された場合に上書きする、請求項１５に記載のシステム。
【請求項２２】
前記複数の参加者は、異なる帯域幅を有する通信リンクを使用して前記サーバと通信し、前記更新は、帯域適応方式で前記参加者へ送信される、請求項１５に記載のシステム。
【請求項２３】
前記複数の参加者は、異なる帯域幅を有する通信リンクを使用して前記サーバと通信し、前記更新は、帯域適応方式で前記サーバへ送信される、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、同時係属中の米国特許出願第１１／３８１，７０２号（２００６年５月４日出願）の優先権を主張し、該米国特許出願の開示は、その全体が参照により本明細書に援用される。
【０００２】
本発明は、全般にはコンピュータ・デバイス間での使用目的の通信機構に関する。より詳細には、本発明は、分散コンピューティング・システムにおける使用目的の通信機構に関する。
【背景技術】
【０００３】
分散コンピューティング環境においては、各々が互いに通信する多数のコンピュータ・デバイス間の直接通信を提供することは困難である。解決策の一例は、１対Ｎのマルチキャスト・チャネルを使用することである。つまり、各コンピュータ・デバイス（例えば、オンライン・ミーティングまたはオンラインセミナーの参加者）がマルチキャスト・チャネルを作成し、他の全てのコンピュータ・デバイスが、他の全てのコンピュータ・デバイスのチャネルを予約する。そのような解決策では、Ｎ台のコンピュータ・デバイスを有するシステムがＮ本のチャネルおよびＮの二乗分のチャネル予約を必要とする。結果として、Ｏ（Ｎ２）状態を維持するための必要性が高まる。そのような解決策では、多台数のコンピュータ・デバイスのわりには拡張性が乏しい。
【発明の開示】
【課題を解決するための手段】
【０００４】
大まかに言って、本発明は、Ｎ二乗問題解決のために必要となるオーバーヘッドを回避する。一般に、本発明は、各コンピュータ・デバイスが予約する単一の共有チャネルを特徴とする。結果として、Ｎ１対Ｎのマルチキャスト・チャネルを使用する場合に必要とされるＮの二乗台分の予約およびＯ（Ｎ２）状態の代わりに、Ｎ台分の予約およびＯ（Ｎ）状態のみが必要とされる。各コンピュータ・デバイスは、各々の現在の状態を一組のパケットの形で共有チャネルに発行する。各コンピュータ・デバイスは、他のコンピュータ・デバイスの状態の最新情報を受信する。
【０００５】
また、場合によっては、本発明は、帯域適応方式でデータを伝搬する機能を特徴とする。これにより、低速（例えば５６Ｋ）および高速（例えばＴ１およびブロードバンド）の通信速度の両方を有するコンピュータ・デバイスが互いに干渉することなくシステムに参加できる。
【０００６】
ある様態においては、本発明は、分散システムの複数の参加者間の帯域適応通信の方法を特徴とする。本方法には、第一の参加者からの通信を受信すること、ペイロード・データをチャネル記憶要素に格納すること、およびそのペイロード・データを第二の参加者へ送信することが含まれる。通信には、メタデータおよびペイロード・データが含まれる。チャネル記憶要素には、複数のメモリ位置が含まれる。この複数のメモリ位置のうちの一つは、メタデータを使用して選択され、第一の参加者に関連づけられる。
【０００７】
ある実施形態においては、通信には、参加者識別子およびペイロード・データが含まれる。この通信は参加者の状態を表し、かつ、メタデータおよびペイロード・データを含むことが可能である。
【０００８】
別の実施形態においては、格納には、ペイロード・データの複数の配列位置のうちの一つへの格納が含まれる。この複数の配列位置のうちの一つは、メタデータを用いて選択され、第一の参加者に関連付けられる。
【０００９】
別の実施形態においては、送信には、第二の参加者への配列の送信が含まれる。送信にはまた、第一の参加者からごく最近受信された第一の参加者のペイロード・データを識別する情報に応じて、第二の参加者へペイロード・データを送信することが含まれ得る。送信にはまた、第二の参加者からの要求に応じて、第二の参加者へペイロード・データを送信することが含まれ得る。さらに、送信には、第二の参加者からの要求に応じて、第二の参加者へペイロード・データを送信することが含まれ得る。要求により、第二の参加者によりごく最近格納された第一の参加者のペイロード・データが識別される。
【００１０】
別の実施形態においては、本方法には、送信前に第一の参加者から第二の通信を受信することが含まれる。通信には、第二のペイロード・データが含まれる。さらに、本方法には、第二のペイロード・データを第一の参加者に関連づけられる複数のメモリ位置のうちの一つへ格納することが含まれる。
【００１１】
さらに別の実施形態では、本方法には、第二の参加者からの通信を受信すること、ペイロード・データを複数のメモリ位置のうちの一つへ格納すること、およびペイロード・データを第一の参加者へ送信することが含まれる。通信には、メタデータおよびペイロード・データが含まれる。複数のメモリ位置の一つは、メタデータを使用して選択され、第二の参加者に関連づけられる。
【００１２】
別の実施形態においては、本方法には、第一の参加者からの第二の通信の受信が含まれる。さらに、本方法には、第二の通信を第一の参加者に関連づけられた第二のメモリ位置へ格納することが含まれる。
【００１３】
別の様態においては、本発明は、複数の参加者間の帯域適応通信用の分散システムを特徴とする。本システムには、状態データを送信する複数の参加者およびサーバが含まれる。サーバは、複数のクライアントにより送信される状態データを受信し、受信した状態データを複数のメモリ位置を有する記憶要素に格納し、かつ、複数の参加者のうち１者から受信された状態データを複数の参加者のうちのその他各々へ送信する。複数のメモリ位置の各々は、複数の参加者の各々に関連づけられる。
【００１４】
上記考察は、添付の図面と関連して解釈されると、本発明の以下の詳細な説明からより容易に理解されるであろう。
【発明を実施するための最良の形態】
【００１５】
図１を参照すると、オンライン・コラボレーションなどに使用可能な分散コンピューティング環境１００には、通信ネットワーク１４０を介して１台以上のサーバ・コンピュータ・デバイス１５０（以降、各サーバ・コンピュータ・デバイスまたは複数のコンピュータ・デバイスを総じてサーバ１５０と称する）と通信する１台以上の参加コンピュータ・デバイス１１０Ａ、１１０Ｂ〜１１０Ｆ（以降、各参加コンピュータ・デバイスまたは複数のコンピュータ・デバイスを総じて参加者１１０と称する）が含まれる。ネットワーク１４０は、ローカルエリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ−ａｒｅａ  ｎｅｔｗｏｒｋ）、中規模ネットワーク（ＭＡＮ：ｍｅｄｉｕｍ−ａｒｅａ  ｎｅｔｗｏｒｋ）もしくは、インターネットまたはワールド・ワイド・ウェブなどのワイド・エリア・ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）であることもある。参加者１１０のユーザは、標準電話回線、ＬＡＮまたはＷＡＮリンク（例えばＴ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、Ｆｒａｍｅ  Ｒｅｌａｙ、ＡＴＭ）および無線接続に限定されるわけではないが、これらを含む様々な接続のいずれか一つを用いて通信リンク１２０を介してネットワーク１４０に接続する。接続を、様々な通信プロトコル（例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳおよび直接非同期接続）を用いて確立することが可能である。
【００１６】
別の実施形態においては、参加者１１０は、ネットワーク１４０を第二のネットワーク１４０’に接続する通信リンク１８０を介して第二のネットワーク１４０’を経由してサーバ１５０と通信する。通信リンク１８０を介した通信に使用されるプロトコルには、長距離または短距離送信用に使用される様々なプロトコルのいずれもが含まれ得る。例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、ＮｅｔＢＥＵＩ、ＳＯＮＥＴおよびＳＤＨプロトコルである。ネットワーク１４０と１４０’の組み合わせは、概念的にインターネットとして考えることが可能である。本明細書で用いられるように、インターネットは、コンピュータ・ネットワークと世界中の組織的なコンピュータ施設をつなぐ電子通信ネットワークを意味する。
【００１７】
参加者１１０は、パーソナル・コンピュータ、サーバ、ウィンドウズ（登録商標）・ベース端末、ネットワーク・コンピュータ、無線デバイス、情報家電、ＲＩＳＣパワーＰＣ、Ｘデバイス、ワークステーション、ミニコンピュータ、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、汎用型コンピュータ、携帯電話、または参加者ソフトウェアおよびオペレーティング・システムを実行するのに十分な機能を提供するその他のコンピュータ・デバイスのいずれかであることもある。参加者１１０上で実行する参加者ソフトウェアは、参加者１１０とサーバ１５０との間で確立される共有通信チャネルの読込みおよび書き込み機能を提供する。
【００１８】
サーバ１５０は、１者以上の参加者１１０と通信可能なコンピュータ・デバイスならどのような種類であってもよい。例えば、サーバ１５０は、従来のサーバ・コンピュータ・デバイス、ウェブ・サーバ、アプリケーション・サーバ、ＤＮＳサーバ、またはその他の種類のサーバであることもある。さらに、サーバ１５０は、参加デバイスとして挙げられるコンピュータ・デバイスのいずれかであることもある。さらに、サーバ１５０は、サーバ・ソフトウェアおよびオペレーティング・システムを実行するのに十分な機能を提供するその他のコンピュータ・デバイスのいずれかであることもある。サーバ１５０上で実行するサーバ・ソフトウェアは、参加者１１０とサーバ１５０との間の共有通信チャネルを作成する機能を提供する。サーバ・ソフトウェアにより提供される付加的な機能には、それだけに限定される訳ではないが、共有通信チャネルの読込みおよび書き込みが含まれる。
【００１９】
ある実施形態においては、各チャネルが、参加者１１０とサーバ１５０との間の異なる種類の通信を伝送する。例えば、オンライン・ミーティング環境では、第一の通信チャネルが出席している参加者１１０からサーバ１５０へスクリーン・データを伝送し、サーバ１５０は、そのスクリーン・データを他の参加者１１０に配信する。第二の通信チャネルは、以下でより詳細に説明される通り、参加者間にリアルタイム通信（例えば、チャット情報、名刺情報、質疑応答情報、ポーリング情報、セッション・フィードバック情報、音声データ、ビデオ・データ、分散制御情報、状態情報など）を提供するために共有される。
【００２０】
図２は、参加者１１０の概念ブロック図を示す。参加者１１０の他の実施形態には、以下の要素の任意の組み合わせ、または明確に記載されていない他の要素が含まれ得ることが理解されよう。ある実施形態においては、各参加者１１０が、一般にプロセッサ２００、揮発性メモリ２０４、オペレーティング・システム２０８、参加者ソフトウェア２１２、永続性記憶装置２１６（例えばハード・ドライブまたは外付けハード・ドライブ）、ネットワーク・インターフェース２２０（例えば、ネットワーク・インターフェース・カード）、キーボード２２４またはＰＤＡの場合は仮想キーボード、参加者１１０との電子通信の際の少なくとも１つの入力デバイス２２８（例えば、マウス、トラックボール、スペース・ボール、ライトペンおよびタブレット、タッチ・スクリーン、スタイラスならびにその他の任意の入力デバイス）、ならびにディスプレイ２３２を含む。オペレーティング・システム１１６には、限定するものではないが、ＷＩＮＤＯＷＳ（登録商標）  ３．ｘ、ＷＩＮＤＯＷＳ（登録商標）  ９５、ＷＩＮＤＯＷＳ（登録商標）  ９８、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ３．５１、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ４．０、ＷＩＮＤＯＷＳ（登録商標）  ２０００、ＷＩＮＤＯＷＳ（登録商標）  ＸＰ、ＷＩＮＤＯＷＳ（登録商標）  ＶＩＳＴＡ、ＷＩＮＤＯＷＳ（登録商標）  ＣＥ、ＭＡＣ／ＯＳ、ＪＡＶＡ（登録商標）、ＰＡＬＭ  ＯＳ、ＳＹＭＢｌＡＮ  ＯＳ、ＬＩＮＳＰＩＲＥ、ＬＩＮＵＸ、ＳＭＡＲＴＰＨＯＮＥ  ＯＳ、ＵＮＩＸ（登録商標）の様々な形態、ＷＩＮＤＯＷＳ（登録商標）  ２０００  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ２０００  ＡＤＶＡＮＣＥＤ  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ＳＥＲＶＥＲ  ＥＮＴＥＲＰＲＩＳＥ  ＥＤＩＴＩＯＮ、ＭＡＣＩＮＴＯＳＨ  ＯＳ  Ｘ  ＳＥＲＶＥＲ、ＵＮＩＸ（登録商標）、ＳＯＬＡＲＩＳ、ＶＭＷＡＲＥなどが含まれ得る。
【００２１】
参加者ソフトウェア２１２は、本発明の機能を提供するため、参加者１１０の様々な構成要素（例えば、オペレーティング・システム２０８）と通信している。一般的に、参加者ソフトウェア２１２は、共有チャネルのローカル・コピーを作成、保持する。参加者ソフトウェア２１２は、共有チャネルへのデータの読み書き手段を提供し、変更点を他の参加者１１０およびサーバ１５０に送信する。
【００２２】
図３を参照すると、サーバ１５０の実施形態が示されている。サーバ１５０の他の実施形態には、以下の要素の任意の組み合わせ、または明確に記載されていない他の要素が含まれ得ることが理解されよう。サーバ１５０は、プロセッサ３００、揮発性メモリ３０４、オペレーティング・システム３０８、サーバ・ソフトウェア３１２、永続性記憶装置３１６、ネットワーク・インターフェース３２０、キーボード３２４、少なくとも１つの入力デバイス３２８（例えば、マウス、トラックボール、スペース・ボール、バーコード・リーダ、スキャナ、ライトペンおよびタブレット、スタイラスならびにその他の任意の入力デバイス）、ならびにディスプレイ３３２を含む。別の実施形態においては、サーバ１５０は「ヘッドレス」モードで動作する。サーバ・オペレーティング・システムには、ＷＩＮＤＯＷＳ（登録商標）  ３．ｘ、ＷＩＮＤＯＷＳ（登録商標）  ９５、ＷＩＮＤＯＷＳ（登録商標）  ９８、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ３．５１、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ４．０、ＷＩＮＤＯＷＳ（登録商標）  ２０００、ＷＩＮＤＯＷＳ（登録商標）  ＸＰ、ＷＩＮＤＯＷＳ（登録商標）  ＶＩＳＴＡ、ＷＩＮＤＯＷＳ（登録商標）  ＣＥ、ＭＡＣ／ＯＳ、ＪＡＶＡ（登録商標）、ＰＡＬＭ  ＯＳ、ＳＹＭＢｌＡＮ  ＯＳ、ＬＩＮＳＰＩＲＥ、ＬＩＮＵＸ、ＳＭＡＲＴＰＨＯＮＥ  ＯＳ、ＵＮＩＸ（登録商標）の様々な形態、ＷＩＮＤＯＷＳ（登録商標）  ２０００  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ２０００  ＡＤＶＡＮＣＥＤ  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ＳＥＲＶＥＲ、ＷＩＮＤＯＷＳ（登録商標）  ＮＴ  ＳＥＲＶＥＲ  ＥＮＴＥＲＰＲＩＳＥ  ＥＤＩＴＩＯＮ、ＭＡＣＩＮＴＯＳＨ  ＯＳ  Ｘ  ＳＥＲＶＥＲ、ＵＮＩＸ（登録商標）、ＳＯＬＡＲＩＳ、ＶＭＷＡＲＥなど、これらに限定される訳ではないが、これらが含まれ得る。
【００２３】
サーバ・ソフトウェア３１２は、本発明の機能を提供するために、サーバ１５０の様々な構成要素（例えば、オペレーティング・システム３０８）と通信している。一般的な事として、サーバ・ソフトウェア３１２は、共有チャネルを作成し、かつ共有チャネルの状態のローカル・コピーを保持する。サーバ・ソフトウェア３１２は、変更点を他の参加者１１０または他のサーバ１５０に送信する手段を提供する。
【００２４】
図４を参照すると、環境１００内で使用されるように共有通信チャネル４００の実施形態が図示されている。共有通信チャネル４００は、参加者１１０が予約する単一のチャネルである。各参加者１１０は、共有通信チャネル４００のローカル・コピー２３６Ａ、２３６Ｂ、２３６Ｃ、２３６Ｄ、２３６Ｅ、２３６Ｆ、２３６Ｇ（以降、ローカル・コピー２３６と称する）を保持する。概念的なレベルでは、共有通信チャネル４００を、複数のメモリ位置４１０またはフィールドを有する単一のデータ・オブジェクト（例えば、チャネル記憶要素）として考えることが可能である。これらのメモリ位置４１０またはフィールドを概念的にチャネルにおける「スロット」として考えることが可能である。示されるように、共有データ・チャネルには、フィールドをいくつでも用いることが可能ではあるが、共有チャネル４００の状態を集合的に表す１２のフィールド４１０（すなわち、４１０Ａ、４１０Ｂ、４１０Ｃ、４１０Ｄ、４１０Ｅ、４１０Ｅ’、４１０Ｅ”、４１０Ｆ、４１０Ｆ’、４１０Ｇ、４１０Ｇ’、４１０Ｇ”）が含まれる。１参加者１１０またはサーバ１５０は、自身に関連づけられたフィールド４１０を０個以上有する。例えば、図４に示されるように参加者１１０Ｇは、自身に関連づけられた３フィールド、４１０Ｇ、４１０Ｇ’、４１０Ｇ”を有する。たとえ図示されていなくとも、サーバ１５０は、自身に関連づけられたフィールドを０個以上有することが可能であることが理解されよう。
【００２５】
各フィールド４１０は、各データ・パケット４１４（すなわち、すなわち４１４Ａ、４１４Ｂ、４１４Ｃ、４１４Ｄ、４１４Ｅ、４１４Ｅ’、４１４Ｅ”、４１４Ｆ、４１４Ｆ’、４１４Ｇ、４１４Ｇ’、４１４Ｇ’）を格納する。各参加者は、共有チャネルのメモリ位置４１０の各々を読むことができるが、各参加者１１０に関連づけられているこれらのメモリ位置４１０にしか書き込みができない。各データ・パケット４１４には、メタデータおよびペイロード・データが含まれる。メタデータには、これに限定される訳ではないが、参加者ＩＤ、メモリ位置ＩＤなどが含まれ得る。ペイロード・データには、これに限定される訳ではないが、通信データ、チャット・データ、状態データ、ビデオ・データ、分散制御データなどが含まれ得る。ある実施形態においては、各フィールド４１０は、１つ以上の配列位置を含む。各配列位置は、メタデータおよびペイロード・データのうち一つを格納する。配列位置は、概念的に共有チャネル４００の各スロット内のサブスロットとして考えることが可能である。
【００２６】
図５を参照すると、参加者ソフトウェア２１２の動作方法５００の実施形態が説明されている。上述したように、各参加者は、共有チャネル４００の状態のローカル・コピーを保持する。参加者１１０は、ペイロード・データを共有チャネル４００のローカル・コピーの関連づけられたメモリ位置４１０へ書き込む（ステップ５１０）。参加者ソフトウェア２１２は、データ・パケット４１４を生成するためパケット識別子をペイロード・データに割り当てる（ステップ５２０）。ある実施形態においては、参加者１１０をサーバ１５０に接続している帯域幅が許せば、参加者ソフトウェア２１２は、新しいパケットをサーバ１５０へ送信する（ステップ５３０）。
【００２７】
ある実施形態においては、参加者ソフトウェア２１２が、単調増加するパケット識別子を割り当てる（ステップ５２０）。本願においては、単調性（ｍｏｎｏｔｏｎｉｃ）は、一方向のみの変化を意味し、したがって、狭義増加あるいは狭義減少のどちらかを意味するが、逆方向の変化ではない。別の実施形態においては、他のパケット識別子が用いられることも理解されよう。単調増加するパケット識別子の使用は、共有通信チャネル４００のローカル・コピー２３６とサーバ１５０により格納される共有通信チャネル４００の最新の状態データとの間の同期化を許可する手段となる。
【００２８】
パケット４１４の共有通信チャネル４００への送信（ステップ５３０）は、参加者の書き込み動作の完了後に発生する。ある実施形態においては、送信は、参加者１１０とサーバ１５０との間の帯域幅が利用可能となった場合に発生する。この機能は、帯域適応送信モジュールを提供する。例えば５６ｋモデムを使用して参加者１１０Ａがサーバ１５０へ接続されていると過程すると、参加者１１０Ａとサーバ１５０との間の変更が伝えられるスピードは、参加者１１０Ａとサーバ１５０がＴ１回線により接続される場合とはるかに異なる。このように、参加者１１０Ａは、帯域幅が送信を許可するまで待機する。このような同様の帯域適応原理は、参加者１００がパケット４１４をサーバ１５０から受信する際にも適用される。
【００２９】
図６を参照すると、サーバ・ソフトウェア３１２の動作方法６００が図示されている。サーバ１５０は、パケット４１４を含む通信を参加者１１０から受信する（ステップ６１０）。それに応じてサーバ・ソフトウェア３１２がパケットを関連づけられたメモリ位置４１０に格納する（ステップ６２０）。メモリ位置４１０を変更すると、サーバ・ソフトウェアが共有チャネル４００の状態データを他の参加者１１０へ送信し始める（ステップ６３０）。
【００３０】
ある実施形態においては、格納（ステップ６２０）には、サーバ・ソフトウェア３１２が新たなパケット４１４を用いて関連づけられたメモリ位置４１０の内容を上書きすることが含まれる。関連づけられたメモリ位置４１０の内容を上書きする前に、サーバ・ソフトウェアはパケット識別子を比較し、受信されたパケットが実際に現在のパケットより新しいものであるかを判断する。一部の参加者１１０をサーバ１５０へ接続する帯域幅に制限がある場合ならびに、多数のサーバ１５０、あるいは、サーバ・ソフトによる一部のパケット４１０がメモリ位置に格納されている現在のパケットより実際に古いこともあるピア・ツー・ピア接続がシステムに含まれる場合、問題が発生することがある。これらの問題は、以下で詳細に説明される。
【００３１】
ある実施形態においては、送信（ステップ６３０）には、共有通信チャネル４００の内容全体を他の各参加者１１０へ送信することが含まれる。送信は、マルチキャスト方式またはその他の方式で行うことが可能である。別の実施形態においては、更新されたメモリ位置４１０のみが参加者へ送信される。別の言い方をすれば、サーバ・ソフトウェア３１２が、共有チャネルの内容を各参加者に同期させる。この同期化は、サーバ１５０から参加者１１０への「プッシュ」、または参加者からの「プル」のどちらかを用いて行われる。このそれぞれを以下に詳述する。
【００３２】
サーバ１５０からのプッシュの場合、共有チャネル４００の状態の移行履歴が、サーバ１５０により各参加者１１０用に保持される。サーバ１５０が新しいパケット４１０を受信した場合、サーバ・ソフトウェア３１２が、共有通信チャネル４００の現在の状態を移行履歴の記録と比較し、どのパケット４１４を参加者１１０に送信するかを判断する。新しいパケット４１４を参加者に送信する前に、サーバ・ソフトウェアは、指示を受信するか、または、参加者１１０をサーバ１５０へ接続する帯域幅が、通信を完了させるために利用可能かを判断する。帯域幅が利用可能ならば、新しいパケットが送信される。帯域幅が利用可能でないなら、新しいパケットは送信されず、代わりに、帯域幅が利用可能になる際に移行履歴に対する新たな比較が行われ、新しいパケット全てが送信される。このように共有通信チャネル４００に対する中間変更が捕捉され参加者へ送出される。
【００３３】
プル・モデルでは、各参加者１００が、サーバ１５０に定期的に共有通信チャネル４００の状態の変化に関して問い合わせる。ある実施形態においては、新しいパケットが参加者１１０からサーバ１５０へ送出されるたびに、他の参加者１１０の任意の新しいパケットに関する要求が含まれる。別の実施形態においては、各参加者１１０が、サーバ１５０に対し所定ミリ秒または期間ごとに問い合わせる。さらに別の実施形態では、各参加者１１０がサーバ１５０に対し、サーバ１５０と参加者１１０を接続する帯域幅が更新を受信できるようになった場合に問い合わせをおこなう。問い合わせの一部として、共有チャネルのローカル・コピー２３６の現在の状態がサーバ１５０に送信される。サーバ・ソフトウェア３１２は、ローカル・コピー２３６と共有通信チャネル４００の現在の状態とを比較し、どのパケットを要求を出している参加者１１０に送信するかを判断する。
【００３４】
説明された同期化方法は、参加者１１０とサーバとの間の共有通信チャネル４００の状態の「ゆるい」同期を提供する。参加者１１０のローカル・コピー２３６は、同期化の仕組みが変更を伝搬する過渡期の間異なる。十分な時間があり、かつ何も新たな変更がないとすれば、ローカル・コピー２３６の各々は、共有通信チャネル４００と同一状態になるであろう。サーバ１５０と参加者１１０との間の通信リンクの帯域幅が制限されると、参加者用の関連づけられたメモリ位置４１０が、参加者１１０により１回以上更新された後に、新たなパケット４１０がサーバ１５０に送信されることもあるということに注意しなければならない。同様の原理が、サーバからのパケット４１４の受信に適用されることが理解されよう。ここに説明された同期化は、参加者１１０からサーバ１５０への、またはその逆でサーバ１５０から参加者１１０への全パケットの配信を保証しない。この同期化では、帯域幅が利用可能になった場合、ごく最近のパケットの配信のみが保証される。この相対的に不十分な配信保証により、分散コンピューティング環境のそのような帯域適応性が説明される。というのも、その保証により、より低速な通信リンク１２０を有する参加者１１０とサーバ１５０が、より高速な通信リンクを有する参加者１１０とサーバ１５０とお互いに影響しあうことなく共存できるためである。より低速な（つまり帯域幅が限定された）リンクで接続された参加者１１０とサーバ１５０は、より高速な通信リンク１２０（つまりより高帯域幅のリンク）で接続された参加者１１０とサーバ１５０とが全更新を受信し得る期間に、少しの更新しか受信しない。
【００３５】
図７Ａから図７Ｆを参照すると、例が図詳されている。以下の例には、共有通信チャネル４００および３参加者１１０Ａ、１１０Ｂ、１１０Ｆのローカル・コピー２３６Ａ、３２６Ｂ、２３６Ｆが含まれる。簡潔にするために、各パケット４１４が一つの数字で表されている。各数字がパケット４１４のメタデータおよびペイロード・データを表すことが理解されよう。本例においては、参加者のうちの２者１１０Ａ、１１０Ｂがサーバ１５０にＴ１接続により接続され、かつ１参加者１１０Ｆがサーバ１５０に５６Ｋモデムにより接続されていることが前提とされている。
【００３６】
図７Ａでは、ローカル・コピー２３６および共有チャネル４００の各々の状態が一致している。図７Ｂにおいては、共有チャネルのローカル・コピー２３６Ａのメモリ位置４１０Ａの変化が、第一の参加者１１０Ａにより起こり、共有チャネル４００および他の２参加者へ伝搬される。第二の参加者２３６Ｂは、Ｔ１ラインにより接続されているのだが、参加者１１０Ａに関連づけられたメモリ位置４１０Ａの変更を受信する。しかし、第三の参加者２３６Ｆをサーバ１５０へ接続している帯域幅が狭いため、メモリ位置４１０Ａに関連づけられた新たなパケットは即座には受信されない。さらに、第二の参加者２３６Ｂに関連づけられたメモリ位置４１０Ｂのローカル・コピーへの変更が発生する。示されるように、共有通信チャネル４００のそれぞれのコピーの状態は異なっている。
【００３７】
図７Ｃでは、第二の参加者１１０Ｂによる変更が、共有チャネル４００および第一の参加者１１０Ａに伝搬される。しかし、帯域幅制限のためにメモリ位置４１０Ｂの変更が、第三の参加者１１０Ｆにより受信されていなかった。図７Ｄでは、第一の参加者１１０Ａに関連づけられたメモリ位置４１０Ａの別の変更が、第二の参加者１１０Ｂへ伝搬される。しかし、第三の参加者１１０Ｆがメモリ位置４１０Ｂに対する変更を受信中であるため、第三の参加者は、このとき、第一の参加者１１０Ａから変更を受信しない。
【００３８】
図７Ｅでは、第一の参加者が自身のメモリ位置４１０Ａへ別の変更（すなわちパケット４）を書き込む。共有チャネル４００は、その変更を受信し、かつ、第二の参加者１１０Ｂおよび第三の参加者１１０Ｆへその変更を転送する。図７Ｆにおいて示されるように、しばらくして、共有チャネルのローカル・コピー２３６の各々が結局は同一状態になる。しかし図解されるように、共有チャネルのローカル・コピー２３６の各々は、更新期間中に異なる状態を有することが可能であり、かつ、ローカル・コピー全てがありとあらゆる更新を受信するわけではない。更新がサーバ１５０から受信される方法で図解されているが、同一の原理が、変更を参加者１１０からサーバ１５０へ送信する際に適用されることが理解されよう。つまり、参加者１１０は、多数のパケットをローカル・コピー２３６の自身に関連づけられたメモリ位置４１０へ書き込むこともあり、そのパケットの中には、サーバ１５０および参加者１１０を接続している帯域幅の制限によりサーバ１５０へ送信されないものもある。
【００３９】
図８を参照すると、多数のサーバ１５０Ａ、１５０Ｂ、１５０Ｃを有する分散コンピューティング環境１００’が図詳されている。そのような環境においては、各サーバ１５０は、共有通信チャネル４００に対する更新を別のサーバ１５０から受信するので、参加者でもある。大規模オンライン・コラボレーション状態（例えば、数千の参加者を有するオンラインセミナー）においては、単一のサーバ１５０が参加者からの接続要求全てを管理、提供することは困難である。したがって、多数のサーバ１５０が、各サーバ１５０が扱わなければならない負荷のバランスを取るために用いられる。共有通信チャネル４００は、通信サーバ１５０および参加者１１０各々に対し、参加者数乗の通信スキームを必要せずにお互いが通信する手段を提供する。
【００４０】
そのような実施形態においては、サーバ１５０は、異なる帯域幅の割り当てを用いてお互いに通信し得る。したがって、上述の帯域適応特性が、サーバ１５０間ならびにサーバ１５０と参加者１１０との間の通信にも等しく適用される。
【００４１】
また、１参加者が多数のサーバ１５０と通信することも可能である。例えば、参加者１１０Ｆは、第一のサーバ１５０Ｂおよび第二のサーバ１５０Ｃと通信する。参加者１１０Ｆは、第一のサーバ１５０Ｂおよび第二のサーバ１５０Ｃの各々により認知されるように、共有チャネル４００の状態のローカル・コピーを保持する。そのような実施形態は、共有チャネル４００の状態に対して冗長性および耐障害性を提供する。
【００４２】
説明される発明の一例示的実装は、オンライン・ミーティングまたはオンラインセミナーを実行するためのオンライン・コラボレーション製品での使用である。オンライン・ミーティングは、通信サーバ１５０を介して通信する１者以上の参加者１１０で構成される。参加者数により１台以上の通信サーバ１５０が必要になる場合、多数の通信サーバ１５０が使用される可能性があることが理解されよう。オンライン・ミーティングにおいては、参加者のうちの１者が司会者であり、そのミーティングの流れを支配する。司会者は、スライドを用いたプレゼンテーションに相当したものであり得る一連の画像を送信する。司会者がスライドを表示するので、そのスライドに相当するページ画像が全視聴者に送信される。多くの実施形態においては、各スライドが多数のデータ・パケットにより表され、スクリーン共有データ用に指定された特定のチャネルを介して送信される。参加者１１０の各々は、「視聴者」に分類され、共有スクリーン・データを視聴する。視聴者と司会者との間の共有スクリーン・データの同期化は、信頼性のあるマルチキャスト・プロトコルを用いて行われる。この種の「共有」は、１対Ｎタイプの通信の代表である。
【００４３】
スクリーン・データの共有に加え、視聴者と司会者との間で「チャット」通信（例えば、視聴者間通信、ならびに視聴者と司会者間の通信）を可能にすることが望ましい。したがって、共有チャネル４００が、司会者と視聴者との間でチャット・データを伝送するために確立される。各視聴者は、オンライン・ミーティングのチャット機能を有効にするために共有チャネルの予約だけをすれば十分である。視聴者がチャット・メッセージを打ち込むたびに、共有チャネルの視聴者の各フィールド４１０が新たなメッセージ・ペイロードで更新される。それに応じて、更新されたチャット・データが、上述のように別の視聴者および司会者に送信される。この種の「共有」は、Ｎ対Ｎタイプの通信の代表である。
【００４４】
分散コンピューティング環境１００で動作可能なオンライン・コラボレーション製品が多数ある。例示的製品には、これに限定される訳ではないが、カリフォルニア州サンタバーバラにあるＣｉｔｒｉｘ  Ｏｎｌｉｎｅ  ＬＬＣにより提供されるＧＯＴＯＭＥＥＴＩＮＧおよびＧＯＴＯＷＥＢＩＮＡＲが含まれる。後述される特定の様態および特徴は、そのような製品により具現化が可能である。その他には、カリフォルニア州サンタクララにあるＷｅｂＥｘ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ，  Ｉｎｃにより提供されるＷＥＢＥＸ  ＥＭＸ、ＷＥＢＥＸ  ＥＮＴＥＲＰＲＩＳＥ  ＥＤＩＴＩＯＮ、ＷＥＢＥＸ  ＥＶＥＮＴ  ＣＥＮＴＥＲ、ＷＥＢＥＸ  ＧＬＯＢＡＬＷＡＴＣＨ、ＷＥＢＥＸ  ＭＥＥＴＩＮＧ  ＣＥＮＴＥＲ、ＷＥＢＥＸ  ＭＥＥＴＭＥＮＯＷ、ＷＥＢＥＸ  ＰＲＥＳＥＮＴＡＴＩＯＮ  ＳＴＵＤＩＯ、ＷＥＢＥＸ  ＳＡＬＥＳ  ＣＥＮＴＥＲ、ＷＥＢＥＸ  ＴＲＡＩＮＩＮＧ  ＣＥＮＴＥＲ、ＷＥＢＥＸ  ＷＥＢＯＦＦＩＣＥ、およびＷＥＢＥＸ  ＷＯＲＫＳＰＡＣＥが含まれる。別の例としては、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより提供されるＬＩＶＥＭＥＥＴＩＮＧ製品もある。
【００４５】
上述の実施形態は、プログラムおよび／または工学技術を用いてソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを製造する方法、装置もしくは製品として実装されてもよい。本願で用いられる「製品」という言葉は、１つ以上のコンピュータ可読デバイス、ファームウェア、プログラマブル・ロジック、メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＳＲＡＭなど）、ハードウェア（例えば、集積回路チップ、フィールド・プログラマブル・ゲート・アレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）など）、電子デバイス、コンピュータ可読不揮発性ストレージ・ユニット（例えば、ＣＤ−ＲＯＭ、フロッピー（登録商標）・ディスク、ハード・ディスク・ドライブなど）、ネットワーク送信ラインを介したプログラムへのアクセスを提供するファイル・サーバ、無線送信媒体、宇宙を介して伝搬する信号、電波、赤外線信号などからのアクセスが可能で、かつ、それらに組み込まれる符号または論理を含むことを意図している。製品には、ハードウェア論理、ならびにプロセッサにより実行されるコンピュータ可読媒体に組み込まれるソフトウェアまたはプログラマブル・コードが含まれる。もちろん、当業者は、本発明の範囲を逸脱することなくこの設定に多くの修正が加えられてもよいことを理解するであろう。
【００４６】
本発明が特定の詳細を参照して説明されてきたが、そのような詳細が、添付の請求項に含まれることを除きかつその範囲で、本発明の範囲の制限として見なされるべきであることを意図するものではない。
【図面の簡単な説明】
【００４７】
【図１】図１は、分散コンピューティング環境の実施形態を示す。
【図２】図２は、図１の分散コンピューティング環境の参加者コンピュータ・デバイスの実施形態を示す。
【図３】図３は、図１の分散コンピューティング環境のサーバ・コンピュータ・デバイスの実施形態を示す。
【図４】図４は、共有通信チャネルの実施形態のブロック図である。
【図５】図５は、図２の参加者コンピュータ・デバイスの参加者ソフトウェアの動作方法の実施形態のフローチャートである。
【図６】図６は、図２のサーバ・コンピュータ・デバイスのサーバ・ソフトウェアの動作方法の実施形態のフローチャートである。
【図７Ａ】図７Ａは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図７Ｂ】図７Ｂは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図７Ｃ】図７Ｃは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図７Ｄ】図７Ｄは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図７Ｅ】図７Ｅは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図７Ｆ】図７Ｆは、本発明の実施形態の例示的使用を図示するために使用される共有通信チャネルのブロック図である。
【図８】図８は、本発明の原理が実践可能な分散コンピューティング環境の別の実施形態を示す。
【図１】
2009535994.tif 000003
【図２】
2009535994.tif 000004
【図３】
2009535994.tif 000005
【図４】
2009535994.tif 000006
【図５】
2009535994.tif 000007
【図６】
2009535994.tif 000008
【図７Ａ】
2009535994.tif 000009
【図７Ｂ】
2009535994.tif 000010
【図７Ｃ】
2009535994.tif 000011
【図７Ｄ】
2009535994.tif 000012
【図７Ｅ】
2009535994.tif 000013
【図７Ｆ】
2009535994.tif 000014
【図８】
2009535994.tif 000015
【国際調査報告】
2009535994.tif 000016
2009535994.tif 000017
2009535994.tif 000018