(57)【要約】  コンピューティングシステムがサーバの階層セットを含む。階層セットは、マスタサーバ及び１つ又は複数のスレーブサーバを含む。マスタサーバ及びスレーブサーバは、通信ネットワークを介して少なくとも１つの非インテリジェントユーザシステムと通信する。マスタサーバは各非インテリジェントユーザシステムへの全アクセスを有する。マスタサーバは、各スレーブサーバに関する非インテリジェントユーザシステム（複数可）へのアクセス許可を制御する。各上位スレーブサーバは、サブレベルのスレーブサーバ（複数可）に関する非インテリジェントユーザシステム（複数可）へのアクセス許可を制御することができる。マスタサーバ、又はアクセスが許可された場合にスレーブサーバは、非インテリジェントユーザシステムのディスプレイ内にウィンドウを作成し、そのウィンドウに記入するためのピクセルを送信するために、このウィンドウへのアクセスを任意の下位レベルのスレーブサーバに与えることができる。ピクセルは、ブラウザ又はスプレッドシートなどのアプリケーションのグラフィック出力とすることが可能であり、又はピクセルは（ライブ又はハードドライブから読み取ったいずれかの）ビデオとすることができる。サーバの他のアプリケーションでは、サーバシステムは、ユーザシステムの構成要素で出力を制御し、すべてネットワークを介した通信により、ユーザシステムの構成要素及び周辺装置から入力を受信することができる。それぞれの非インテリジェントユーザシステムへのアクセスは、サーバの階層セットのマスタサーバ及び各上位レベルのスレーブサーバによって指示される。構成要素及び周辺装置の入力を表すデータは、多重化され、ユーザシステムによりネットワークを介して通信され、ユーザシステムの構成要素の出力を表すデータは、ネットワークを介してユーザシステムによって受信され、ユーザシステムで出力のために逆多重化され、構成要素に送達される。【選択図】  図４
2014529367.tif 000002
【特許請求の範囲】
【請求項１】
マスタサーバ及び１つ又は複数のスレーブサーバを含む、サーバの階層セットと、
少なくとも１つの非インテリジェントユーザシステムと、
前記マスタサーバ及び前記少なくとも１つの非インテリジェントユーザシステムを接続する、ネットワークと、
を備えるコンピューティングシステム。
【請求項２】
前記少なくとも１つの非インテリジェントユーザシステムのそれぞれが、カメラ、マイクロフォン、スピーカ、プリンタ、フラッシュドライブ、ＧＰＳ受信器、及びウィンドウを表示するためのディスプレイからなる群から選択された、１つ又は複数の低レベルの構成要素を含み、
各ユーザシステムの各低レベルの構成要素の入力を表すデータが、多重化され、前記階層セットに前記ネットワークを介して前記ユーザシステムによって通信され、
前記ネットワークを介して前記階層セットから前記ユーザシステムによって受信される、各ユーザシステムの各低レベルの構成要素の出力を表すデータが、逆多重化され、前記低レベルの構成要素に送達され、
前記少なくとも１つの非インテリジェントユーザシステムのそれぞれが、入力を表すデータ及び出力を表すデータに関する制限された処理能力を含む、
請求項１に記載のコンピューティングシステム。
【請求項３】
各スレーブサーバによる前記ネットワークを介した通信可能なアクセスが、前記マスタサーバ及び前記階層セットにおける優先度を有する任意のスレーブサーバによって制御され、前記マスタサーバ及び前記階層セットにおける優先度を有する他のスレーブサーバのうちのいずれかによって適用可能な許可を認められる、請求項１に記載のコンピューティングシステム。
【請求項４】
少なくとも１つの入力／出力構成要素のユーザシステムとネットワークを介して通信するためのサーバシステムであって、
マスタサーバと、
前記マスタサーバに接続された少なくとも１つの第１のレベルのスレーブサーバとを備え、
前記マスタサーバが、前記ユーザシステムの前記入力／出力構成要素のうちの１つ又は複数を選択的に制御するために、前記第１のレベルのサーバのうちの任意の１つ又は複数が前記ネットワークを介して前記ユーザシステムにアクセスすることを許可することが可能である、
サーバシステム。
【請求項５】
従来のデスクトップ型ウィンドウユーザインターフェースが、前記マスタサーバと、前記マスタサーバによって前記ユーザシステムへのアクセスが許可された前記少なくとも１つの第１のレベルのスレーブサーバのいずれかとの単独又は組合せを介して、前記ユーザシステム上に対話的に表示され、
前記マスタサーバと、前記マスタサーバによって前記ユーザシステムへのアクセスが許可された前記少なくとも１つの第１のレベルのスレーブサーバのいずれかと通信する、前記ユーザシステムの選択的動作のために、ウィンドウフレームが前記ユーザシステムの前記ウィンドウユーザインターフェース内にそれぞれ作成され、
前記マスタサーバのいずれか、並びに前記マスタサーバによって許可された場合及び許可されたとき、前記少なくとも１つの第１のレベルのスレーブサーバのいずれかのそれぞれの１つ又は複数のアプリケーションユニットが、前記マスタサーバと、可能であれば前記マスタサーバによって前記ユーザシステムへのアクセスが許可された前記少なくとも１つの第１のレベルのスレーブサーバとの通信を介して、前記ユーザシステムの前記ウィンドウフレーム内にそれぞれ表示される、
請求項４に記載のサーバシステム。
【請求項６】
同じユーザの複数の前記ユーザシステムにサービスを提供することが可能であり、そのときに前記ユーザによる通信に採用されている前記ユーザシステムに基づいて動作を自動的に調整する、請求項４に記載のサーバシステム。
【請求項７】
前記マスタサーバと前記マスタサーバに接続された前記少なくとも１つの第１のレベルのスレーブサーバとの間の、アプリケーションプログラミングインターフェース（ＡＰＩ）に関するいずれの要件も不要である、請求項４に記載のサーバシステム。
【請求項８】
前記マスタサーバ、１つ又は複数のスレーブサーバ、及び前記階層セットからなる群の少なくとも１つに接続されたファイルシステムをさらに備え、
前記マスタサーバが、前記ファイルシステムのすべてのファイルにアクセス可能であり、任意の１つ又は複数のスレーブサーバが、前記マスタサーバと、選択ファイルへのアクセスが許可された前記階層セットの任意の高優先度スレーブサーバとによって、前記ファイルシステムのファイルを選択するためにアクセスを許可され得る、
請求項１に記載のコンピューティングシステム。
【請求項９】
前記ユーザシステムによる、前記マスタサーバ及び任意のそれぞれ１つ又は複数のスレーブサーバとのファイアウォールを経由する通信が開始されると、階層セットのうちの選択されたものが、前記ファイアウォールを経由して前記ユーザシステムと通信し、
前記マスタサーバが、前記ユーザシステムとの通信に関して、前記１つ又は複数のスレーブサーバのそれぞれによる、前記ファイアウォールを介する前記ユーザシステムへの通信可能なアクセス可能性に関する許可を制御する、
請求項１に記載のシステム。
【請求項１０】
ハイパーバイザをさらに備え、
マスタサーバ及び１つ又は複数の前記スレーブサーバの前記階層セットが、前記ハイパーバイザに接続された、仮想マスタサーバ及び少なくとも１つの仮想スレーブサーバを備える単一デバイスである、
請求項１に記載のコンピューティングシステム。
【請求項１１】
前記ユーザシステムが、前記仮想化されたマスタサーバ及び前記少なくとも１つの仮想化されたスレーブサーバの前記単一デバイスに含まれる、請求項１０に記載のコンピューティングシステム。
【請求項１２】
通信ネットワークを介してユーザデバイスのウィンドウにメッセージを出す方法であって、
マスタサーバによって複数のスレーブサーバのアクセス権を制御するステップであり、前記マスタサーバは前記ネットワークを介して前記ユーザデバイスへの全てのアクセスが可能である、制御するステップと、
サブレベルスレーブサーバとしての前記スレーブサーバのうちの少なくとも１つのアクセス権を、上位レベルのスレーブサーバとしての前記スレーブサーバのうちの少なくとも１つの他のスレーブサーバによって、制御するステップであり、前記少なくとも１つのサブレベルのスレーブサーバのそれぞれが、前記マスタサーバ及び前記上位レベルのスレーブサーバによって許可された場合及び許可されたときのみ、前記ネットワークを介して前記ユーザデバイスへアクセスできる、制御するステップと
を含む、方法。
【請求項１３】
前記通信ネットワークを介した前記ユーザデバイスとの前記マスタサーバの通信を介して、前記マスタサーバのために前記ユーザデバイスの前記ウィンドウの少なくとも１つを作成するステップと、
前記ユーザデバイスへのアクセスが許可された各スレーブサーバの前記通信ネットワークを介した通信を介して、各スレーブサーバのために前記ユーザデバイスの前記ウィンドウの各ウィンドウを、それぞれ作成するステップと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記ユーザデバイスの構成要素の入力を表すデータを、前記ユーザデバイスにより、前記ネットワークを介して、前記マスタサーバと前記ユーザデバイスへのアクセスが許可された少なくとも１つのスレーブサーバとのうちのいずれかに通信するステップをさらに含み、
前記通信の前記マスタサーバと前記少なくとも１つのスレーブサーバとのいずれかに格納されたアプリケーションプログラムが、前記ユーザデバイスの前記構成要素の入力を表す前記データを処理する、
請求項１３に記載の方法。
【請求項１５】
前記ユーザデバイスの構成要素の出力を表すデータを、前記ユーザデバイスによる前記通信するステップの前記マスタサーバ及び少なくとも１つのスレーブサーバのいずれかによって、前記ネットワークを介して前記ユーザデバイスに通信するステップをさらに含み、
出力を表す前記データが、前記ユーザデバイスによる出力である、
請求項１４に記載の方法。
【請求項１６】
出力を表す前記データが、ビデオ、オーディオ、テキスト、グラフィック、マルチメディア、及び組合せの群から選択された、前記ユーザデバイスによる出力である、請求項１５に記載の方法。
【請求項１７】
前記ユーザデバイスが、前記ユーザデバイスによる前記入力及び出力のための制限された処理能力を有する、請求項１４に記載の方法。
【請求項１８】
前記マスタサーバ及び前記スレーブサーバがそれぞれ、前記ユーザデバイスによって出力されるアプリケーションのためのそれぞれのユニットを含み、
前記ユーザデバイスが、前記それぞれのユニットの動作のために、前記ネットワークを介した通信を介して、前記それぞれのマスタサーバ及びスレーブサーバと通信し、
可能であれば、前記ユニットの前記マスタサーバ及びスレーブサーバのうちの対応するものによって、各それぞれのユニットについて別個のウィンドウが作成される、
請求項１４に記載の方法。
【請求項１９】
前記ユニットが、可能であれば、業務生産性ユニット(business productivity unit)、カレンダ、クロック、ビデオゲーム、写真現像ユニット、メディアプレーヤ、及び組合せの群から選択される、前記マスタサーバ及び各スレーブサーバそれぞれのためのものである、請求項１８に記載の方法。
【請求項２０】
前記ユーザシステムのウィンドウをさらに備え、前記ウィンドウのそれぞれが、前記マスタサーバにより前記ユーザシステムへのアクセスが許可された前記少なくとも第１のレベルのスレーブサーバの各それぞれのスレーブサーバについて、前記マスタサーバによって前記ユーザシステム上に固有に作成され、
前記ウィンドウ内で表示するためのピクセルを表すデータが前記ユーザシステムに通信されることによって、前記第１のレベルのスレーブサーバが前記ユーザシステムの前記ウィンドウにピクセルを記入する、
請求項４に記載のサーバシステム。
【請求項２１】
前記マスタサーバ、前記第１のレベルのスレーブサーバ、前記第１のレベルのスレーブサーバに対する他のスレーブサーバ、及びより上の階層の任意の他のスレーブサーバに対する他のスレーブサーバの群から選択された、少なくとも１つの上位レベルのサーバと、
前記第１のレベルのスレーブサーバ、前記第１のレベルのスレーブサーバに対する他のスレーブサーバ、及びより上の階層の任意の他のスレーブサーバに対する他のスレーブサーバの群から選択された、少なくとも１つの下位レベルのサーバと、
前記ユーザシステムのウィンドウであり、前記ウィンドウのそれぞれが、前記上位レベルのサーバにより前記ユーザシステムへのアクセスが許可された前記下位レベルのサーバのそれぞれの各サーバについて、任意の上位レベルのサーバによって及び前記マスタサーバが前記上位レベルのサーバでない場合には前記マスタサーバによって、前記ユーザシステム上に固有に作成される、ウィンドウとをさらに備え、
前記ウィンドウ内で表示するためのピクセルを表すデータが前記ユーザシステムに通信されることによって、前記下位レベルのスレーブサーバが前記ユーザシステムの前記ウィンドウにピクセルを記入する、
請求項４に記載のサーバシステム。
【請求項２２】
前記ピクセルが、典型的なデスクトップ型フレーム、前記下位レベルのサーバのアプリケーションプログラムのグラフィック出力、ブラウザ、スプレッドシート、ライブビデオ、及び前記下位レベルのサーバに格納されたビデオの群から選択される、請求項２１に記載のサーバシステム。
【請求項２３】
前記下位レベルのサーバの各それぞれのサーバのための前記ウィンドウの前記それぞれが、前記下位レベルのサーバが前記ユーザシステムでピクセルを記入できる唯一の位置である、請求項２１に記載のサーバシステム。
【請求項２４】
前記ウィンドウ内で前記ユーザシステムに前記上位レベルのサーバによって作成される第２のウィンドウをさらに備え、
前記上位レベルのサーバが、前記下位レベルのサーバのいずれかによる前記第２のウィンドウへのアクセスを許可する、
請求項２２に記載のサーバシステム。
【請求項２５】
前記第２のウィンドウへのアクセスが許可された前記下位レベルのサーバが、前記ウィンドウへのアクセスを許可されず、前記ユーザシステムで前記第２のウィンドウにピクセルを記入することが可能な、請求項２４に記載のサーバシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、同時係属であり、本出願と少なくとも１人の同一発明者を有し、本参照により本明細書に組み込まれた、以前の米国の国内出願である２０１１年６月１４日出願の「Hierarchical Display-Server System andMethod」と題する米国特許出願第１３／１６０１２２号の、優先権の利益を有する。
【技術分野】
【０００２】
本発明は、一般に、サーバデバイス及び通信ネットワークによって接続された非インテリジェントユーザデバイス(non-intelligent user device)に関し、より詳細には、限定された処理能力を備えるか又は処理能力をまったく備えていない、ディスプレイ、入出力、及びネットワーキングの構成要素を有するユーザデバイスに通信可能に接続された、マスタサーバデバイス及び階層スレーブサーバデバイス(hierarchical slave server device)を含む、ディスプレイ・サーバシステムに関する。
【背景】
【０００３】
長年にわたり、様々なタイプのコンピューティングシステムが存在している。そのうちの４つの主要なタイプが、サーバ、クライアント、クライアント・サーバ、及びディスプレイ・サーバである。すべてのタイプのコンピューティングシステムは、ユーザに対するコンピューティングタスクを実行する。
【０００４】
サーバシステムは、すべてのコンピューティングが中央位置で実行される単一のシステムからなり、このシステムには、初期のタスク開始以外のコンピューティングタスクとのユーザ対話は存在しない。典型的なサーバシステムは、従来のメインフレームである。
【０００５】
クライアントシステムは、すべてのコンピューティングを実行する単一のシステムからなるが、クライアントシステムではコンピューティングタスクとの継続的なユーザ対話が存在する。典型的なクライアントシステムは、パーソナルコンピュータ、ラップトップ、スマートフォン、及びゲームコンソールである。
【０００６】
クライアント・サーバシステムは、単一のコンピューティングタスクを合わせて実行する、サーバコンピューティングシステムとクライアントコンピューティングシステムの両方からなる。これらのシステムは、それぞれ別々にサーバシステム及びクライアントシステムの両方として動作する。サーバ及びクライアントの両方として動作するクライアント・サーバシステムは、少なくともタスク中でクライアントとして動作することに関連して、タスク中でユーザ対話を必要とする単一のコンピューティングタスクを実行する。現在使用されている典型的なクライアント・サーバシステムは、航空座席予約システム及び大型小売店販売時点管理システム(large retail store point-of-sale system)である。特殊なタイプのクライアント・サーバシステムは、ウェブサーバ／ブラウザクライアントである。任意のクライアント・サーバアプリケーションと同様に、ウェブサーバは単一の固有タスクを実行し、受け取った要求への応答を処理する。しかしながらブラウザプログラムは、固有のクライアントプログラムを各サーバプログラムに関連付けるのではなく、汎用クライアントプログラムとして働く。ブラウザはすべてのウェブサーバによって使用される。ブラウザは、現在、ブラウザ内で処理されるプログラムをオンザフライ(on the fly)でダウンロードすることによってアプリケーションを動作させることが可能であるため、ウェブブラウザ／サーバコンピューティングは、特にプログラムダウンロードの場合に、標準のクライアント・サーバコンピューティングと非常に類似していることに留意されたい。
【０００７】
ディスプレイ・サーバシステムは、サーバコンピューティングシステム及び非インテリジェントユーザ側システムからなる。この非インテリジェントユーザシステムの重要な態様が、ディスプレイである。そのため、ユーザシステムは時折「ディスプレイ」と呼ばれ、したがって、これらのタイプのコンピューティングシステム向けのディスプレイ・サーバシステムを言い表す。サーバのみのコンピューティングシステムと同様に、ほぼすべてのコンピューティングタスクがディスプレイ・サーバシステム内のサーバによって実行され、いくらかでもあるとすれば、わずかなコンピューティング（入力及び出力動作に必要な範囲以外）がディスプレイによって実行される。しかしながら、これらのディスプレイ・サーバシステムにおいて、ディスプレイはサーバによって処理されるコンピューティングタスクとかなりの対話を行う。ディスプレイは、いくらかでもあるとすれば非常に限られた処理能力のみを有するため、サーバは、（クライアントシステムタイプのコンピューティングシステムの）クライアントシステムのほぼすべての処理及び他の機能を実行する。実際に、ディスプレイは、サーバから受信された（ピクセルを表す）データに対応するピクセルをディスプレイによって表示するのみである。ほとんどの場合、（ディスプレイ用のピクセルを表す）データは、サーバによって（ビデオストリーム又は他のデータストリームなどの）表示のためにディスプレイに送達され、ディスプレイでの（キーストローク及びマウスの動きなどの）低レベルのユーザイベント(low-level user event)は、本来、ディスプレイによってサーバに送信される。
【０００８】
ディスプレイ・サーバコンピューティングは、現在のコンピューティングシステムに最も採用されていない構成であるが、ディスプレイ・サーバシステムは恩恵を与えることが可能であり、人気が高まることが予想される。典型的なディスプレイ・サーバコンピューティング環境は、ゼロクライアントコンピューティング(zero-client computing)と呼ばれる。ゼロクライアントコンピューティングでは、デスクトップオペレーティングシステム（ＯＳ）及びアプリケーションは、（典型的なパーソナルコンピュータなどの、クライアントシステムによってではなく）サーバによって処理される。ユーザ側システムは、しばしば、主として、ディスプレイ及びキーボード（又は他の入力及び出力デバイス（複数可））に結合された非インテリジェント「シンクライアント(thin-client)」デバイスである。
【０００９】
ディスプレイ・サーバコンピューティングが採用されている別の環境が、３Ｄゲームである。３Ｄゲームは、サーバシステム、一般には高性能サーバコンピュータによって処理され、サーバシステムは、ゲームのピクセルビデオストリームを、テレビ受像機に接続された非常に「シンクライアント」なユーザ側システムに送達する。ユーザ側システムで、従来のゲームコントローラ入力デバイスは、ゲームプレイ中にユーザの入力をサーバシステムに通信する。
【００１０】
したがって、より優れた動作柔軟性と改善された拡張可能性をディスプレイ・サーバシステムに提供することは有利なはずである。
【概要】
【００１１】
本発明の実施形態は、ディスプレイ「階層マルチサーバ(hierarchical multiple server)」システムを含む、ディスプレイ・サーバシステムである。ディスプレイ・サーバシステムは、被制御階層(controlled hierarchy)状に接続された複数のサーバデバイスにネットワークを介して接続された、１つ又は複数の非インテリジェントユーザシステム（ディスプレイ）を含む。
【００１２】
ユーザシステムは、ディスプレイと、キーボード、マウス、スピーカ、マイクロフォン、及び／又は他の同様の周辺デバイスなどの１つ又は複数の入出力構成要素と、通信ネットワークに通信可能に接続されたネットワークインターフェースコネクタとを含む。ユーザシステムは、ユーザによる周辺デバイスを介した入力／アクションを表す非常に低レベルのデータを、ネットワークを介して、ネットワークの通信可能なサーバシステムに送信する。同様にサーバシステムは、周辺デバイスへの応答などのサーバシステムによる動作の結果を表す非常に低レベルのデータを、ネットワークを介して、ディスプレイ又は他の周辺デバイスに通信する。こうして通信される低レベルのデータは、例えば、サーバシステムによってユーザシステムのディスプレイに送信されるピクセル（ビデオ）、キーボードによってサーバシステムに送信されるユーザシステムのキーボードへのユーザの入力、サーバシステムによってユーザシステムのスピーカに送信されるオーディオサンプルなどを表す。ユーザシステムの処理は限られており、例えばユーザシステムは、ネットワークに必要な可能性がある場合、通信の多重化及び逆多重化のみを実行することができる。多重化及び逆多重化は、例えばユーザシステムの構成要素内で採用されるネイティブデータタイプ(native data type)を、ネットワークを介した通信に好適なネットワークメッセージに、又はその逆に変換するために、必要となる可能性がある。
【００１３】
サーバは、単一のマスタサーバ及び複数セットのカスケードスレーブサーバ(cascading slave server)を伴い、階層状に配置構成される。マスタサーバは第１のレベルのスレーブサーバと通信し、第１のレベルのスレーブサーバは第２のレベルのスレーブサーバと通信する、という具合である。すべてのサーバは、ユーザシステムと直接通信可能である。マスタサーバは、ユーザシステムのそれぞれの構成要素すべてを完全な制御下におく。マスタサーバは、ユーザシステムのそれぞれの構成要素（複数可）を介して、階層状の各下位レベルのスレーブサーバにそれぞれ等しいか又はより少ない制御を提供する。マスタサーバは、あるとすればどの低レベルのサーバ（複数可）が構成要素に制御的にアクセスできるかを、ユーザシステム構成要素（複数可）に通知する。階層のそれぞれのスレーブサーバ及びマスタサーバによる、ユーザシステムのそれぞれの構成要素へのこの階層的アクセスは、サーバによる処理、及びユーザシステムの構成要素による入力／出力を、ユーザシステムに必要な重要な処理なしで、柔軟かつ極度にセキュアに可能にする。
【００１４】
ユーザシステム及び階層サーバシステムは、一般に互いにリモートに配置され、ユーザシステムとサーバシステムは、イーサネット、ＷｉＦｉ、３Ｇ、又は他のデータネットワークなどの物理通信ネットワークを介して、通信可能に接続される。しかしながら、ある代替形態では、ユーザシステム及びサーバシステムを単一の物理デバイス内に含めることが可能であり、この場合にネットワークはデバイスのローカルな配線又は他のローカルなリンクである。
【００１５】
組み合わされたユーザシステム及びサーバシステムは、非インテリジェントユーザシステム及び階層サーバシステム、単一物理デバイス、又は他の同様の配置構成の、いずれとして具体化されるかにかかわらず、本明細書では時折、階層ディスプレイ・サーバコンピューティング(hierarchical display-server computing)のために動作する階層ディスプレイ・サーバシステム(hierarchical display-server system)と呼ばれる。
【００１６】
本発明は、添付の図面において制限としてではなく例として示され、同じ参照番号は同様の要素を示す。
【図面の簡単な説明】
【００１７】
【図１】本発明のある実施形態に従った、ネットワークによって接続された階層サーバシステム及び２つの非インテリジェントユーザシステムを示す図である。
【図２】本発明のある実施形態に従った、２つの例示の典型的ユーザシステムである、例示のデスクトップユーザシステム及び例示のハンドヘルドユーザシステムを示す図である。
【図３】本発明のある実施形態に従った、例示のハンドヘルドユーザシステムの例示の構成要素を示す図である。
【図４】本発明のある実施形態に従った、サーバシステムの制御を通じて表示されるウィンドウを含む、例示のユーザシステムディスプレイに通信可能に接続された、例示の階層サーバシステムを示す図である。
【図５】本発明のある実施形態に従った、階層サーバシステムのマスタサーバ及びスレーブサーバがユーザシステムのそれぞれの構成要素に対して有する可能性のある、例示のアクセス／制御権を示す図である。
【図６】本発明のある実施形態に従った、階層ディスプレイ・サーバシステムの動作において、サーバシステムとユーザシステムとの間で通信される例示のメッセージを示す図である。
【図７】本発明のある実施形態に従った、ユーザシステムのディスプレイ及びスピーカの動作における、２つの例示のスレーブサーバを伴う例示のマスタサーバを示す図である。
【図８】本発明のある実施形態に従った、図７のマスタサーバと、スレーブサーバと、ユーザシステムのディスプレイ及びスピーカとの、それぞれの間の通信を示す図である。
【図９】本発明のある実施形態に従った、２つのユーザシステムそれぞれと通信し、ユーザシステムも互いに通信する、例示のサーバシステムを示す図である。
【図１０】本発明のある実施形態に従った、サーバシステムによってユーザシステム内に実装された例示のデスクトップ型のユーザインターフェースを示す図である。
【図１１】本発明のある実施形態に従った、非定常ユーザが複数のユーザシステム間を移動する動作における、例示のサーバシステムを示す図である。
【図１２】本発明のある実施形態に従った、従来のアプリケーションプログラミングインターフェース（ＡＰＩ）を必要としない、例示のサーバシステムと動作する例示のユーザシステムを示す図である。
【図１３】本発明のある実施形態に従った、従来のアプリケーションプログラミングインターフェース（ＡＰＩ）を必要としない、例示のサーバシステムと動作する他の例示のシステムを示す図である。
【図１４】本発明のある実施形態に従った、図７のマスタサーバと、スレーブサーバと、ユーザシステムのディスプレイ及びスピーカとの、それぞれの間のファイアウォールが存在する通信を示す図である。
【図１５】本発明のある実施形態に従った、ファイルシステムにセキュアにアクセスするために、例示のサーバシステムと動作する例示のユーザシステムを示す図である。
【図１６】本発明のある実施形態に従った、単一の物理サーバデバイス内のマスタサーバ及び複数のスレーブサーバを仮想化するためのハイパーバイザと共に例示のサーバシステムを示す図である。
【図１７】本発明のある実施形態に従った、同じ単一の物理サーバデバイス内にすべて含まれる、マスタサーバ及び複数のスレーブサーバ、並びにユーザシステムのハイパーバイザ仮想化と共に、例示のサーバシステムを示す図である。
【図１８】本発明のある実施形態に従った、ユーザシステムのキーボードを介した例示のキーストロークメッセージ入力を含む、ネットワークを介して通信するユーザシステムと通信可能に動作する、階層ディスプレイ・サーバシステムを示す図であり、このキーストロークメッセージ入力は、階層ディスプレイ・サーバシステムのブラウザによって受信及び処理される。
【詳細な説明】
【００１８】
図１を参照すると、階層サーバシステム１０は、スレーブサーバＡ１０２、スレーブサーバＢ１０１、スレーブサーバＣ１１１、スレーブサーバＤ１０３、及びスレーブサーバＥ１１０の、５つのスレーブサーバそれぞれに、直接又は間接的に通信可能に接続された、マスタサーバ１００を含む。サーバシステム１００は、通信ネットワークを介するなどして、ユーザシステムＡ１０４及びユーザシステムＢ１０９に通信可能に接続する。マスタサーバ１００は、特に、スレーブサーバＡ１０２、スレーブサーバＢ１０１、及びスレーブサーバＣ１１１の、３つの第１のレベルのスレーブサーバに接続する。これら第１のレベルのスレーブサーバのうちの２つ（スレーブサーバＡ１０２及びスレーブサーバＣ１１１）は第２のレベルのスレーブサーバに接続し、すなわちスレーブサーバＡ１０２はスレーブサーバＤ１０３に接続し、スレーブサーバＣ１１１はスレーブサーバＥ１１０に接続する。
【００１９】
ユーザシステムＡ１０４は、デスクトップ型の非インテリジェントユーザシステムであり、例えば、ディスプレイ１０５、キーボード１０６、マウス１０８、及びスピーカ１０７の、４つの物理構成要素を備える。キーボード１０６、マウス１０８、及びスピーカ１０７は、ディスプレイ１０５に接続する。ディスプレイ１０５は、サーバシステムに通信可能に接続された通信ネットワークへの接続のための、ネットワークインターフェースを含む。ユーザシステムＢ１０９は、携帯電話、タブレットディスプレイ、携帯情報端末、又は通信用モバイルデバイスなどの、ハンドヘルド型(handheld style)非インテリジェントユーザシステムである。ユーザシステムＢ１０９は、例えば、単一のユニタリハウジング内に格納されたディスプレイ及びキーボードを備える。ユーザシステムＡ１０４及びユーザシステムＢ１０９は、通信ネットワークなどを介して、サーバシステムのすべてのサーバ１００、１０１、１０２、１１１、１０３、１１０に通信可能に接続することができる。
【００２０】
マスタサーバは、マスタサーバと通信している各ユーザシステムのすべての構成要素へのアクセスを有する。マスタサーバ１００は、例えばネットワークを介した通信アクセスを通じて、ユーザシステムＡのすべての構成要素、すなわちユーザシステムＡ１０４のキーボード１０６、マウス１０８、及びスピーカ１０７のそれぞれ、並びに単一のユニタリハウジング内に一体化されているが、ユーザシステムＢ１０９の同様の各構成要素、すなわちユーザシステムＢ１０９のディスプレイ及びキーボードを、制御する。したがって、例えばマスタサーバ１００は、ユーザシステムＡ１０４のディスプレイ１０５のいずれかの部分にビデオを送信し、スピーカ１０７上でオーディオを再生することができる。マスタサーバ１００は、ユーザシステムＡ１０４のキーボード１０６及びマウス１０８への入力を通じて、ネットワークを介して通信を受信する。同様にマスタサーバ１００は、ユーザシステムＢ１０９の各構成要素に通信可能にアクセスする。
【００２１】
マスタサーバは、ユーザシステムの構成要素のいずれかへのアクセスを、マスタサーバに接続されたスレーブサーバ（又はこれらのいずれか）に提供することができる。マスタサーバ１００は、例えば、ユーザシステムＡ１０４のディスプレイ１０５のすべて又は一部へのアクセスを、スレーブサーバＡ１０２に与えることが可能であり、その後、スレーブサーバＡ１０２は、ビデオを表示するためなどに、ディスプレイ１０５を通信可能に制御することができる。他の例では、マスタサーバ１００は、ユーザシステムＡ１０４のスピーカ１０７へのアクセスをスレーブサーバＡ１０２に与えることが可能であり、それによってスレーブサーバＡ１０２は、トーン又は他のサウンドを再生するためなどに、スピーカ１０７を通信可能に制御することができる。
【００２２】
スレーブサーバは、ユーザシステムの構成要素のいずれかへのアクセスを、スレーブサーバに接続された下位レベルのスレーブサーバに提供することができる。スレーブサーバＡ１０２は、例えばマスタサーバ１００によってユーザシステムＡ１０４のスピーカ１０７へのアクセスが与えられた場合、そのアクセスをスレーブサーバＤ１０３（すなわち下位レベルのスレーブサーバ）に与えることができる。それによってスレーブサーバＤ１０３は、ユーザシステムＡ１０４のスピーカ１０７を通信可能に制御することができる。ユーザシステムＡ１０４は、スピーカ１０７に関して受信したすべてのオーディオを混合する。サーバがユーザシステム構成要素へのアクセスを下位レベルのサーバに提供した場合、ユーザシステムはそのアクセスについて通知される。ユーザシステムが、特定のサーバが所与の構成要素にアクセスできる旨を通知されていない場合、ユーザシステムはそのサーバからのその所与の構成要素に関するすべての通信を無視することになる。
【００２３】
サーバ間及びサーバとユーザシステムとの間の接続は、イーサネット、ＷｉＦｉ、４Ｇ、ＷｉＭａｘ、若しくは任意の他の通信ネットワーク、又はこうしたネットワークの組合せなどの、ネットワーク接続である。
【００２４】
図２を参照すると、例示であるが非排他的な２つのタイプのユーザシステムが、デスクトップユーザシステム２００及びハンドヘルドユーザシステム２１７である。デスクトップユーザシステム２００は、例えば、ＵＳＢフラッシュドライブ２０１、マイクロフォン２０２、スピーカ２０３、ディスプレイ２０４、カメラ２０５、マウス２０６、プリンタ２０７、及びキーボード２０８の、物理的に別々の構成要素を含む。構成要素２０１〜２０８はすべて制御ユニット２０９に接続し、制御ユニット２０９はネットワーク２１０に接続される。制御ユニット２０９は、ディスプレイ２０４などの他の構成要素のうちの１つに物理的に組み込まれることが可能であるか、又は、制御ユニット２０９は、限定された制御動作（例えば、重要でないオペレーティングシステム動作）にのみ採用されるデスクトップユーザシステム２００の別のプロセッサとすることが可能である。例示の制御ユニットについては、図３に関連して以下で説明する。ハンドヘルドユーザシステム２１６は、例えば、同様に基本的であるがすべて内部の、マイクロフォン２１０、キーボード２１１、ディスプレイ２１２、カメラ２１３、スピーカ２１４、制御ユニット２１９、及びネットワークインターフェース２１５の、構成要素を含む。この例では、ハンドヘルドユーザシステム２１７は、デスクトップユーザシステム２００とは異なり、プリンタ、マウス、又はフラッシュドライブを有していない。しかしながら、ハンドヘルドユーザシステム２１７は、この例ではデスクトップユーザシステム２００内に存在しない、ＧＰＳユニット２１６及びＭＥＭＳ  ２１８構成要素を有する。デスクトップユーザシステム２００のネットワーク接続２１０は、イーサネットなどの有線、若しくはＷｉＦｉ、４Ｇ、ＷｉＭａｘ、又は他の通信ネットワークなどの無線、或いは、それらの組合せとすることができる。ハンドヘルドユーザシステム２１７のネットワーク接続２１５は、例えば無線である。デスクトップユーザシステム２００及びハンドヘルドユーザシステム２１７は、単なる例であるが、本実施形態において動作可能であり得るデバイス及びデバイスの構成要素を示す。少なくともネットワーク通信能力及びある種の能力を備えた他のデバイス及び構成要素も、又は代替として、実施形態において可能である。
【００２５】
図３を参照すると、小型ハンドヘルドデバイス３００などの、典型的なユーザシステムの詳細な内部構成要素／機能ブロック図は、ＬＣＤディスプレイ３０６、スピーカ３０７、ブザー３０８、タッチスクリーン３０５、マイクロフォン３１２、カメラ３１３、及びキーボード３１４の、ハードウェア構成要素を含む。すべてのハードウェア構成要素は、デバイス３００の低レベルのデータをネットワークを介して通信可能なデータに変換する、デバイス３００の論理回路にインターフェース（相互作用）する。デバイス３００の制御ユニット３１８は、構成要素を含むデバイス３００の動作全体を制御する。ネットワークインターフェース３０１を介して受信されるメッセージは制御ユニット３１８によって処理され、制御ユニット３１８はメッセージを仮想的に逆多重化し３０２、適切な逆多重化されたメッセージデータをデータに関するそれぞれの構成要素に送達する。ビデオデコーダ３０４は、受信したネットワーク通信データをＬＣＤディスプレイ３０６への送達のために変換する。ビデオデコーダ３０４は、標準のＭＰＥＧ２、Ｈ．２６４、ＶＣ−１型デコーダ、又は適正(propriety)ビデオデコーダとすることができる。オーディオデコーダ３０３は、ネットワークデータを、スピーカ３０７への送達のためにアナログ信号に変換する。オーディオデコーダ３０３は、標準のＡＡＣ、ＭＰ３、Ｇ７１１型デコーダ、又は適正オーディオデコーダとすることができる。ハプティクス(haptics)デコーダ３０９は、ネットワークデータを、ブザー３０８を駆動するためのフォーマットに変換する。メッセージを出力する場合はこの逆が真であり、制御ユニット３１８はそれぞれの構成要素からのメッセージデータを仮想的に多重化し３１５、ネットワーク通信用にネットワークインターフェース３０１に送達するためのメッセージを生成する。タッチスクリーンエンコーダ３１０は、タッチスクリーン３０５からのデータを、ネットワークを介した送達用に変換する。オーディオエンコーダ３１１は、マイクロフォン３１５からのアナログデータを、ネットワーク介した送達用のデジタルデータに変換する。オーディオエンコーダ３１１データのフォーマットは、オーディオデコーダ３０３データのフォーマットと同一である。ビデオエンコーダ３１７は、カメラ３０５からのデータを変換する。ビデオエンコーダ３１７データのフォーマットは、ビデオデコーダ３０４データのフォーマットと同一である。ユーザシステムによって実質的なデータの処理は実行されないが、ユーザシステムは、デバイス３００のハードウェアによって生成されるデータを出力されるネットワークメッセージにネットワークを介して通信可能な形で変換し、又は入力されるネットワークメッセージからデバイス３００によって受信されるデータをハードウェアによって使用可能な形で変換する。
【００２６】
図４を参照すると、ユーザシステムとの通信が許可された前述のような階層サーバは、それぞれ、それぞれのウィンドウを生成し、それによって複数のウィンドウ（すなわち、各サーバについて１つの別個のウィンドウ）がユーザシステムによって表示される。それぞれのサーバには、ディスプレイのそれぞれのウィンドウへのアクセス権が許可される。例えば、あるウィンドウへのアクセスを有するサーバは、そのウィンドウに記入するためのグラフィック表示を表すピクセルを送信する。ピクセルは、ブラウザなどのアプリケーションのグラフィック出力又はスプレッドシートとすることが可能であり、ピクセルはビデオ（ライブ又はハードドライブから読み取られる）とすることが可能であり、或いは、ピクセルは本実施形態で適用可能な他の媒体とすることが可能である。
【００２７】
図４のサーバは、図１のサーバのような、マスタサーバ４００、並びに５つのスレーブサーバＡ４０１、Ｂ４０２、Ｃ４１４、Ｄ４０３、及びＥ４１３との階層関係を有する。図４の例では、マスタサーバ４００は、ディスプレイ４０８の全領域をカバーし、ウィンドウ４０４内のグラフィック表示（或いは、適宜、ビデオ又は他の媒体）を表すピクセルをウィンドウ４０４に記入する、全ディスプレイ４０８へのアクセス権を有し、ウィンドウ４０４を作成した。マスタサーバ４００は、ウィンドウ４０５も作成し、ウィンドウ４０５内のグラフィック又は他の表示を表すピクセルを、ウィンドウ４０５に記入するためのアクセス権を、スレーブサーバＡ４０１に与えた。次にスレーブサーバＡ４０１はウィンドウ４０９を作成し、例えば、異なるか又は同じグラフィック若しくは他の表示を表すピクセルを、ウィンドウ４０９に記入するためのアクセス権を、スレーブサーバＤ４０３に与えた。マスタサーバ４００はウィンドウ４０６を作成し、例えば、異なるか又は同じグラフィック若しくは他の表示又は媒体を表すピクセルを、ウィンドウ４０６に記入するためのアクセス権を、スレーブサーバＢ４０２に与えた。マスタサーバ４００はウィンドウ４１２を作成し、異なるか又は同じグラフィック若しくは他の表示も表すピクセルなどを、ウィンドウ４１２に記入するためのアクセス権を、スレーブサーバＣ４１４に与えた。次にスレーブサーバＣ４１４はウィンドウ４１１を作成し、同じか又は異なるグラフィック若しくは他の表示も表すピクセルを、ウィンドウ４１１に記入するためのアクセス権を、スレーブサーバＥ４１３に与えた。図４は、上位レベルのサーバがウィンドウを作成し、下位レベルのサーバがそのウィンドウにピクセルを記入することを示す。各下位レベルのサーバについて、ユーザシステムディスプレイ上でその特定サーバについて作成されるウィンドウは、下位レベルのサーバのピクセルが表示されることになる専用位置である。スレーブサーバは、それぞれのスレーブサーバが、マスタサーバ４００又は階層関係の優先度の高いスレーブサーバによってアクセス権を与えられている、ウィンドウ（又は適宜、複数のウィンドウ）内に含められるウィンドウのみを作成することができる。
【００２８】
図５を参照すると、ある実施形態に従い、可能であれば、ある例示のアクセス権が上位レベルのサーバによってスレーブサーバに与えられる。例えば、物理構成要素５００、ディスプレイ上のウィンドウ５０１、及びサーバ対サーバ対話(やり取り、interaction)５０２の、アクセス権の３つの一般カテゴリが存在する。物理構成要素５００の場合、特定サーバは、その構成要素にアクセスする（したがって動作可能に使用する）ための権利を有するか又は有さない。ディスプレイウィンドウ５０１は、図４に関して論じたように、及び図７に関して以下でさらに説明するように、階層的に作成される。上位レベルのサーバはウィンドウを作成し、そのウィンドウに記入するためのアクセス権を下位レベルのサーバに与える。それらに関連付けられたアクセス権を有する様々なサーバ対サーバ対話５０２が存在する。サーバには、情報交換をコピー／ペースト及びドラッグ／ドロップするためのアクセス権、図１５に関して以下でさらに説明されるようなファイルへのアクセス権、専用のサーバ対サーバ通信を交換するためのアクセス権などが、与えられ得る。さらにスレーブサーバは、優先度の高いサーバからのファイル動作のためのアクセスを要求することもできる。さらにスレーブサーバは、こうしたアクセスが必要な、下位レベルの１つ又は複数のスレーブサーバへのアクセスが必要であり、これを要求する場合もある。
【００２９】
図６を参照すると、サーバとユーザシステムの間、サーバとサーバの間、及びいくつかの場合、２つ又はそれ以上のユーザシステムそれぞれの間で、ある例示のネットワークメッセージが送られる。例えばユーザ対サーバメッセージ６００は、ユーザシステムのキーボード、マウス、ＧＰＳなどのハードウェア構成要素からの入力又は指示、或いは他の入力又は指示を表すデータを、ネットワーク通信を介してサーバに提供する。例えば、接続(Connect)メッセージは、ユーザシステムがマスタサーバとの通信を開始するために送信する第１のメッセージである。サーバ対ユーザメッセージ６０１は、例えば、プリンタ、スピーカ（音量）、及びカメラなどのユーザシステムのハードウェア構成要素に関する、指示又は命令を表すデータ／制御を提供する。サーバ対ユーザメッセージ６０１の少なくとも一部は、ユーザシステムウィンドウ及びデジタル著作権管理（ＤＲＭ）に関するコマンドを表すデータである。１つのメッセージカテゴリ６０２は、サーバとユーザシステムの間、ユーザシステムとサーバの間、及びユーザシステム間で直接送信可能な、オーディオ及びビデオメッセージからなる。上位レベルのサーバは下位レベルのサーバにメッセージを送信し６０３、下位レベルのサーバも上位レベルのサーバにメッセージを送信する６０４。
【００３０】
図１８を参照すると、動作中の例示のユーザシステム１８２０及びサーバシステム１８３３（サーバシステムは、ユーザシステムへのアクセスが許可されたマスタサーバ或いは任意の上位又は下位サーバのうちのいずれか）は、サーバシステム１８３３によって処理されるブラウザソフトウェアアプリケーションなどの、サーバシステム１８３３のブラウザ１８２９に通信される、ユーザシステム１８２０のキーボード入力を含む。ユーザシステム１８２０は、サーバシステム１８３３の通信された命令を処理すること、及びこれに応答してユーザシステム１８２０で対応する表示又は他の出力動作を実行することが可能な、ユーザ側階層ディスプレイシステム１８２１を含む。ユーザシステム１８２０は、メッセージャ１８２２及び通信ユニット１８２３（階層構成のサーバシステムとのプロトコル及び通信のためのＴＣＰ／ＵＤＰ及びＩＰソフトウェア及び／又はハードウェアユニットなど）も含む。ユーザシステム１８２０は、キーボード１８２４又は他の入力デバイスをさらに含む。
【００３１】
サーバシステム１８３３はブラウザ１８２９を含む。サーバシステム１８３３は、実施形態に従った、階層ディスプレイ・サーバシステムにおいて、他のサーバシステムとの階層的対話及び配置構成が可能な、階層システム１８３０も含む。加えてサーバシステム１８３３は、メッセージャ１８３１及び通信ユニット１８３２（階層構成のユーザシステム１８２０及び他のサーバシステムとのプロトコル及び通信のためのＴＣＰ／ＵＤＰ及びＩＰソフトウェア及び／又はハードウェアユニット又は構成要素など）も含む。
【００３２】
動作時、（ユーザシステム１８２０のユーザによって入力可能なような）キーボード１８２４でのキーストローク１８２５は、ユーザ側階層ディスプレイシステム１８２１によって検出される。階層ディスプレイシステム１８２１は、検出されたキーストローク１８２５を処理して、キーストローク１８２５を表すデータがサーバシステム１８３３に通信されるべきであるかどうかを決定する。その後、階層ディスプレイシステム１８２１は、キーストローク１８２５を表すデータ１８２６をメッセージャ１８２２に渡す。メッセージャ１８２２は、キーストローク１８２５を表すデータを、サーバシステム１８３３によって読取り可能なメッセージ１８２８としてフォーマット化する。メッセージャ１８２２は、メッセージ１８２７を通信ユニット１８２３に送信する。通信ユニット１８２３は、このメッセージ１８２７をフォーマット化し、通信されたメッセージ１８２８の適用可能なＴＣＰ／ＵＤＰ  ＩＰパケットプロトコルに従い、通信ネットワークなどを介してサーバシステム１８３３に通信する。
【００３３】
サーバシステム１８３３の通信ユニット１８３２は、通信されたメッセージ１８２８をネットワークから通信可能に受信する。通信ユニット１８３２は、通信されたメッセージ１８２８から（メッセージ１８２７に対応する）メッセージ１８３６を抽出し、このメッセージ１８３６をメッセージャ１８３１に送達する。メッセージャ１８３１は、メッセージ１８３６がユーザシステム１８２０のキーボード１８２４へのキーストローク１８２５を表すかどうかを決定し、このメッセージ１８３６を入力１８３５としてサーバシステム１８３３の階層システム１８３０に送達する。こうした入力１８３５で、階層システム１８３０は、ユーザシステム１８２０でのキーストローク１８２５を表すブラウザ入力１８３４を抽出する。ブラウザ入力１８３４は、階層システム１８３０によってブラウザ１８２９に通信される。その後、ブラウザ１８２９は、ユーザシステム１８２０との通信及びユーザシステム１８２０での表示又は他の出力の動作のために、ブラウザ入力１８３４を処理する。
【００３４】
図７及び図８は、マスタサーバ７００と、２つのスレーブサーバ７０２、７０４、並びにディスプレイ７１５及びスピーカ７１４からなるユーザシステム７１６との、例示の対話を示す。図７は、対話を図式で示す。図８は、この対話のセットアップをプロセスごとに示す。ユーザシステム７１６は、電源が投入されると、マスタサーバ７００に接続７０５メッセージを送信する。マスタサーバ７００は、座標０、０にウィンドウＸ７１７を作成するために、ウィンドウ７０６メッセージで応答する。その後マスタサーバ７００は、ユーザシステム７１６のウィンドウＸ７１７に表示するためのビデオ媒体を表すピクセルをウィンドウ７１７に記入するために、（この例では）ビデオ７０７を送信する。その後、マスタサーバ７００は、ウィンドウ及びスレーブ接続７０８メッセージをユーザシステム７１６に送信する。ウィンドウメッセージ７０８は、座標８０，４０にウィンドウＹ７１８を作成し、メッセージ７０８のスレーブ接続部分は、スレーブサーバＡ７０２が接続することをユーザシステム７１６に通知する。スレーブサーバＡ７０２が有するアクセス権は、接続メッセージ７０８の一部でもある。マスタサーバ７００は、ユーザシステム７１６に接続することを通知する接続７０１メッセージを、スレーブサーバＡ７０２に送信する。ここでスレーブサーバＡ７０２は、ウィンドウＹ７１８内で表示するビデオ媒体を表すピクセルをウィンドウＹ７１８に記入する旨の（この例では）ビデオ７０９メッセージを、ユーザシステム７１６に送信する。
【００３５】
ここで、ウィンドウＺ７１９に対して同様のプロセスを反復する。スレーブサーバ７０２は、ウィンドウ及びスレーブ接続７１０メッセージをユーザシステム７１６に送信する。ウィンドウコマンドは、座標１６０，５０にウィンドウＺ７１９を作成し、メッセージのスレーブ接続部分は、スレーブサーバＢ７０４が接続することをユーザシステム７１６に通知する。スレーブサーバＢ７０４が有するアクセス権は、メッセージ７１０の一部でもある。スレーブサーバＡ７０２は、ユーザシステム７１６に接続することを通知する接続７０３メッセージを、スレーブサーバＢ７０４に送信する。ここでスレーブサーバＢ７０４は、ウィンドウＺ７１９内で表示されるビデオ媒体を表すピクセルをウィンドウＺ７１９に記入する旨の（この例では）ビデオ７１１メッセージを、ユーザシステム７１６に送信する。
【００３６】
ここで、マスタサーバ７００及びスレーブサーバＡ７０２の両方が、（さらにこの例に従って）オーディオ７１３、７１２メッセージをユーザシステム７１６に送信する。ユーザシステム７１６はオーディオを混合し、スピーカ７１４上でこれを再生する。ユーザシステム７１６がスレーブサーバＡ７０２からのオーディオを受け入れるために、マスタサーバ７００は、スレーブサーバＡ  ７０２がスピーカアクセス権を有する旨をユーザシステム７１６に通知してあることになる。
【００３７】
図９を参照すると、サーバ９００と２つのユーザシステム９０１及び９０８との詳細な対話の例示の実施形態において、ユーザシステム９０１及び９０８は、オーディオ９２３、９２４、及びビデオ９２１、９２２メッセージを互いに直接送信している。図９に示されたような構成は、例えば２人のユーザ間でのビデオ／オーディオ会議で使用可能である。サーバ９００は、ユーザシステムＡ９０１のディスプレイ９０２上に、ウィンドウＪ９０３を作成するためにメッセージ９１７を送信し、ウィンドウＫ９０４を作成するためにメッセージ９１５を送信する。サーバ９００は、ユーザシステムＡ９０１上に表示するためのオーディオ及びビデオ媒体を表すピクセルをウィンドウＪ９０３に記入する旨の、ビデオ９１６メッセージを送信する。その後、サーバ９００は、この例ではウィンドウＭ９１０及びウィンドウＮ１０１の、同様のウィンドウセットを、ユーザシステムＢ９０８のディスプレイ９０９上に作成する。サーバ９００は、ウィンドウＭ９１０にビデオ９１９メッセージを記入する。その後、サーバ９００は、ユーザシステムＡ９０１及びユーザシステムＢ９０８それぞれに、それらがそれぞれ他方のスピーカ及びディスプレイウィンドウそれぞれへのアクセスを有する旨を通知する。したがってユーザシステムＢ９０８は、カメラ９１２からのビデオ９２１メッセージを、ユーザシステムＡ９０１のウィンドウＫ９０４に送信する。同様にユーザシステムＡ９０１は、カメラ９０５からのビデオ９２２メッセージを、ユーザシステムＢ９０８のウィンドウＮ９１１に送信する。同様にオーディオは、各ユーザシステムのマイクロフォンとスピーカとの間でそれぞれ交換される。ユーザシステムＡ９０１のマイクロフォン９０６は、ユーザシステムＢ９０８のスピーカ９１４にオーディオ９２３メッセージを送信し、ユーザシステムＢ９０８のマイクロフォン９１３は、ユーザシステムＡ９０１のスピーカ９０７にオーディオ９２４メッセージを送信する。ビデオ及びオーディオは、ユーザシステムのアクセスが許可されている共通構成要素であるが、任意の構成要素へのアクセス権は、サーバからユーザデバイスへと渡されることが可能であるため、このようにユーザデバイスは他のユーザデバイスと通信することができる。
【００３８】
図１０は、実施形態に従った、ユーザシステムのディスプレイの例示の標準デスクトップ型ユーザインターフェースを示す。この例では、標準デスクトップ型ユーザインターフェースは、バックグラウンドデスクトップと、それぞれのアプリケーションユニットを含むそれぞれのウィンドウフレームとを含む。各アプリケーションユニットのウィンドウフレームは、アプリケーションユニットのサイズ変更、最小化、最大化、及び終了に対処することができる。加えてウィンドウフレームは、アプリケーションユニットのウィンドウを、ディスプレイの異なる位置に移動させることに対処可能である。この実施形態では、マスタサーバ１０１０及び２つのスレーブアプリケーションサーバ１０１７、１０２１は、ユーザシステムディスプレイ１０１６に接続する。マスタサーバ１０１０は、メインデスクトップウィンドウ１０２４を作成し、グラフィック、テキスト、及び／又はビデオ媒体を表すピクセルを記入するために、ウィンドウ１０１１メッセージ及びビデオ１０１２メッセージを送信する。デスクトップウィンドウ１０２４は、アプリケーションユニットを開始するためのデスクトップバックグラウンド及びデスクトップアイコンを含む。例えばクロックアプリケーションユニット(clock application unit)を開始したい場合、マスタサーバ１０１０はウィンドウ１０１８メッセージ及びビデオ１０１９メッセージをユーザシステムディスプレイ１０１６に送信する。これらのメッセージは、フレームウィンドウ１０２５を作成し、クロック又は他のタイミング媒体を表すピクセルを記入する。マスタサーバ１０１０は、クロックアプリケーションユニットのアプリケーションウィンドウ１０２６を作成するために、ユーザシステムディスプレイ１０１６にウィンドウ１０２０メッセージも送信する。その後、マスタサーバ１０１０は、クロックアプリケーションメッセージに対処可能なスレーブサーバ１０１７に、接続１００９メッセージを送信する。その後、スレーブサーバ１０１７は、クロック又はタイマを表すクロックアプリケーションのピクセルをアプリケーションウィンドウ１０２６に記入するために、ビデオ１０２２メッセージを送信する。
【００３９】
カレンダアプリケーションメッセージ(Calendar application message)に対処可能なスレーブサーバ１０２１が、ユーザシステムディスプレイ１０１６との通信を開始すると、同様のプロセスが発生する。マスタサーバ１０１０は、ウィンドウ１０１３メッセージ及びビデオ１０１４メッセージをユーザシステムディスプレイ１０１６に送信し、フレームウィンドウ１０２８などのフレームウィンドウを作成して、カレンダを表すピクセルを記入するよう、ディスプレイ１０１６に指示する。マスタサーバ１０１０は、カレンダアプリケーションウィンドウ１０２７を作成するためにウィンドウ１０１５メッセージを送信する。その後、マスタサーバ１０１０は、スレーブサーバ１０２１に接続１００８メッセージを送信する。スレーブサーバ１０２１は、カレンダを表すピクセルをカレンダアプリケーションウィンドウ１０２７に記入するために、ビデオ１０２３メッセージを送信する。それによって、標準デスクトップ環境を非常にセキュアな方法でユーザシステム内に作成することが可能であり、各それぞれのアプリケーションユニットは、適用可能なマスタ及びスレーブサーバシステムのソフトウェアプログラム又は他の動作ユニットのものであってこれらによって処理される、テキスト、グラフィック、ビデオ、又は他の媒体を表すピクセルなどをウィンドウに記入するための、ユーザシステムに対する制限された権利を有する。
【００４０】
図１１を参照すると、階層関係にある複数のサーバの例示の実施形態は、ユーザが１つのユーザシステムから別のユーザシステムに移動する時に、複数のユーザシステムのそれぞれの特定のユーザに、サービスを提供することができる。この例示の実施形態では、マスタサーバ１１００はスレーブサーバブラウザ１１０１及びスレーブサーバスプレッドシート１１０２に接続する。本実施形態によれば、デスクトップユーザシステム１１０４、ハンドヘルドユーザシステム１１０９、及びタブレットユーザシステム１１１２の、３つのユーザシステムが存在する。ユーザシステム間を周期的に移動できる、一人のユーザ１１０５のみが存在する。初期に、ユーザ１１０５はデスクトップユーザシステム１１０４を操作している。この例では、それぞれのサーバは前述のように、デスクトップユーザシステム１１０４への接続セット１１０３を用いて相互接続される。ユーザがデスクトップユーザシステム１１０４の使用を切断し、ハンドヘルドユーザシステム１１０９を使用するために移動した場合１１０６、次にハンドヘルドユーザシステム１１０９はマスタサーバ１１００に接続メッセージを送信する。
【００４１】
その後、マスタサーバ１１００は、ユーザ１１０５がハンドヘルドユーザシステム１１０９に移動した旨を判定／検出／確認し、マスタサーバ１１００は、デスクトップユーザシステム１１０４からハンドヘルドユーザシステム１１０９へのこのユーザの動きを、スレーブサーバブラウザ１１０１及びスレーブサーバスプレッドシート１１０２に、通信可能に通知する。その後、マスタサーバ１１００並びにスレーブサーバ１１０１及び１１０２の両方は、それらそれぞれのメッセージを、デスクトップユーザシステム１１０４に送信する１１０３のではなく、ハンドヘルドユーザシステム１１０９に送信する１１１０ように、リダイレクトすることができる。
【００４２】
任意の特定のデスクトップユーザシステム１１０４及びハンドヘルドユーザシステム１１０９は、それぞれ別個のハードウェア及び構成要素を有することが可能である。例えばデスクトップユーザシステム１１０４及びハンドヘルドユーザシステム１１０９は、それぞれ、異なるディスプレイのタイプ又はサイズ、キーボードタイプ、タッチ対マウス入力、及びその他の多様なタイプ及び型の構成要素などの、異なる構成要素を含むことができる。したがってデスクトップユーザシステム１１０４及びハンドヘルドユーザシステム１１０９は、それぞれ、通信に採用されるシステム１１０４又は１１０９に関するそれぞれのハードウェア／構成要素の詳細を、その都度サーバに通信する。サーバは、可能であれば、システム１１０４又は１１０９それぞれに関する対応する詳細を使用して、通信を自動的に修正し、それに応じて動作メッセージを送信する。例えば、各それぞれのシステム１１０４又は１１０９のタッチイベント並びに他の入力及び出力、並びにそれぞれのシステム１１０４、１１０９の他のイベント、特徴、及び応答に応答して、ウィンドウの全体サイズを変更するように、動作を変更することができる。
【００４３】
さらに例示の実施形態において、ユーザ１１０５が、ハンドヘルドユーザシステム１１０９ではなくタブレットユーザシステム１１１２を介した通信を開始するために移動した場合１１０７、メッセージ通信１１１０は１１１１に進み、メッセージング１１１３はサーバによってタブレットユーザシステム１１１２へと向けられる。前述のように、ハンドヘルドユーザシステム１１０９及びタブレットユーザシステム１１１２がサーバに対して異なる構成要素を報告した場合、サーバは適宜動作を修正する。ここでユーザは、３つの異なるユーザシステムを使用しており、サーバは各固有のシステム１１０４、１１０９、及び１１１２それぞれに対して対処する動作を提供し、例えば、可能であれば、それぞれのデバイスの入力／出力、それぞれのディスプレイサイズ、並びに他の固有の機構及び構成要素の相違に合うように調整する。
【００４４】
図１２を参照すると、ユーザデバイス（複数可）と通信するための階層サーバの動作の例示の方法は、ユーザデバイスに関する従来のアプリケーションプログラミングインターフェース（ＡＰＩ）要件を不要にする。この例では、スレーブサーバ１２０６は、ユーザシステム１２０７上にポップアップイベント通知を表示する。スレーブサーバ１２０６は、マスタサーバ１２００に要求１２０３メッセージを送信する。要求１２０３メッセージは、スレーブサーバ１２０６アプリケーションが、ユーザシステム１２０７上にポップアップイベント通知を表示したい旨を、マスタサーバ１２００に通知する。マスタサーバ１２００によって許可可能であれば、マスタサーバ１２００はウィンドウメッセージ１２０１をユーザシステム１２０７に送信する。ウィンドウ１２０５がユーザシステム１２０７上に表示される。マスタサーバ１２００は、更新１２０４メッセージでスレーブサーバ１２０６に応答する。スレーブサーバ１２０６は、ビデオメッセージなどのメッセージ１２０２をユーザシステム１２０７に送信する。メッセージ１２０２は、ビデオメッセージを表すピクセルとして、ウィンドウ１２０５内に表示される。マスタサーバ１２００は、例えばユーザシステム１２０７のユーザの注意をメッセージ１２０２に引き付けるために、ユーザシステム１２０７によって表示されるウィンドウ１２０５の位置を、アニメーション化することができる。スレーブサーバ１２０６は、可能であれば、マスタサーバ１２００のアニメーション又は同様の指示に気付く必要はなく、マスタサーバ１２００（又は階層によってそのように許可された任意の他のサーバ）は、同様にユーザシステム１２０７の動作を指示することができる。この例では、特殊なイベント通知ＡＰＩが不要であることに留意されたい。
【００４５】
図１３を参照すると、ユーザデバイス（複数可）と通信するための階層サーバの動作の他の例示の方法も、ユーザデバイスに関する従来のアプリケーションプログラミングインターフェース（ＡＰＩ）要件を不要にする。この例では、マスタサーバ１３００は、複数のニュースサーバ、例えばスレーブサーバＡ１３０７、Ｂ１３０８、Ｃ１３０９、及びＤ１３１０の４つのニュースサーバの通信を介して、ニュースフィードリストを表示する。マスタサーバ１３００は、ユーザシステム１３０１と通信して、ユーザシステム１３０１のディスプレイ１３０２上に４つの同一のウィンドウ１３０３、１３０４、１３０５、１３０６を作成する。その後、マスタサーバ１３００は、４つのスレーブサーバＡ１３０７、Ｂ１３０８、Ｃ１３０９、及びＤ１３１０それぞれに接続し、スレーブサーバＡ１３０７、Ｂ１３０８、Ｃ１３０９、及びＤ１３１０は、それぞれのビデオメッセージをユーザシステム１３０１に送信する。それぞれのメッセージは、ユーザシステム１３０１のウィンドウ１３０３、１３０４、１３０５、又は１３０６のうちのそれぞれに、適用可能なビデオメッセージを表すピクセルを記入する。スレーブサーバＡ１３０７のメッセージはウィンドウ１３０３に記入し、スレーブサーバＢ１３０８のメッセージはウィンドウ１３０４に記入し、スレーブサーバＣ１３０９のメッセージはウィンドウ１３０５に記入し、スレーブサーバＤ１３１０のメッセージはウィンドウ１３０６に記入する。したがって、特別なニュースフィードＡＰＩは不要である。
【００４６】
図１４を参照すると、ユーザデバイス（複数可）との通信のための階層サーバの動作の他の例示の方法は、ユーザシステム（複数可）への、ファイアウォールが存在する状態での、適用可能なサーバとユーザシステム（複数可）との間のアクセスを許可する。この実施形態では、マスタサーバ１４００及びスレーブサーバ１４０１は、サーバ１４００、１０４１とユーザシステム１４０３との間のユーザ側ファイアウォール１４０２を経由して、ユーザシステム１４０３に接続する。このタイプのファイアウォールは、例えば、ファイアウォール１４０２の背後のユーザシステム１４０３などのデバイスから通信が開始され、ファイアウォール１４０２を通過するのを可能にするが、ファイアウォール１４０２の外部からファイアウォール１４０２を経由しユーザシステム１４０３へと通過する通信は制約する。ユーザシステム１４０２によって、ファイアウォール１４０２を通過する外部への通信が開始されると、通信は、ファイアウォール１４０２の外部のデバイスがファイアウォール１４０２を通過してユーザシステム１４０３へと通信する経路、並びにその逆の、両方の経路をたどることができる。しかしながら、アクセス／通信のタイムアウトなど、又はその他の方法を通じて通信セッションが完了すると、適用可能サーバ（複数可）は、前述のような通信が再開されるまで、ユーザシステム１４０２との通信を切断する。
【００４７】
さらに図１４に関して、ファイアウォール１４０２は、ユーザシステム１４０３からサーバ１４００及び１４０１へと外に向かう初期の通信は許可するが、サーバ１４００又は１４０１からユーザシステム１４０３への初期の通信は許可しない。動作時、ユーザシステム１４０３は初期にマスタサーバ１４００と通信する１４０４。これにより、ファイアウォール１４０２内の通信経路が開通し、マスタサーバ１４００はユーザシステム１４０３にメッセージ１４０５を送信することができる。スレーブサーバ１４０１がユーザシステム１４０３との通信を望む場合、マスタサーバ１４００はスレーブサーバ１４０１に接続メッセージ１４０６を送信する。スレーブサーバ１４０１はＯＫメッセージ１４０７で応答する。マスタサーバ１４００は、ユーザシステム１４０３に、スレーブサーバ１４０１に関する次の接続メッセージ１４０８を送信する。この接続メッセージ１４０８を受信すると、ユーザシステム１４０３はスレーブサーバ１０４１に別の接続メッセージ１４０９を送信する。これでファイアウォール１４０２内の通信経路は、サーバ１４００、１４０６両方とユーザシステム１４０３との間で、双方向通信用に開通する。例えばスレーブサーバ１０４１は、ユーザシステム１４０３にメッセージ１４１０を送信する。
【００４８】
スレーブサーバ１４０１とユーザシステム１４０３との間のメッセージ通信がタイムアウト期間に切断された場合、ファイアウォール１４０２は、例えばスレーブサーバ１４０１とユーザシステム１４０３との間の双方向通信に使用可能な通信経路を閉じ、スレーブサーバ１４０１はユーザシステム１４０３にメッセージ１４１１を送信するが、メッセージ１４１１は、ファイアウォール１４０２を通過することができない。スレーブシステム１４０１は、ファイアウォール１４０２を経由する双方向通信を再確立するために、接続要求メッセージ１４１２をマスタサーバ１４００に送信しなければならない。マスタシステム１４００は、接続メッセージ１４１３をユーザシステム１４０３に送信することによって応答する。接続メッセージ１４１３を受信すると、ユーザシステム１４０３はスレーブサーバ１４０１に接続メッセージ１４１４を送信して、スレーブサーバ１４０１を介した双方向通信のためのファイアウォール１４０２を開通させる。その後、スレーブサーバ１４０１は、メッセージ１４１１をメッセージ１４１５として再送し、メッセージ１４１５はユーザシステム１４０３による受信のためのファイアウォール１４０２を通過する。
【００４９】
図１５を参照すると、サーバ階層は、スレーブサーバのアクセスと、これに応じて、こうしたスレーブサーバからファイルデータベースなどのファイルシステム１５００に含まれるファイルへのユーザシステム（複数可）のアクセスとを制御する。図１４のデバイス及び機構は図１と同様であり、ファイルシステム１５００が追加されている。この実施形態では、マスタサーバ１００は、ファイルシステム１４００に直接接続し、ファイルシステム１５００に含まれるすべてのファイルにアクセス可能である。マスタサーバ１００は、スレーブサーバ１０２のアクセス許可を制御し、本実施形態に適用可能であれば、ファイルシステム１５００上のファイルのすべて又はサブセットへのアクセス権を、スレーブサーバ１０２に提供することができる。例えば、こうしたサブセットは１つのファイル、ファイルディレクトリ、ファイルのグループ、又はその他とすることができる。ファイルに関するアクセス権は、実装に応じて、読取り専用、読取り／書込み、添付専用、又は任意の他のタイプの、ファイルアクセスとすることができる。他の点と同様に許可及び階層に一致する任意のスレーブサーバは、そのアクセス権を、接続された１つ又は複数の他の下位レベルのスレーブサーバに渡すことができる。
【００５０】
図１６を参照すると、階層サーバの例示の実施形態は、単一の物理サーバデバイス（又は、可能であれば、複数のこうしたサーバデバイスの組合せ）内に仮想化されたマスタ及びスレーブサーバを提供する。この例では、図４のような階層サーバは、単一のサーバデバイス（又は、可能であれば複数のデバイスの組合せ）内に、各サーバ４００、４０１、４０２、４１４、４０３、４１３を含む。説明及び例示のために、すべてのサーバ４００、４０１、４０２、４１４、４０３、４１３は単一デバイス１６００内に含まれる。マスタサーバ４００及びスレーブサーバ４０１、４０２、４１４、４０３、及び４１３は、それぞれハイパーバイザ(hypervisor)１６０１によって仮想化され、同じ単一デバイス１６００内に含められる。例えばディスプレイ４０８及びキーボード４１０を含むユーザシステム４０７は、ネットワーク接続１６０２を介して単一サーバデバイス１６００に接続され、それぞれ単一デバイス１６００内に仮想化された、それぞれのマスタサーバ４００並びにスレーブサーバ４０１、４０２、４１４、４０３、及び４１３の許可されたアクセス及び通信は、ハイパーバイザ１６０１に従ったそれぞれのサーバ間の関連付けを通じて制御される。
【００５１】
図１７を参照すると、他の例示の実施形態は仮想階層サーバを含む。この例では、説明のために、それぞれのマスタ及びスレーブサーバ並びに（この例では）ユーザシステムも、すべて単一の物理サーバデバイス（又は実装により、複数のこうしたデバイスの組合せ）内に含められる。この例での単一デバイス１７００は、マスタサーバ４００及びスレーブサーバ４０１、４０２、４１４、４０３、４１３、並びにディスプレイ４０８及びキーボード４１０を含む。同じデバイス１７００内の仮想サーバ及びユーザシステムのこの例示の構成は、構成内で可能であれば、ディスプレイ、キーボード、通信、ストレージなどの、入力／出力機構を含む、デバイス１７０１又は他の同様の配置構成とすることができる。
【００５２】
上記の記述では、特定の実施形態を参照しながら本発明を説明してきた。しかしながら当業者であれば、以下の特許請求の範囲に記載された本発明の範囲を逸脱することなく、様々な修正形態及び変更形態が可能であることを理解されよう。したがって、本明細書及び図面は、制約的な意味ではなく例示的な意味とみなされるべきであり、すべてのこうした修正形態は本発明の範囲内に含まれるものと意図される。
【００５３】
利益、他の利点、及び問題に対する解決策について、これまで特定の実施形態に関して説明してきた。しかしながら、利益、利点、問題に対する解決策、並びにいずれかの利益、利点、又は解決策を実行すること又はより明らかにすることが可能なデバイス（複数可）、接続（複数可）、及び要素（複数可）は、いずれか又はすべての特許請求の範囲の重要、必要、又は必須な機構又は要素として解釈されるべきではない。本明細書で使用される場合、「含む」、「含んでいる」、又はその任意の他の変形の用語は、非排他的な包含をカバーするものと意図されるため、要素のリストを含むプロセス、方法、製品、又は装置は、それらの要素のみを含むものではないが、こうしたプロセス、方法、製品、又は装置に明示的に列挙されていないか又は固有でない、他の要素を含むことができる。
【図１】
2014529367.tif 000003
【図２】
2014529367.tif 000004
【図３】
2014529367.tif 000005
【図４】
2014529367.tif 000006
【図５】
2014529367.tif 000007
【図６】
2014529367.tif 000008
【図７】
2014529367.tif 000009
【図８】
2014529367.tif 000010
【図９】
2014529367.tif 000011
【図１０】
2014529367.tif 000012
【図１１】
2014529367.tif 000013
【図１２】
2014529367.tif 000014
【図１３】
2014529367.tif 000015
【図１４】
2014529367.tif 000016
【図１５】
2014529367.tif 000017
【図１６】
2014529367.tif 000018
【図１７】
2014529367.tif 000019
【図１８】
2014529367.tif 000020
【国際調査報告】
2014529367.tif 000021
2014529367.tif 000022
2014529367.tif 000023