(57)【要約】ある局面では、ファイルタイプとプログラムとの間のマッピングが受信され、クライアントシステムファイルがグラフィカルに表示され、グラフィカル表現の選択が受信され、選択されたファイルに関連するプログラムが識別され、かつ識別されたプログラムを実行するリクエストが送信される。別の局面では、サーバファイルシステムがグラフィカルに表示され、グラフィカル表現の選択が受信され、その選択がサーバシステムへ送信され、関連するプログラムを実行するリクエストが受信され、かつ関連するプログラムが実行される。さらに別の局面では、ウェブサーバファイルがグラフィカルに表示され、そのファイルに関する第２のプログラムに関する情報を含む第１のプログラムを実行するリクエストが受信される。【特許請求の範囲】
【請求項１】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）複数のサーバシステムのうちの１つから、データファイルのタイプと複数のサーバシステムのうちの１つにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップと、
（ｂ）クライアントシステムに格納されるデータファイルのグラフィカル表現を表示するステップと、
（ｃ）該データファイルのグラフィカル表現の選択を受信するステップと、
（ｄ）該受信されたマッピングを利用して、該選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップと、
（ｅ）該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、方法。
【請求項２】
ステップ（ａ）は、データファイルのタイプと、サーバシステムとの接続を確立するプログラムと、該データファイルを処理する実行可能プログラムと、該実行可能プログラムによって利用するためのパラメータとの間の関連を指定するマッピングを受信するステップを包含する、請求項１に記載の方法。
【請求項３】
前記受信されたマッピングを含むように前記クライアントシステムにおけるファイルを修正するステップ
をさらに包含する、請求項１に記載の方法。
【請求項４】
アプリケーション出力データを表示する第２の実行可能プログラムを実行するステップ
をさらに包含する、請求項１に記載の方法。
【請求項５】
前記実行プログラムからアプリケーション出力データを受信するステップ
をさらに包含する、請求項１に記載の方法。
【請求項６】
周期的な方式および必要とされるときという方式の少なくとも一方で、前記受信されたマッピングを更新するステップ
をさらに包含する、請求項１に記載の方法。
【請求項７】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項１に記載の方法。
【請求項８】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項１に記載の方法。
【請求項９】
ステップ（ｅ）は、
（ｅ−ａ）識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップと、
（ｅ−ｂ）該識別された実行可能プログラムが、該クライアントシステムまたは該複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定する該ルールを評価するステップと、
（ｅ−ｃ）該ステップ（ｅ−ｂ）における評価に基づき、該複数のサーバシステムのうちの１つにおいて該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項１に記載の方法。
【請求項１０】
ステップ（ｅ）は、
（ｅ−ａ）識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップと、
（ｅ−ｂ）該識別された実行可能プログラムが、該クライアントシステムまたは該複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定する該ルールを評価するステップと、
（ｅ−ｃ）該ステップ（ｅ−ｂ）における評価に基づき、該複数のサーバシステムのうちの１つにおいて該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項１に記載の方法。
【請求項１１】
（ｆ）前記選択されたデータファイルを含むデータを送信するステップであって、該データの少なくともいくらかは、前記実行プログラムによって処理する、ステップ
をさらに包含する、請求項１に記載の方法。
【請求項１２】
ステップ（ｆ）は、
（ｆ−ａ）前記選択されたデータファイルへのポインタを提供するステップと、
（ｆ−ｂ）該提供されたポインタを利用して、該選択されたデータファイルに関連するデータに対するリクエストに応答するステップと
を包含する、請求項１１に記載の方法。
【請求項１３】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）クライアントシステムに格納されるデータのタイプと複数のサーバシステムのうちの１つにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを提供するステップと、
（ｂ）該実行可能プログラムを実行するリクエストを受信するステップと、
（ｃ）複数のサーバシステムのうちの１つにおいて該実行可能プログラムを実行するステップと
を包含する、方法。
【請求項１４】
ステップ（ａ）は、データファイルのタイプと、サーバシステムとの接続を確立するプログラムと、該データファイルを処理する実行可能プログラムと、該実行可能プログラムによって利用するためのパラメータとの間の関連を指定するマッピングを受信するステップを包含する、請求項１３に記載の方法。
【請求項１５】
前記実行可能プログラムを実行する前記サーバシステムからクライアントシステムへアプリケーション出力データを提供するステップ
をさらに包含する、請求項１３に記載の方法。
【請求項１６】
前記実行可能プログラムを実行する前記サーバからのアプリケーション出力データを表示する第２のアプリケーションを提供するステップ
をさらに包含する、請求項１３に記載の方法。
【請求項１７】
周期的な方式および必要とされるときという方式の少なくとも一方で、前記提供されたマッピングを更新するステップ
をさらに包含する、請求項１３に記載の方法。
【請求項１８】
（ｄ）前記実行プログラムによって処理するデータファイルに関連するデータを受信するステップ
をさらに包含する、請求項１３に記載の方法。
【請求項１９】
ステップ（ｄ）は、
（ｄ−ａ）前記データファイルへのポインタを受信するステップと、
（ｄ−ｂ）該受信されたポインタを利用して、該データファイルに関連するデータに対するリクエストを送信するステップと
を包含する、請求項１８に記載の方法。
【請求項２０】
前記実行可能プログラムを利用して、前記受信されたデータを処理するステップ
をさらに包含する、請求項１８に記載の方法。
【請求項２１】
前記処理されたデータを提供するステップ
をさらに包含する、請求項２０に記載の方法。
【請求項２２】
実行可能プログラムが、クライアントシステムまたは複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを提供するステップ
をさらに包含する、請求項１３に記載の方法。
【請求項２３】
実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを提供するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項１に記載の方法。
【請求項２４】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）該クライアントシステムにより、該クライアントシステムに格納されるデータファイルのタイプと複数のサーバシステムのうちの１つにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップと、
（ｂ）該クライアントシステムにより、該クライアントシステムに格納されるデータファイルのグラフィカル表現を表示するステップと、
（ｃ）該クライアントシステムにより、該データファイルのグラフィカル表現の選択を受信するステップと、
（ｄ）該クライアントシステムにより、該受信されたマッピングを利用して、該選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップと、
（ｅ）複数のサーバシステムのうちの１つに、該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、方法。
【請求項２５】
ステップ（ａ）は、データファイルのタイプと、サーバシステムとの接続を確立するプログラムと、該データファイルを処理する実行可能プログラムと、該実行可能プログラムによって利用するためのパラメータとの間の関連を指定するマッピングを受信するステップを包含する、請求項２４に記載の方法。
【請求項２６】
前記クライアントシステムにより、前記受信されたマッピングを含むようにファイルを修正するステップ
をさらに包含する、請求項２４に記載の方法。
【請求項２７】
前記クライアントシステムに、アプリケーション出力を表示する第２の実行可能プログラムを提供するステップ
をさらに包含する、請求項２４に記載の方法。
【請求項２８】
前記複数のサーバシステムのうちの１つにより、周期的な方式および必要とされるときという方式の少なくとも一方で、前記受信されたマッピングを更新するステップ
をさらに包含する、請求項２４に記載の方法。
【請求項２９】
複数のサーバシステムのうちの１つにより、前記実行可能プログラムを実行するステップ
をさらに包含する、請求項２４に記載の方法。
【請求項３０】
前記実行可能プログラムを実行するサーバシステムにより、アプリケーション出力データを提供するステップ
をさらに包含する、請求項２９に記載の方法。
【請求項３１】
（ｆ）前記クライアントシステムにより、前記選択されたデータファイルを含むデータを送信するステップであって、該データの少なくともいくらかは、前記実行プログラムによって処理する、ステップ
をさらに包含する、請求項２４に記載の方法。
【請求項３２】
ステップ（ｆ）は、
（ｆ−ａ）前記クライアントシステムにより、前記選択されたデータファイルへのポインタを提供するステップと、
（ｆ−ｂ）前記クライアントシステムにより、該提供されたポインタを利用して、該選択されたデータファイルに関連するデータに対するリクエストに応答するステップと
を包含する、請求項３１に記載の方法。
【請求項３３】
前記複数のサーバシステムのうちの１つにより、前記実行可能プログラムを利用して、前記提供されたデータを処理するステップ
をさらに包含する、請求項３１に記載の方法。
【請求項３４】
前記複数のサーバシステムのうちの１つにより、前記処理されたデータを提供するステップ
をさらに包含する、請求項３３に記載の方法。
【請求項３５】
前記クライアントシステムにおいて、識別された実行プログラムが、該クライアントシステムまたは該複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項２４に記載の方法。
【請求項３６】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項２４に記載の方法。
【請求項３７】
ステップ（ｅ）は、
（ｅ−ａ）識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップと、
（ｅ−ｂ）該識別された実行可能プログラムが、該クライアントシステムまたは該複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを評価するステップと、
（ｅ−ｃ）該ステップ（ｅ−ａ）における評価に基づき、該複数のサーバシステムのうちの１つにおいて該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項２４に記載の方法。
【請求項３８】
ステップ（ｅ）は、
（ｅ−ａ）識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを該クライアントシステムにおいて受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップと、
（ｅ−ｂ）該識別された実行可能プログラムが、該クライアントシステムまたは該複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定する該受信されたルールを評価するステップと、
（ｅ−ｃ）該ステップ（ｅ−ｂ）における評価に基づき、該複数のサーバシステムのうちの１つにおいて該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項２４に記載の方法。
【請求項３９】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）複数のサーバシステムのうちの１つに格納されるデータファイルのグラフィカル表現を表示するステップと、
（ｂ）該データファイルのグラフィカル表現の選択を受信するステップと、
（ｃ）該複数のサーバシステムのうちの１つに、該データファイルのグラフィカル表現の選択を送信するステップと、
（ｄ）該複数のサーバシステムのうちの１つから、該選択されたデータファイルに関連する実行可能プログラムを実行するリクエストを受信するステップと、
（ｅ）該選択されたデータファイルに関連する実行可能プログラムを実行するステップと
を包含する、方法。
【請求項４０】
（ｆ）前記実行プログラムによって処理する前記選択されたデータファイルに関連するデータを受信するステップ
をさらに包含する、請求項３９に記載の方法。
【請求項４１】
ステップ（ｆ）は、
（ｆ−ａ）前記選択されたデータファイルへのポインタを受信するステップ
を包含する、請求項４０に記載の方法。
【請求項４２】
ステップ（ｆ）は、
（ｆ−ｂ）前記複数のサーバシステムから、前記受信されたポインタを利用して、前記選択されたデータファイルに関連するデータを取り出すステップ
をさらに包含する、請求項４１に記載の方法。
【請求項４３】
ステップ（ｆ）は、
（ｆ−ａ）ハイパーテキストトランスファープロトコル（ＨＴＴＰ）およびメッセージングアプリケーションプログラミングインターフェース（ＭＡＰＩ）プロトコルの少なくとも一方を利用して、処理する前記選択されたデータファイルに関連するデータを受信するステップ
を包含する、請求項４０に記載の方法。
【請求項４４】
前記実行プログラムを用いて、前記受信されたデータを処理するステップ
をさらに包含する、請求項４０に記載の方法。
【請求項４５】
前記処理されたデータを提供するステップ
をさらに包含する、請求項４４に記載の方法。
【請求項４６】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）データファイルのタイプとクライアントシステムにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップと、
（ｂ）複数のサーバシステムのうちの１つにデータファイルを格納するステップと、
（ｃ）該格納されたデータファイルの選択を受信するステップと、
（ｄ）該受信されたマッピングを利用して、該選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップと、
（ｅ）該クライアントシステムに、該識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、方法。
【請求項４７】
前記受信されたマッピングを含むように前記複数のサーバシステムのうちの１つにおけるデータファイルを修正するステップ
をさらに包含する、請求項４６に記載の方法。
【請求項４８】
周期的な方式および必要とされるときという方式の少なくとも一方で該受信されたマッピングを更新するステップ
をさらに包含する、請求項４６に記載の方法。
【請求項４９】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項４６に記載の方法。
【請求項５０】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項４６に記載の方法。
【請求項５１】
ステップ（ｅ）は、
（ｅ−ａ）前記識別された実行可能プログラムが、クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを評価するステップ
を包含する、請求項４６に記載の方法。
【請求項５２】
ステップ（ｅ）は、
（ｅ−ｂ）ステップ（ｅ−ａ）における評価に基づき、該クライアントシステムにおいて該識別された実行可能プログラムを実行するリクエストを送信するステップ
をさらに包含する、請求項５１に記載の方法。
【請求項５３】
（ｆ）前記実行プログラムにより処理する前記選択されたデータファイルに関連するデータを提供するステップ
をさらに包含する、請求項４６に記載の方法。
【請求項５４】
ステップ（ｆ）は、
（ｆ−ａ）前記選択されたデータファイルへのポインタを提供するステップ
を包含する、請求項５３に記載の方法。
【請求項５５】
（ｆ−ｂ）前記提供されたポインタを利用して、前記選択されたデータファイルに関連するデータに対するリクエストに応答するステップ
をさらに包含する、請求項５４に記載の方法。
【請求項５６】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）複数のサーバシステムのうちの１つにより、データファイルのタイプとクライアントシステムにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップと、
（ｂ）複数のサーバシステムのうちの１つにおいて、データファイルを格納するステップと、
（ｃ）クライアントシステムにおいて、該格納されたデータファイルの選択を受信するステップと、
（ｄ）複数のサーバシステムのうちの１つに、該データファイルの選択を送信するステップと、
（ｅ）複数のサーバシステムのうちの１つにおいて、該受信されたマッピングを利用して、該選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップと、
（ｆ）該クライアントシステムにおいて、該識別された実行可能プログラムに関連する該実行可能プログラムを実行するステップと、
（ｇ）該クライアントシステムにおいて、該選択されたデータファイルに関連する実行可能プログラムを実行するステップと
を包含する、方法。
【請求項５７】
（ｈ）前記クライアントシステムにより、前記選択されたデータファイルと関連するデータを取り出すステップ
をさらに包含する、請求項５６に記載の方法。
【請求項５８】
ステップ（ｈ）は、
（ｈ−ａ）ハイパーテキストトランスファープロトコル（ＨＴＴＰ）およびメッセージングアプリケーションプログラミングインターフェース（ＭＡＰＩ）プロトコルの少なくとも一方を利用して、処理する前記選択されたデータファイルに関連するデータを受信するステップ
を包含する、請求項５７に記載の方法。
【請求項５９】
前記クライアントシステムに、前記選択されたデータファイルへのポインタを提供するステップ
をさらに包含する、請求項５６に記載の方法。
【請求項６０】
前記クライアントシステムにより、前記提供されたポインタを利用して、前記選択されたデータファイルに関連するデータを取り出すステップ
をさらに包含する、請求項５９に記載の方法。
【請求項６１】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項５６に記載の方法。
【請求項６２】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項５６に記載の方法。
【請求項６３】
ステップ（ｆ）は、
（ｆ−ａ）複数のサーバシステムのうちの１つにより、前記識別された実行可能プログラムが、クライアントシステムまたは該複数のサーバシステムのどちらにおいて実行されるのかを判定するルールを評価するステップ
を包含する、請求項５６に記載の方法。
【請求項６４】
ステップ（ｆ）は、
（ｆ−ｂ）ステップ（ｆ−ａ）における前記評価に基づき、前記クライアントシステムにおいて前記識別された実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項６３に記載の方法。
【請求項６５】
前記実行プログラムを利用して、前記受信されたデータを処理するステップ
をさらに包含する、請求項５６に記載の方法。
【請求項６６】
前記処理されたデータを提供するステップ
をさらに包含する、請求項６５に記載の方法。
【請求項６７】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）ウェブサーバに格納されるデータファイルのグラフィカル表現を表示するステップと、
（ｂ）第１の実行可能プログラムを実行するリクエストを受信するステップであって、該リクエストは、該データファイルに関連する第２の実行可能プログラムに関する情報を含み、該第２のプログラムは、該クライアントシステムおよび複数のサーバシステムのうちの１つの一方において実行する、ステップと、
（ｃ）該第２の実行可能プログラムからアプリケーション出力データを受信するステップと、
（ｄ）該第１の実行可能プログラムにより、表示する受信されたアプリケーション出力データをフォーマットするステップ
を包含する、方法。
【請求項６８】
前記第１の実行可能プログラムを受信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項６９】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７０】
識別された実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７１】
（ｅ）前記選択されたデータファイルに関連する前記第２に実行可能ファイルを実行するリクエストを送信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７２】
ステップ（ｅ）は、
（ｅ−ａ）前記第２の実行可能プログラムが前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルール評価するステップと、
（ｅ−ｂ）ステップ（ｅ−ａ）における前記評価に基づいて、前記複数のサーバシステムのうちの１つにおいて前記第２の実行可能プログラムを実行するリクエストを送信するステップ
を包含する、請求項７１に記載の方法。
【請求項７３】
前記第２の実行可能プログラムからアプリケーション出力データを受信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７４】
前記第１の実行可能プログラムを用いて、前記アプリケーション出力データを表示する、請求項７３に記載の方法。
【請求項７５】
前記データファイルに関連するデータを受信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７６】
前記第２の実行可能プログラムを実行するコンピュータに、前記受信されたデータを提供するステップ
をさらに包含する、請求項７５に記載の方法。
【請求項７７】
前記データファイルへのポインタを受信するステップ
をさらに包含する、請求項６７に記載の方法。
【請求項７８】
前記受信されたポインタを利用して、前記データファイルに関連するデータをリクエストするステップ
をさらに包含する、請求項７７に記載の方法。
【請求項７９】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）データファイルのグラフィカル表現を送信するステップと、
（ｂ）クライアントシステムにおいてアプリケーション出力データを受信する第１の実行可能プログラムを実行するリクエストを提供するステップであって、該リクエストは、該クライアントシステムおよび複数のサーバシステムのうちの１つの一方において実行する第２の実行可能プログラムに関する情報を含む、ステップ
を包含する、方法。
【請求項８０】
前記第１の実行可能プログラムを提供するステップ
をさらに包含する、請求項７９に記載の方法。
【請求項８１】
前記データファイルへのポインタを提供するステップ
をさらに包含する、請求項７９に記載の方法。
【請求項８２】
前記提供されたポインタを利用して、前記データファイルに関連するデータに対するリクエストを行うステップ
をさらに包含する、請求項８１に記載の方法。
【請求項８３】
前記データファイルのコンテンツを提供するステップ
をさらに包含する、請求項７９に記載の方法。
【請求項８４】
前記第２の実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを提供する、請求項７９に記載の方法。
【請求項８５】
前記第２の実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項７９に記載の方法。
【請求項８６】
クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法であって、該方法は、
（ａ）ウェブシステムにより、ウェブサーバに格納されたデータファイルのグラフィカル表現を送信するステップと、
（ｂ）該クライアントシステムに、クライアントシステムにおいてアプリケーション出力データを受信する第１の実行可能プログラムを実行するリクエストを提供するステップであって、該リクエストは、該クライアントシステムおよび複数のサーバシステムのうちの１つの一方において実行する第２の実行可能プログラムに関する情報を含む、ステップと、
（ｃ）該クライアントシステムにより、該クライアントシステムにおいて該第１の実行可能プログラムを実行するステップと
を包含する、方法。
【請求項８７】
前記クライアントシステムにおいて、前記第１の実行可能プログラムを提供するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項８８】
前記クライアントシステムにおいて、前記第２の実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項８９】
前記第２の実行可能プログラムが、前記クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを、該クライアントシステムにおいて受信するステップであって、該ルールは、該クライアントシステムにおける負荷、該複数のサーバシステムのうちの１つにおける負荷、該複数のサーバシステムにおける負荷、および該クライアントシステムと該複数のサーバシステムとの間の接続のスピードの少なくとも１つの関数として、該クライアントシステムと該複数のサーバシステムのうちの１つとの間の該判定を指定する、ステップ
をさらに包含する、請求項８６に記載の方法。
【請求項９０】
（ｄ）複数のサーバシステムのうちの１つに、前記選択されたデータファイルに関連する前記第２の実行可能プログラムを実行するリクエストを提供するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項９１】
ステップ（ｄ）は、
（ｄ−ａ）前記クライアントシステムにより、前記２の実行可能プログラムが、該クライアントシステムまたは前記複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを評価するステップと、
（ｄ−ｂ）該クライアントシステムにより、ステップ（ｄ−ａ）における該評価に基づいて、該複数のサーバシステムのうちの１つにおいて該第２の実行可能プログラムを実行するリクエストを送信するステップと
を包含する、請求項９０に記載の方法。
【請求項９２】
前記クライアントシステムにより、前記第２の実行可能プログラムからアプリケーション出力データを受信するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項９３】
前記クライアントシステムにより、前記第１の実行可能プログラムを用いて、前記アプリケーション出力データを表示するステップ
をさらに包含する、請求項９２に記載の方法。
【請求項９４】
前記ウェブサーバにより、前記選択されたデータファイルに関連するデータを提供するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項９５】
前記ウェブサーバにより、前記選択されたデータファイルへのポインタを提供するステップ
をさらに包含する、請求項８６に記載の方法。
【請求項９６】
前記クライアントシステムにより、前記提供されたポインタを利用して、前記選択されたデータファイルに関連するデータをリクエストするステップ
をさらに包含する、請求項９５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、概してクライアント−サーバネットワークにおける分散型のプログラムの実行に関する。特に、本発明は、データファイルおよび実行可能プログラムが異なるコンピューティングノードに位置する場合に、データファイルに関連するプログラムを自動的に実行する方法に関する。
【背景技術】
【０００２】
（発明の背景）
ワシントン州レイモンドのＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎのＤＩＳＫ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ（ＤＯＳ）、あるいはＮＹ州ニューヨークのＡＴ＆ＴのＵＮＩＸ（Ｒ）のようなコマンドラインベースのオペレーティングシステムを利用するデスクトップコンピュータにおいて、コンピュータプログラムの実行を開始するためには、ユーザが、コマンドプロンプトに実行可能プログラムのパスおよびファイル名を入力することが要求された。これに応答して、オペレーティングシステムは、指定されたファイルの実行を試みた。ユーザはまた、パスおよびファイル名の後ろに、実行可能プログラムの実行を制御するさらなる情報を提供する１つ以上の「引数」を入力した。例えば、典型的な引数は、プログラムの動作に影響を与え、プログラムが処理するデータファイルの名前を含んでいた。引数が、処理するデータファイル（例えば、コンテンツがその実行可能プログラム（例えば、ワードプロセッサ）によりサポートされていない表計算ソフト）を指定した場合、その結果は、システムの障害からスクランブルした表示まで様々である。この問題はまた、異なるベンダーから販売される同様のソフトウェア間にも存在する。すなわち、あるベンダーのワードプロセッサは、通常、別のベンダーのワードプロセッサに関連するファイルを読むことができない。
【０００３】
この問題に対する１つのソリューションは、有志による命名規則に関連する。すなわち、ファイル名は、それらの内容を指定するピリオドと拡張子で終了する。しかし、異なるベンダーが同一のファイル拡張子を採用しないこと、ファイル名拡張子が正しいこと、またはファイルの内容が拡張子によって正確に指定されることを保証することはできなかった。さらに、ユーザが、起動のための適切な実行可能プログラムを有していると仮定しても、見慣れない拡張子を有するファイルに直面したユーザが、正しい実行可能プログラムを利用してファイルのコンテンツにアクセスすることを保証することはできなかった。
【０００４】
ＣＡ州ＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  ＣｏｍｐｕｔｅｒのＭＡＣＩＮＴＯＳＨ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ（ＭａｃＯＳ）は、デスクトップコンピュータのこの問題に対して１つのソリューションを導入した。ＭａｃＯＳを実行するコンピュータに格納される各ファイルは、そのファイルに関連するファイルタイプおよびクリエータ識別子を有する。ＭａｃＯＳの下の各実行可能ファイルは、そのファイルが実行可能であることを示す特別のファイルタイプ、ならびにクリエータ識別子が編集可能であるそのファイルのクリエータ識別子と整合する関連するクリエータ識別子を有した。データファイルを編集するために、ユーザは、データファイルのグラフィカル表現を選択し、それにより、データファイルのクリエータ識別子を共有する関連する実行可能プログラムの実行を自動的に開始した。コンピュータに選択されたデータファイルのクリエータ識別子と整合するクリエータ識別子が欠けていた場合、ユーザには、その事実についてユーザに通知するダイアログが表示された。
【０００５】
デスクトップの範囲を超えて広まり、現代のコンピュータネットワークは、ノードと呼ばれ、通信リンクを介して他のコンピュータと通信する多くのコンピュータシステムからなる。通常、いくらかのノードは、クライアントノードであり、別のいくらかのノードは、サーバノードである。クライアントノードは、サーバノードにクエリを系統立て、送達する。クライアントノードのユーザは、クライアントノードにおいて動作するユーザインターフェースを介して、クエリを入力する。サーバノードは、そのクエリを評価して、クライアントノードにクライアントのユーザインターフェースにおいて表示する応答を表示する。
【０００６】
通常、サーバノードは、クライアントノードによってアクセスされ、かつ実行される様々なアプリケーションプログラムを支配する。クライアントノードがアプリケーションプログラムを起動する場合、アプリケーションプログラムの実行は、コンピュータネットワークが従うコンピューティングモデルに依存して、クライアントノードまたはサーバノードのどちらかにおいて生じる。サーバベースのコンピューティングモデルでは、サーバノードが、アプリケーションプログラムを実行し、クライントユーザインターフェースの制御情報のみが、コンピュータネットワークを介してクライアントノードに対して表示のために送信される。クライアントベースのコンピューティングモデルでは、サーバノードが、アプリケーションプログラムをクライアントノードに送信することにより、クライアントノードが、クライアントノードのリソースを利用してプログラムを実行する。
【０００７】
現代のコンピュータネットワークのユーザは、ＭａｃＯＳによりデスクトップコンピュータに提供された機能と同様の機能、ならびにワシントン州レイモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより提供されるオペレーティングシステムのＷＩＮＤＯＷＳ（Ｒ）シリーズのメンバを所望する。しかし、クライアント−サーバネットワークでは、実行可能プログラム、データファイル、およびユーザの仮想デスクトップの全てが、異なるコンピュータに存在し得る。この場合、データファイルの選択により、通常、上述のオペレーティングシステムの機能を呼び出し、データファイルと同じコンピュータ上の実行可能プログラムの実行の開始を試みる。いくつかの理由のために、これは、ユーザに所望される行為である可能性が低い。いくつかの理由とは、データファイルを格納するコンピュータが、所望のアプリケーションを有しなくてもよいということ、実行可能プログラム等を実行する際に大幅なパフォーマンスの低下を他のユーザに引き起こし得るが、データファイルを格納するコンピュータが、共有されてもよいということ等である。従って、分散型のプログラムの実行を促進する装置および方法を提供することが望ましく、ここで、あるコンピュータ上のデータファイルまたはその表示の選択により、別のコンピュータ上の関連する実行可能プログラムの実行を開始する。
【発明の開示】
【課題を解決するための手段】
【０００８】
（発明の要旨）
本発明は、分散型のプログラムの実行方法に関する。ある局面では、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおける分散型のプログラムの実行方法に関する。この方法は、データファイルのタイプとサーバ上で実行する実行可能プログラムとの関連を指定するマッピングを受信するステップを包含する。この方法はまた、クライアントシステムに格納されたデータファイルのグラフィカル表現を表示するステップと、データファイルのグラフィカル表現の選択を受信するステップとを包含する。この方法はさらに、受信されたマッピングを利用して、選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップと、識別された実行可能ファイルを実行するリクエストを送信するステップとを包含する。
【０００９】
ある実施形態では、マッピングは、実行可能プログラムに対する入力として、データファイルのタイプに関連した情報、サーバと接続するプログラム、データを処理する実行可能プログラム、および他のパラメータを含む。別の実施形態では、マッピングは、周期的、または必要とされるときという方式で更新され得る。さらに別の実施形態では、クライアントシステムのファイルは、受信されたマッピングを含むように修正される。クライアントは、マッピングから実行可能プログラムとその位置とを識別し得、識別されたプログラムを実行するサーバ（単数または複数）にリクエストを送信し得る。
【００１０】
別の局面では、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。この方法は、データファイルのタイプとサーバシステムにおいて実行する実行可能プログラムとの関連を指定するマッピングを提供するステップを包含する。このデータファイルは、クライアントシステムに格納される。この方法はまた、実行可能プログラムを実行するリクエストを受信するステップと、サーバにおいて実行可能プログラムを実行するステプとを包含する。
【００１１】
さらに別の局面において、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおける分散型のプログラムの実行方法に関する。この方法は、サーバシステムに格納されるデータファイルのグラフィカル表現を表示するステップと、グラフィカル表現の選択を受信するステップとを包含する。この方法はまた、データファイルのグラフィカル表現の選択を送信するステップと、選択されたデータファイルに関連する実行可能プログラムを実行するリクエストを受信するステップとを包含する。このリクエストは、サーバシステムに送信される。この方法は、選択されたデータファイルに関連する実行可能プログラムを実行するステップを包含する。
【００１２】
ある実施形態において、この方法はまた、選択されたデータファイルに関連するデータを受信するステップを包含する。実行プログラムは、処理する受信されたデータを利用する。別の実施形態において、選択されたデータファイルへのポインタが受信され、このポインタは、サーバシステムから選択されたデータファイルに関連するデータを取り出すために利用され得る。
【００１３】
さらに別の局面では、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。この方法は、データファイルのタイプとクライアントシステムにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップを包含する。この方法はまた、サーバシステムにデータファイルを格納するステップと、格納されたデータファイルの選択を受信するステップと、受信されたマッピングを利用して、選択されたデータファイルのタイプに関連する実行可能プログラムを識別するステップとを包含する。この方法はさらに、識別された実行可能プログラムを実行するリクエストをクライアントシステムに送信するステップを包含する。
【００１４】
ある実施形態では、データファイルは、サーバシステムにおいて、受信されたマッピングを含むように修正される。受信されたマッピングはまた、周期的な方式または必要とされるときという方式で更新され得る。
【００１５】
さらに別の局面において、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。この方法は、データファイルのタイプとクライアントシステムにおいて実行する実行可能プログラムとの間の関連を指定するマッピングを受信するステップを含む。この方法はまた、サーバシステムにデータファイルを格納するステップと、クライアントシステムにおいて格納されたデータファイルの選択を受信するステップと、サーバシステムへデータファイルの選択を送信するステップとを包含する。この方法はさらに、関連を指定する受信されたマッピングを利用して、選択されたデータファイルのタイプに関連した実行可能プログラムを識別するステップを包含する。この方法はさらに、識別された実行可能プログラムを実行させるリクエストをクライアントシステムに送信するステップと、クライアントにおいて実行可能プログラムを実行するステップとを包含する。
【００１６】
ある局面において、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。この方法は、ウェブサーバに格納されるデータのグラフィカル表現を表示するステップを包含する。このデータファイルに関連する第２の実行可能プログラムに関する情報を含む第１の実行可能プログラムを実行させるリクエストが受信される。第２のプログラムは、クライアントシステムまたは複数のサーバシステムのうちの１つにおいて実行する。第２の実行可能プログラムからのアプリケーション出力データは、表示するために、第１の実行可能プログラムによって受信され、かつフォーマット化される。他の実施形態では、この方法はまた、第１の実行可能プログラムを受信するステップを包含する。さらに別の実施形態では、この方法は、識別された実行可能プログラムがクライアントシステムまたは複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップを包含する。さらに別の実施形態において、この方法は、第１の実行可能プログラムを利用して、アプリケーション出力データを表示するステップを包含する。これらの実施形態のいくらかにおいて、この方法は、データファイルに関連するデータを受信するステップを包含する。
【００１７】
別の局面において、この方法は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。データファイルのグラフィカル表現が送信され、第１のプログラムを実行させるリクエストがなされる。第１の実行可能プログラムは、アプリケーション出力データを受信する。このリクエストは、クライアントシステムまたは複数のサーバシステムのうちの１つのどちらかにおいて実行する、第２の実行可能プログラムに関する情報を含み得る。ある実施形態では、この方法は、第１の実行可能プログラムまたはデータファイルへのポインタを提供するステップを包含する。さらに別の実施形態では、ある方法は、提供されたポインタを利用して、データファイルに関連するデータに対するリクエストをサービスするステップを包含する。さらに別の実施形態では、この方法は、データファイルのコンテンツを提供するステップを包含する。
【００１８】
さらに別の局面では、本発明は、クライアントシステムおよび複数のサーバシステムを含むネットワークにおいて、分散型のプログラムの実行を可能にする方法に関する。この方法は、ウェブシステムにより、ウェブサーバに格納されるデータファイルのグラフィカル表現を送信するステップを包含する。クライアントシステムには、アプリケーション出力を受信する第１の実行可能プログラムを実行するリクエストが提供される。このリクエストは、クライアントシステムまたは複数のサーバシステムのうちの１つにおいて実行する第２の実行可能プログラムに関する情報を含む。ある実施形態では、本発明は、クライアントシステムに第１の実行可能プログラムを提供するステップを包含する。さらなる実施形態では、本方法は、クライアントシステムにおいて、第２の実行可能プログラムがクライアントシステムまたは複数のサーバシステムのうちの１つのどちらにおいて実行されるのかを判定するルールを受信するステップを包含する。
【００１９】
本発明は、添付の特許請求の範囲の特徴により説明される。本発明の上述の利点およびさらなる利点は、以下の詳細な説明および添付の図面を参照して、よりよく理解され得る。
【発明を実施するための最良の形態】
【００２０】
（発明の詳細な説明）
図１は、ネットワーク４０を介してコンピューティングシステム（アプリケーションサーバ）３０、３２、３４および３６と通信する、第１のコンピューティングシステム（クライアントノード）１０および第２のコンピューティングシステム（クライアントノード）２０を示す。ネットワーク４０は、ローカルエリアネットワーク（ＬＡＮ）、あるいはインターネットまたはＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ等のワイドエリアネットワーク（ＷＡＮ）であり得る。クライアントノード１０、２０のユーザは、標準的電話回線、ＬＡＮ、またはＷＡＮリンク（例えば、Ｔ１、Ｔ３、５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ、フレームリレー、ＡＴＭ）、およびワイヤレス接続を含む種々の接続を通じてネットワークに接続され得る。これらの接続は、種々の通信プロトコル（例えば、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、Ｅｔｈｅｒｎｅｔ（Ｒ）、ＲＳ２３２およびダイレクト非同期接続等）を用いて確立され得る。
【００２１】
１実施形態において、クライアントノード１０は、パーソナルコンピュータ（例えば、ｘ８６、６８０ｘ０、ＰｏｗｅｒＰＣ、ＰＡ−ＲＩＳＣ、またはＭＩＰＳプロセッサ系列からのマイクロプロセッサを用いる）、スマートターミナルまたはダムターミナル、ネットワークコンピュータ、ワイヤレスデバイス、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、あるいは、グラフィックユーザインターフェースおよび十分な持続性ストレージを有する他のコンピューティングデバイスであり、ネットワーク４０を介してアプリケーションサーバ３０、３２、３４からダウンロードされたアプリケーションプログラムを実行する。クライアントノード１０によってサポートされるオペレーティングシステムは、オペレーティングシステムのＷＩＮＤＯＷＳ（Ｒ）系列任意の製品、ＭａｃＯＳ、Ｊａｖａ（Ｒ）ＯＳ、および、Ｕｎｉｘ（Ｒ）の種々の異形（例えば、Ｓｏｌａｒｉｓ、ＳｕｎＯＳ、Ｌｉｎｕｘ、ＨＰ−ＵＸ、Ａ／ＩＸ、およびＢＳＤベースのディストリビューション等）を含み得る。クライアントノード１０は、ディスプレイ１２、キーボード１４、ダウンロードされたアプリケーションプログラムを格納するためのメモリ１６、プロセッサ１７、およびマウス１８を備え得る。メモリ１６は、持続性または揮発性ストレージを提供し得る。
【００２２】
プロセッサ１７は、アプリケーションプログラムをクライアントノード１０上でローカルに実行し、かつ、結果として生じたウィンドウベースのデスクトップを表示画面１２上に表示し得る。クライアントノード１０上での、このようなローカル処理は、上述のクライアントベースのコンピューティングモデルに従う。クライアントノード１０のある実施形態上に現れる典型的なウィンドウズ（Ｒ）ベースのデスクトップが、図１Ｂに示される。クライアントノード２０に利用可能なリソースは、１つ以上のアイコン１００としてグラフィックで示される。メモリ１６は、ハードディスクアイコン１０４として示される。メモリ１６に格納された、ダウンロードされたアプリケーションプログラムおよびデータファイルは、個々のファイルアイコンとして示される。例えば、メモリ１６は、アイコン１０８として示される、ワードプロセッサを実現する、ダウンロードされたアプリケーションプログラム、および、アイコン１１２として示された、ワードプロセッサプログラムによって処理するように適合されたドキュメントを含むデータファイルを含む。
【００２３】
ユーザは、通常、キーボード１４、マウス１８、または、触覚インターフェース（図示せず）等の他の入力デバイスを用いてデスクトップを操作する。入力デバイス用いて、ユーザは、アイコン１０８を選択することによってワードプロセッサプログラムの実行を呼出す。ワードプロセッサを用いて、ユーザは、アイコン１１２によって表されるドキュメントを含むデータファイルのコンテンツを操作する。しかしながら、ユーザがデータファイルそれ自体の選択に有利なように、ワードプロセッサプログラムをロケートおよび起動することを避ける確率がより高い。上述のように、グラフィカルユーザインターフェースを有する最近のオペレーティングシステムのほとんどは、選択されたデータファイルを検査し、選択されたデータファイルと関連した１つ以上のパラメータを取り出し、選択されたデータファイルと関連したデスクトップコンピュータ上で実行可能なアプリケーションプログラムを識別し、関連したアプリケーションプログラムの実行を開始し、その後、処理するために、選択されたデータファイルのコンテンツを関連したアプリケーションプログラムに提供する。
【００２４】
他の実施形態において、クライアントノード２０は、任意の端末（ウィンドウズ（Ｒ）または非ウィンドウベースの）、またはサーバベースのコンピューティングモデルに従って動作するシンクライアントデバイスである。サーバベースのコンピューティングモデルにおいて、アプリケーションプログラムの実行は、全体がアプリケーションサーバ３０、３２、３４上で生じ、、ユーザインターフェース、キーストローク、およびマウスの移動がネットワーク４０を介してクライアントノード２０に伝送される。ユーザインターフェースは、テキスト方式（例えば、ＤＯＳ）またはグラフィック方式（例えば、ＷＩＮＤＯＷＳ（Ｒ））であり得る。クライアントノード２０によってサポートされるプラットフォームは、ＤＯＳ、およびウィンドウズ（Ｒ）ベースの端末用のＷＩＮＤＯＷＳ（Ｒ）ＣＥを含む。クライアントノード２０は、表示画面２２、キーボード２４、マウス２８、プロセッサ（図示せず）、および持続性ストレージ（図示せず）を含む。
【００２５】
アプリケーションサーバ３０、３２、３４および３６は、ネットワークの他の部分（例えば、ワークステーション、プリンタ）へのアクセスを制御する任意のコンピューティングデバイスである。説明の都合上、４つのアプリケーションサーバが示されるが、本発明の種々の実施形態において、より多いか、より少ないアプリケーションサーバがネットワーク４０に接続されることを理解されたい。サーバ３０、３２、３４、および３６は、上述のように、クライアントベースのコンピューティングモデルまたはサーバベースのコンピューティングモデルに従って動作する。
【００２６】
各アプリケーションサーバ３０、３２、３４、および３６は、クライアントノード１０および２０によってアクセスするための１つ以上のアプリケーションプログラムをホストする。使用するクライアントノードに利用可能にされたアプリケーションは、公表アプリケーションとも呼ばれる。このようなアプリケーションの例は、ＷＯＲＤ等のワードプロセシングプログラム、およびＥＸＣＥＬなどのスプレッドシートプログラム（両方とも、ワシントン州、レイモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから販売されている）、財務報告プログラム、顧客登録プログラム、技術サポートプログラム、顧客データベースプログラム、またはアプリケーションセットマネージャを含む。
【００２７】
１実施形態において、サーバ３０、３２および３４は、同じドメイン３８に属する。ネットワーク４０において、ドメインは、１つのセキュリティデータベースによって制御されるアプリケーションサーバおよびクライアントノードのグループを含むサブネットワークである。１実施形態において、ドメインは、１つ以上の「サーバファーム」、すなわちリンクされて、単一のサーバシステムとして機能し、集中管理を提供するサーバのグループを含む。逆に、サーバファームは、１つ以上のドメインを備え得る。２つの異なったドメインのサーバが同じサーバファームに属するためには、ユーザが、単一の認証身元証明を用いて各ドメインと関連したリソースにアクセスすることを可能にする異なったドメイン間の関連を指定するドメイン間に信頼関係が存在することが必要であり得る。
【００２８】
１実施形態において、アプリケーションサーバ３６は、ドメイン３８とは異なるドメインである。別の実施形態において、アプリケーションサーバ３６は、サーバ３０、３２および３４と同じドメインである。どちらの実施形態でも、アプリケーションサーバ３０、３２および３４は、１つのサーバファームに属し得るが、サーバ３６は、別のサーバファームに属するか、または、アプリケーションサーバ３０、３２、３４および３６のすべては同じサーバファームに属し得る。新しいサーバがネットワーク４０に接続された場合、新しいサーバは、既存のサーバファームに加わるか、または、新しいサーバファームを開始する。
【００２９】
１実施形態において、ネットワーク４０は、アプリケーションサーバ３０、３２、３４および３６間のロードレベルのバランシングを実行するためのマスターサーバノードを備える。別の実施形態において、マスターサーバノードは、アプリケーションサーバ３０、３２、３４または３６の１つである。マスターサーバノードは、他のアプリケーションサーバの各々に対応するサーバアドレスおよびロード情報のリストを備える。利用可能なサーバ、およびこれらのサーバの対応するロードレベルのリストを用いて、マスターサーバノードは、利用可能なサーバおよび対応するロードレベルのリストに基づいて、アプリケーションを実行する特定のサーバノードにクライアントノードを方向付ける。あるいは、アプリケーションサーバ３０、３２、３４、３６間で、ピアツーピアの態様でコラボレーションして、ロードレベル等の管理情報を交換し、任意のサーバ３０、３２、３４、３６が、クライアントノード１０、２０によって生成されたリクエストに応答することを可能にする。
【００３０】
（ＰＲＯＧＲＡＭ  ＮＥＩＧＨＢＯＲＨＯＯＤ）
本発明の原理により、クライアントノード１０、２０のどちらのユーザも、ネットワーク４０におけるアプリケーションサーバ３０、３２、３４および３６によってホストされるアプリケーションプログラムの可用性を知っているが、このようなアプリケーションを検索する場所を知っていること、またはこのようなアプリケーションにリンクするために必要な技術情報を入力することをユーザに要求しない。これらの利用可能なアプリケーションプログラムは、ユーザの「ｐｒｏｇｒａｍ  ｎｅｉｇｈｂｏｒｈｏｏｄ」を含む。クライアントノードのｐｒｏｇｒａｍ  ｎｅｉｇｈｂｏｒｈｏｏｄを決定するシステムは、アプリケーションプログラム（以後、「Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ」アプリケーションと呼ばれる）、アプリケーションプログラムのコンポーネントを格納するためのメモリ、アプリケーションプログラムを実行するプロセッサを備える。
【００３１】
Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、後述されるように、クライアントノード１０のメモリおよび／またはアプリケーションサーバ３０、３２、３４および３６にインストールされる。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、サービス、すなわちアプリケーションプログラミングインターフェース（ＡＰＩ）およびユーザインターフェース（ＵＩ)プログラムの集まりであり、クライアントノード１０、２０のユーザに、各クライアントノードが使用（例えば、実行）を認可されたアプリケーションサーバによってホストされるアプリケーションプログラムを公開する。
【００３２】
Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションにより動作するアプリケーションサーバは、サーバファーム内のアプリケーションサーバの各々からのアプリケーション関連情報を収集する。各ホストされたアプリケーションのアプリケーション関連情報は、そのアプリケーションをホストするサーバのアドレス、アプリケーション名、そのアプリケーションの使用が認可されたユーザまたはユーザのグループ、アプリケーションによってサポートされるデータタイプ、サポートされるデータタイプと関連した任意のファイルタイプ、アプリケーションと関連した任意のファイルタイプ、サーバノードまたはクライアントノードでのアプリケーションの実行を指定する条件付き規則、およびアプリケーションを動作させるために接続を確立する前に、クライアントノードに必要とされる最小の能力を含むが、これらに限定されない。例えば、アプリケーションは、ビデオデータを流し得、従って、必要とされる最小の能力は、クライアントノードがビデオデータをサポートすることである。他の例示的用件は、クライアントノードがオーディオデータまたは暗号データをサポートすることである。アプリケーション関連情報は、後述されるように、データベースに格納され得る。
【００３３】
クライアントノードがネットワーク４０と接続した場合、クライアントノードのユーザは、ユーザ身元証明（ｕｓｅｒ  ｃｒｅｄｅｎｔｉａｌ）を提供する。ユーザ身元証明は、通常、ユーザ名、パスワード、およびドメイン名を含み、これらに対してユーザが認可される。ユーザ身元証明は、対称鍵または楕円曲線暗号、ユーザのバイオメトリック特性、または、クライアントノードのユーザの識別が認証のために達成および提示される任意の他の手段に基づいて、スマートカード、タイムベーストークン、社会保障番号、ユーザパスワード、個人識別（ＰＩＮ）番号、デジタル身元証明から取得される。
【００３４】
クライアントノードに応答するサーバは、ユーザ身元証明に基づいてユーザを認証する。１実施形態において、ユーザ身元証明は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションが実行するのがどこであってもその場所に格納される。例えば、クライアントノード１０がＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを実行する１実施形態において、ユーザ身元証明は、クライアントノード１０にも格納される。アプリケーションサーバがＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを実行する別の実施形態において、ユーザ身元証明は、そのサーバに格納される。
【００３５】
ユーザ身元証明およびアプリケーション関連情報から、サーバは、さらに、アプリケーションサーバによってホストされるどのアプリケーションプログラムがクライアントノードのユーザによる使用のために利用可能であるのかを決定する。サーバは、クライアントノードに利用可能なアプリケーションプログラムを表す情報を送信する。このプロセスは、クライアントノードのユーザがアプリケーション接続をセットアップする必要を無くす。さらに、サーバの管理者は、種々のクライアントノードユーザ間のアプリケーションへのアクセスを制御し得る。
【００３６】
サーバによって実行されるユーザ認証は、クライアントノードに表示された、各ホストされたアプリケーションプログラムの利用を認証するために十分であり得るが、このようなアプリケーションは、別のサーバに常駐し得る。従って、クライアントノードが、ホストされたアプリケーションの１つの実行を開始した場合、そのアプリケーションの使用を認証するために、ユーザによるユーザ身元証明のさらなる入力が２つ不必要であり得る。従って、ユーザ身元証明の単一のエントリは、クライアントユーザによるさらなる手動のログオン認証プロセスなしに、利用可能なアプリケーションを決定し、かつ、このようなアプリケーションの起動を認可するために利用される。
【００３７】
クライアントノード１０、２０またはアプリケーションサーバは、図２Ａ〜図２Ｃと関連して記載されたＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを起動し得る。その結果は、クライアントノード１０、２０の表示画面１２、２２上に表示される。グラフィック環境において、結果は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄグラフィックウィンドウに表示され得、各認可されたアプリケーションプログラムは、そのウィンドウにおけるグラフィックアイコンによって表され得る。
【００３８】
Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションの１実施形態は、クライアントノード１０、２０の使用が認可されず、認可された（すなわち、利用可能な)プログラムのみを表示するアプリケーションプログラムをフィルタリングする。他の実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、認可されたアプリケーションおよび認可されていないアプリケーションを表示する。認可されていないアプリケーションがディスプレイからフィルタリングされない場合、このようなアプリケーションが利用不可能であることを示す通知が提供され得る。あるいは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、クライアントノード１０、２０の実行が認可されているアプリケーション、または認可されていないアプリケーションを識別することなく、アプリケーションサーバ３０、３２、３４、３６によってホストされたすべてのアプリケーションをクライアントノードのユーザにリポートし得る。次に、クライアントノード１０、２０がこれらのアプリケーションの１つを動作させることを試みる場合に認可が決定される。
【００３９】
図２Ａは、サーバがＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ(ＰＮ)アプリケーションを起動し、かつ、ＰＮアプリケーションの結果をクライアントノード１０に提供する例示的プロセスを示す。サーバは、クライアントノード１０による特定のアプリケーションプログラムのリクエスト４２に応答して、ＰＮアプリケーションを起動する。リクエストは、マスターサーバノード、この例においては、サーバ３０に進む。このマスターサーバノード３０は、ロードバランシングおよびアプリケーションの可用性を考慮して、求められているアプリケーションがサーバ３２上で利用可能であることをクライアントノード１０に示す（矢印４３）。クライアントノード１０およびサーバ３２は、接続を確立する（矢印４５および４６）。この接続によって、サーバ３２は、特定のアプリケーションの実行可能コードをクライアントノード１０に転送し得、ここで、クライアントノード１０およびサーバ３２は、クライアントベースのコンピューティングモデルにより動作する。あるいは、サーバ３２は、特定のアプリケーションを実行し、グラフィカルユーザインターフェースをクライアントノード１０に転送し、ここで、クライアントノード１０およびサーバ３２は、サーバベースのコンピューティングモデルにより動作する。さらに、マスターサーバノード３０またはサーバ３２は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーション４１を実行し、かつ、その結果（矢印４３または４６）をクライアントノード１０にプッシュして戻し得、これにより、クライアントノード１０がＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションをリクエストした場合、このプログラムネイバーフードは、クライアントノード１０にてすでに利用可能である。
【００４０】
図２Ｂは、クライアントノード１０が、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションの実行を開始し、サーバが、そのＰＮアプリケーションの結果をクライアントノード１０に提供する別の例示的プロセスを示す。クライアントノード１０は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを起動する（例えば、アプリケーションを表すＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアイコン４７を選択することによって）。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションのリクエスト５０は、マスターサーバノード、この例において、サーバ３０に方向付けられる。マスターサーバノード３０は、アプリケーションがマスターサーバノード３０上にあり、かつ、その結果をクライアントノード１０に戻す場合、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを実行し得る。あるいは、マスターサーバノード３０が、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーション４１が別のサーバ、この例において、サーバ３２上で利用可能であることをクライアントノード１０に示し得る（矢印５１）。クライアントノード１０およびサーバ３２は、クライアントノード１０が、ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーション４１の実行をリクエストする接続（矢印５３および５４）を確立する。サーバ３２は、アプリケーション４１を実行し得、その結果（すなわち、グラフィカルユーザインターフェース）をクライアントノード１０に転送し得る。
【００４１】
図２Ｃは、クライアントノード１０がＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションの実行を、この例において、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂを介して開始する別の例示的プロセスを示す。クライアントノード２０は、ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ（ワシントン州、レッドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより製造）等のウェブブラウザアプリケーション８０を実行する。クライアントノード２０は、ウェブブラウザ８０を介して、サーバ３０上に常駐するＨＴＭＬページに対応するＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）アドレスにアクセスするリクエスト８２を送信する。いくつかの実施形態において、サーバ３０によってクライアントノード２０に戻された第１のＨＴＭＬページ８４は、クライアントノード２０を識別しようとする認証ページである。
【００４２】
認証ページは、クライアントノード２０が、認証のためにウェブブラウザ８０を介してユーザ身元証明をサーバ３０に送信することを可能にする。送信されたユーザ身元証明は、サーバ３０によってか、またはファームにおける別のサーバによって検証される。これは、セキュリティドメインがサーバ３０上で用いられる（ｐｒｏｊｅｃｔ）ことを可能にする。例えば、サーバ３０がＷＩＮＤＯＷＳ（Ｒ）ＮＴオペレーティングシステムを動作させ、認証サーバがＵＮＩＸ（Ｒ)オペレーティングシステムを動作させた場合、ＵＮＩＸ（Ｒ）セキュリティドメインは、サーバ３０上で用いられるといわれ得る。ユーザ身元証明は、「暗号化されずに（ｉｎ  ｔｈｅ  ｃｌｅａｒ）」送信され得るか、これらは、暗号化され得る。例えば、ユーザ身元証明は、カリフォルニア州サンマテオのＲＳＡ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ、Ｉｎｃ．によって製造されるＲＣ３アルゴリズムを用いてデータを暗号化するＳｅｃｕｒｅ  Ｓｏｋｅｔ  Ｌａｙｅｒ（ＳＳＬ）接続を介して送信され得る。
【００４３】
サーバ３０は、クライアントノード２０から受信したユーザ身元証明を検証し得る。あるいは、サーバ３０は、ユーザ身元証明を認証のために別のサーバにわたし得る。この実施形態において、認証サーバは、サーバ３０とは異なったドメインであり得る。クライアントノード２０の認証されたユーザ身元証明は、ウェブブラウザ８０によって表示されないフィールドにおいて、セッション毎の（ｐｅｒｓｅｓｓｉｏｎ）クッキーで、または、ウェブページの保守において一般的な任意の他の態様で、クライアントノード２０に格納され得る。いくつかの実施形態において、サーバ３０が関連付けられるサーバファームは、ゲストユーザ、すなわち、ユーザ身元証明が割り当てられていないユーザが、ファームにおけるサーバによってホストされるアプリケーションにアクセスすることを可能にし得る。これらの実施形態において、認証ページは、それがゲストユーザであることをクライアントノード２０が識別することを可能にする、ボタンまたはメニュ選択等のメカニズムを提供し得る。他の実施形態において、サーバ３０は、認証ページ全体を省略し得る。
【００４４】
図２Ｃをさらに参照して、一旦クライアントノード２０がサーバ３０によって認証されると、サーバは、クライアントノード２０がアクセスしたアプリケーションプログラムを表すグラフィックアイコン５７、５７’が現れるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ５８を含むＨＴＭＬページ８８を準備し、かつ、これをクライアントノード２０に送信する。クライアントノード２０のユーザは、アイコン５７を選択することによって、アイコン５７によって表されるアプリケーションの実行を呼出す。
【００４５】
図３Ａは、クライアントノード１０、マスターサーバノード（この例においてはサーバ３０）、およびサーバ３２間の通信の例示的プロセスを示す。クライアントノード１０は、サーバ３２とのアクティブな接続７２を有する。クライアントノード１０およびサーバ３２は、第１のアプリケーションプログラムの実行に関する情報を交換するためにアクティブな接続７２を用い得る。クライアントノード１０のユーザ身元証明は、クライアントノードに格納される。このようなユーザ身元証明の格納は、キャッシュメモリまたは持続性ストレージに行われ得る。
【００４６】
この実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｈｂｏｒｈｏｏｄアプリケーションは、クライアントノード１０上で動作する。クライアントノードディスプレイは、第２のアプリケーションプログラムを表すグラフィックアイコン５７を示すＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ  ｗｉｎｄｏｗ５８を有する。クライアントノード１０のユーザは、マウスまたは他の入力デバイスでアイコン５７を選択することによって、第２のアプリケーションプログラムを起動し得る。リクエストは、接続５９を介してマスターサーバノード３０に進む。マスターサーバノード３０は、求められているアプリケーションがサーバ３２上で利用可能であることを、接続５９を介してクライアントノード１０に示す。クライアントノード１０は、第２の接続７０を確立するという信号をサーバ３２に送る。サーバ３２は、第２のアプリケーションプログラムへのアクセスを認証するために、クライアントノード１０からユーザ身元証明をリクエストする。認証が成功すると、クライアントノード１０およびサーバ３２が第２の接続７０を確立し、第２のアプリケーションプログラムの実行に関する情報を交換する。従って、クライアントノード１０およびサーバ３２は、複数の接続を介して互いに通信する。
【００４７】
図３Ｂは、クライアントノード２０、マスターサーバノード（この例において、サーバ３０）、およびサーバ３２、３４および３６間の通信の例示的プロセスを示す。クライアントノード２０は、サーバ３２とのアクティブな接続７３を有する。このクライアントノード２０およびサーバ３２は、第１のアプリケーションプログラムの実行に関する情報を交換するために、アクティブな接続７３を用い得る。クライアントノード２０のユーザ身元証明は、サーバ３２においてキャッシュメモリまたは持続性ストレージに格納される。
【００４８】
この実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、サーバ３２上で動作する。サーバ３２は、サーバベースのクライアントエンジン６２を提供するソフトウェアを備え、サーバ３２が、クライアントノード２０の容量で動作することを可能にする。クライアントノード２０のディスプレイは、第２のアプリケーションプログラムおよび第３のアプリケーションプログラムをそれぞれ表すグラフィックアイコン５７、５７’が現れるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ５８を有する。クライアントノード２０のユーザは、アイコン５７を選択することによって第２のアプリケーションプログラムを起動し得る。第２のアプリケーションプログラムの起動を求めるリクエストは、アクティブな接続７３を介してサーバ３２に進み、サーバ３２は、このリクエストをマスターサーバノード３０に転送する（矢印６５）。
【００４９】
マスターサーバノード３０は、求められるアプリケーションがサーバ３４上で利用可能であることをサーバ３２に示す（矢印６５）。サーバ３２は、サーバ３４と連絡をとり接続６６を確立する。アプリケーションへのアクセスを認証するために、サーバ３４は、サーバ３２からクライアントノード２０のユーザ身元証明を取得する。サーバ３２およびサーバ３４は、サーバ３２が第２のアプリケーションの実行をリクエストし、サーバ３４がグラフィカルユーザインターフェースの結果をサーバ３２に戻す接続(矢印６６）を確立する。サーバ３２は、グラフィカルユーザインターフェースの結果をクライアントノード２０に転送し、ここで、この結果が表示される。従って、クライアントノード２０とサーバ３４との間で交換された情報は、サーバ３２を通過する。
【００５０】
同様に、クライアントノード２０は、アイコン５７’を選択することによって第３のアプリケーションプログラムを起動し得る。第３のアプリケーションプログラムの起動を求めるリクエストは、サーバ３２に進む。サーバ３２は、マスターサーバノード３０にリクエストを転送し、マスターサーバノードは、どのサーバがこのリクエストを処理し得るかを決定するために、ロードバランシングおよびアプリケーションプログラムの可用性を考慮する。この例において、マスターサーバノードは、サーバ３６が第３のアプリケーションプログラムを動作させ得ることを示す。
【００５１】
サーバ３２およびサーバ３６は、サーバ３２が第３のアプリケーションプログラムの実行をリクエストし、サーバ３６がこのリクエストをサーバ３２に戻す接続（矢印７４）を確立する。第３のアプリケーションプログラムの実行を可能にするために、サーバ３６は、サーバ３２から取得された、クライアントノード２０のユーザ身元証明を認証し得る。サーバ３２は、この結果をクライアントノード２０に転送し、ここで、この結果は、表示される。従って、第３のアプリケーションプログラムを実行した結果は、サーバ３２を通じてクライアントノード２０とサーバ３６との間に進む。
【００５２】
この説明から、クライアントノード２０が、サーバ３２との１つの接続を通じて複数のアプリケーションプログラムを動作させ得る一方で、サーバ３２は、複数の接続を維持する（この例において、サーバ３４との１つの接続、およびサーバ３６との第２の接続）ことが理解されるべきである。さらに、サーバ３２は、クライアントノード２０に送信するために、サーバ３４から受信した情報を、サーバ３６から受信した情報とマージして１つのデータストリームにする。
【００５３】
図３Ｃは、クライアントノード２０、マスターサーバノード（この例において、サーバ３０）、ならびにサーバ３２および３４間の通信の例示的プロセスを示す。クライアントノード２０は、サーバ３２とのアクティブな接続７６を有する。クライアントノード２０およびサーバ３２は、第１のアプリケーションプログラムの実行に関する情報を交換するために、アクティブな接続７６を用い得る。クライアントノード２０は、キャッシュメモリまたは持続性ストレージにユーザ身元証明を格納し得る。
【００５４】
この実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、サーバ３２上で動作する。クライアントノード２０のディスプレイは、第２のアプリケーションプログラムを表すグラフィックアイコン５７が現れるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ５８を有する。クライアントノード２０のユーザは、アイコン５７を選択することによって第２のアプリケーションプログラムを起動し得る。第２のアプリケーションプログラムの起動を求めるリクエストは、サーバ３２に進む。サーバ３２は、アプリケーション名、および、第２のアプリケーションが動作するためにクライアントノード２０によって必要とされる性能等のアプリケーション関連情報を戻すことによってクライアントノード２０に応答する（すなわち「コールバック」する）。
【００５５】
サーバ３２によって提供された情報を用いて、クライアントノード２０は、次に、接続７７を介してマスターサーバノード３０と通信して、第２のアプリケーションプログラムを実行するサーバを決定する。この例において、このサーバはサーバ３４である。クライアントノード２０は、その後、サーバ３４との接続７８を確立する。サーバ３４は、クライアントノード２０のユーザを認証するために、クライアントノード２０からユーザ身元証明をリクエストする。第２のアプリケーションプログラムは、サーバ３４上で実行し、サーバ３４は、確立された接続７８を介して、グラフィカルユーザインターフェースをクライアントノード２０に戻す。従って、クライアントノード２０は、複数のサーバ間に複数のアクティブな接続を有し得る。
【００５６】
図３Ｄは、クライアントノード２０と、この例においてウェブサーバとして機能するサーバ３０、ならびにサーバ３２との間の通信の例示的プロセスを示す。クライアントノード２０は、図２Ｃに関してすでに述べられたように、それ自身をサーバ３０に対して認証する。１実施形態において、サーバ３０は、クライアントノード２０に送信するために、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウを構築するためのベースとして用いるＳＧＭＬ、ＨＴＭＬまたはＸＭＬファイル等の出力表示テンプレート９０にアクセスする。テンプレートは、サーバ３０と関連した揮発性または持続性メモリに格納され得るか、あるいは、このテンプレートは、図３Ｄに示されるように、ディスクドライブまたは光学デバイス等のマスメモリ９２に格納され得る。
【００５７】
この実施形態において、テンプレート９０は、ダイナミックインフォーメーションと置換されるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグを含む標準的なＳＧＭＬ、ＨＴＭＬ、またはＸＭＬドキュメントである。タグは、出力表示のどこに、アイコンイメージ等の利用可能アプリケーションに対応する情報を挿入するかをサーバ３０に示す。ある特定の実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグは、ファイル内のコメントの中に埋め込まれ、ファイルが標準的インタプリタとの互換性を保つことを可能にする。別の実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグは、テンプレートのベースとして用いられるマークアップ言語の拡張子である。
【００５８】
本発明により、テンプレートにおいて用いられ得るＨＴＭＬタグの例は、以下のテーブル１に示される。
【００５９】
【表１】
2005505051.tif 000002
他のタグは、コントロールフィールドを設定し、かつ、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションと関連する条件付処理を提供するために提供され得る。
【００６０】
１実施形態において、テンプレートは、例えば、マサチューセッツ州ケンブリッジのＡｌｌａｉｒｅ  Ｃｏｒｐ．によるＣＯＬＤ  ＦＵＳＩＯＮ、または、ワシントン州レッドモンドのＭｉｃｒｏｓｏｆｏ  ＣｏｒｐｏｒａｔｉｏｎによるＡＣＴＩＶＥ  ＳＥＲＶＥＲ  ＰＡＧＥＳを用いて動的に構築される。あるいは、テンプレートは、静的であり得る。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、上述のように、テンプレートを構文解析して、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグと置換される。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用ではないタグは、クライアント２０上で実行するブラウザプログラム８０によって構文解析されるようにファイルに残される。
【００６１】
１実施形態において、ＨＴＭＬテンプレートを入力として受取り、テンプレートに存在するＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグを解釈し、かつ、適切なテキストと置換されるすべてのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄタグによりもとのテンプレートを提供するテンプレートパーサーオブジェクトが提供される。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ専用タグが置換されるべき情報を提供するために、テンプレートパーサーオブジェクトにクッキー、ＵＲＬクエリストリング、またはウェブサーバインターフェースからのコントロールフィールドがわたされ得る。
【００６２】
別の実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、スクリプトが、アプリケーションプログラミングインターフェースを介して情報にアクセスすることを可能にする。スクリプトは、例えば、ＶＢＳｃｒｉｐｔまたはＪＳｃｒｉｐｔ等で書かれ得る。この実施形態において、スクリプトによってなされた問い合わせに応答して、アプリケーションによって戻された情報を用いて出力表示を動的に生成するために、スクリプト言語が用いられる。一旦出力表示が生成されると、これは、ブラウザプログラム８０によって表示するために、クライアントノード２０に送信される。
【００６３】
クライアントノード２０のユーザは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウェブページに表示されるアイコン５７、５７’を選択することによってアプリケーションを起動し得る。いくつかの実施形態において、各アイコン５７、５７’は、エンコードされたＵＲＬであり、このＵＲＬは、アプリケーションのロケーション（すなわち、どのサーバ上でアプリケーションがホストされるか、あるいは、マスターサーバのアドレス）、アプリケーションと関連した起動コマンド、およびアプリケーションの出力が表示されるべき方法を識別するテンプレート（すなわち、ブラウザに「埋め込まれた」ウィンドウ、または別個のウィンドウに）を指定する。いくつかの実施形態において、ＵＲＬは、ファイル、またはファイルに対するリファレンスを含み、このファイルは、クライアントがアプリケーションをホストするサーバへの接続を生成するために必要な情報を含む。このファイルは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションによって動的に生成され得る。クライアントノード２０は、リクエストされたアプリケーション（この例において、サーバ３２）をホストすると識別されたサーバとの接続(矢印９４）を確立し、所望のアプリケーションの実行に関する情報を交換する。いくつかの実施形態において、接続９４は、フロリダ州Ｆｏｒｔ  ＬａｕｄｅｒｄａｌｅのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ、Ｉｎｃ．によって製造されたＩＣＡ（Ｉｎｄｅｐｅｎｄｅｎｔ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｔｅｃｔｕｒｅ)プロトコルを用いてなされる。従って、クライアントノード２０は、ウェブブラウザ６０から分離したウィンドウにおいてアプリケーション出力を表示し得るか、または、アプリケーション出力をウェブブラウザ内に「埋め込み」得る。
【００６４】
図４は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションのクライアントベースの実装用のプログラムコンポーネントの例示的配置を示す。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションのクライアントベースの実装は、サーバがＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを実行するサーバベースのコンピューティングモデルか、または、クライアントノード１０がＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションをローカルに実行するクライアントベースのコンピューティングモデルを用いるネットワークにおいて用いられ得る。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、ＰＮＳＶＣ（Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ  Ｓｅｒｖｉｃｅ）コンポーネント４４、アプリケーションデータベースコンポーネント４８、ＰＮＡＰＩ（Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）コンポーネント５２、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ  ユーザインターフェースコンポーネント５６、およびローカルキャッシュ６０を含む。
【００６５】
アプリケーションサーバ３０は、例えば、サービスコンポーネント（ＰＮＳＶＣ）４４およびアプリケーションデータベース４８を含む。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションのクライアントベースの実装をサポートし得るクライアントノードの代表例であるクライアントノード１０は、アプリケーションプログラムインターフェースＰＮＡＰＩ５２、ユーザインターフェースユーザインターフェースコンポーネント５６、およびローカルキャッシュ６０コンポーネントを含む。ＰＮＡＰＩ５２は、ユーザインターフェースコンポーネント５６およびローカルキャッシュ６０と通信する。ＰＮＳＶＣ４４は、通信リンク６２を介してクライアントノード１０上でアプリケーションデータベース４８およびＰＮＡＰＩ５２と通信する。
【００６６】
通信リンク６２は、例えば、ＩＣＡプロトコルを用いることによって確立され得る。ＩＣＡは、ＩＳＤＮ、フレームリレー、および非同期転送モード（ＡＴＭ)等の工業規格トランスポートプロトコルを用いて、ＴＣＰ／ＩＰ、ＩＰＸ／ＳＰＸ、ＮｅｔＢＥＵＩ等の工業規格ネットワークプロトコルを介して動作するように設計される汎用プレゼンテーションサービスプロトコルである。ＩＣＡプロトコルは、バーチャルチャネルを提供する。これらのチャネルは、データを交換するためのコマンドを出すためにアプリケーション層コードによって用いられ得るセッション指向伝送接続である。バーチャルチャネルコマンドは、クライアントノードの機能と密接に統合されるように設計される。ＩＣＡプロトコルによってサポートされた、あるタイプのバーチャルチャネル接続は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄバーチャルチャネルである。
【００６７】
Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄバーチャルチャネルプロトコルは、
（１）開始関連コマンドと、
（２）ユーザ身元証明のコピーを所望する各クライアントノードによってサポートされ得る単一認証関連のコマンドと、
（３）Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄユーザインターフェースを実装するためのアプリケーションデータ関連のコマンドと、
（４）ユーザインターフェースをアプリケーションサーバ上で動作させるためのアプリケーション起動コールバック関連コマンドと
とのコマンドの４つのグループを含み得る。
【００６８】
（アプリケーションデータベース）
アプリケーションデータベース４８は、サーバファームまたは信頼されるドメインのグループにおけるすべてのパブリック（すなわち、公開された）アプリケーションに関する認可ユーザおよびグループの情報のキャッシュである。サーバファームにおける各サーバは、その固有のアプリケーション関連情報を持続性ストレージにおいて維持し、かつ、揮発性ストレージにおいてデータベース４８を構築し得る。別の実施形態において、データベース４８におけるすべての収集されたアプリケーション関連情報は、持続性ストレージに格納され得、サーバファームにおける各他のサーバがアクセス可能にされ得る。データベース４８は、固有のフォーマット（例えば、メモリ内のリンクされたリストとして）で、または、ＮｏｖｅｌｌのＤｉｒｅｃｔｏｒｙ  Ｓｅｒｖｉｃｅｓ（ＮＤＳ）を用いて、または、分散された電子ディレクトリ用のＩＴＵ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｎｉｏｎ）によって定義されたＸ．５００標準規格を固守する任意のディレクトリサービスを用いて実現され得る。
【００６９】
アプリケーションデータベース４８は、アプリケーションサーバのリストを含む。リストにおける各サーバは、アプリケーションの関連したセットを有する。アプリケーション名、サーバのリスト、およびそのアプリケーションの使用が認可されたクライアントユーザを含み得るアプリケーション関連情報が各アプリケーションと関連付けられる。データベースにおいて維持されるアプリケーション関連情報の簡略化された例は、以下の表２によって示される。ユーザＡおよびＢは、クライアントノード１０、２０のユーザであり、「ｎ／ａ」は、アプリケーションがホストされるが、クライアントノードのユーザに利用可能でないことを示し、「−」は、アプリケーションがホストされないことを示す。
【００７０】
【表２】
2005505051.tif 000003
表２は、サーバ３０、３２、３４のリスト、サーバによってホストされるアプリケーション（スプレッドシート、カスタマデータベース、ワードプロセッサ、および計算機）、および、アプリケーションの使用が認可されたユーザを示す。例えば、サーバ３０は、スプレッドシートプログラム、カスタマデータベース、およびワードプロセッサをホストする。ユーザＡにスプレッドシートの使用が認可され、ユーザＢにカスタマデータベースの使用が認可され、どのユーザにもワードプロセッサの使用が認可されない。特定のアプリケーションの使用が認可されたのはだれかを示すために他の技術が用いられ得ることを理解されたい。例えば、データベースに格納されたユーザ情報は、特定のアプリケーションの使用が認可されたユーザではなく、それが認可されないユーザを示すために用いられ得る。
【００７１】
データベース４８に格納された情報を取得するために、サーバ３０は、これらのサーバ上のアプリケーションに関するサーバファームにおける各他のサーバからアプリケーション関連情報を取得する。この情報は、どのクライアントユーザおよびサーバが各特定のアプリケーションにアクセスすることを許されるかを示すコントロール情報を含む。データベースに維持されるアプリケーション関連情報は、サーバ３０のリブートを経て持続してもよいし、または持続しなくてもよい。
【００７２】
アプリケーションデータベース４８は、アプリケーションサーバ３０に格納され、かつ、サーバファームにおけるサーバのすべてにアクセス可能である中央データベースであり得る。従って、アプリケーション関連情報は、セッションのログオンおよびアプリケーションの起動の間、公開されたアプリケーション認証を実行するサーバ等の他のサーバによる使用のために利用可能であり得る。別の実施形態において、アプリケーションデータベース４８は、各サーバがサーバファームにおける各他のサーバの通信から取得する情報に基づいて、アプリケーションサーバの各々に維持され得る。
【００７３】
（Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄサービスプログラム（ＰＮＳＶＣ））
Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションがインストールされた各サーバ３０、３２、３４および３６は、ＰＮＳＶＣソフトウェア４４を実行する。各サーバ３０、３２、３４および３６上で動作するＰＮＳＶＣソフトウェア４４は、各他のサーバの通信リンク（例えば、指定されたパイプ）を確立する。サーバ３０、３２、３４および３６は、指定されたパイプ上でアプリケーション関連情報を交換する。別の実施形態において、ＰＮＳＶＣソフトウェア４４は、リモートレジストリコールを通じてサーバファームにおける他のサーバからアプリケーション関連情報を収集する（例えば、サービスコンポーネント４４は、これらのサーバによってホストされるアプリケーションプログラムに対応するアプリケーション関連情報を複数回リクエストする際に他のサーバにデータグラムを送信する）。ＰＮＳＶＣ４４ソフトウェアは、さらに、アプリケーションデータベース４８において、公開されたアプリケーションに対するグループとユーザとの関係を維持し、クライアントユーザを認証する場合、情報にアクセスする。サーバ３０の管理者は、ＰＮＳＶＣ４４を設定するためにユーザインターフェースを用い得る。
【００７４】
ＰＮＳＶＣソフトウェア４４の他の機能は、ＰＮＡＰＩ５２によってリクエストされたサービスおよび機能を実現することと、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄバーチャルデバイスドライバ（ＶＤＰＮ）を用いてクライアントノード１０上でＰＮＡＰＩ５２と通信することとを含む。ＶＤＰＮは、ＩＣＡ接続を確立および維持するために、上述のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄバーチャルチャネルプロトコルにより動作する。
【００７５】
（ＰＲＯＧＲＡＭ  ＮＥＩＧＨＢＯＲＨＯＤアプリケーションプログラムインターフェース（ＰＮＡＰＩ））
ＰＮＡＰＩ５２は、種々の動作（例えば、表示画面上でウィンドウを開く、ファイルを開く、およびメッセージボックスを表示する）を実行するためにＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションによって用いられるソフトウェア機能またはサービスのセットである。ＰＮＡＰＩ５２は、リガシー（すなわち、前のもの、またはしばらく存在する）クライアントユーザインターフェースにおいてＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションおよびアプリケーションオブジェクトを動作させることによって生成されるアプリケーションオブジェクト（例えば、アイコン）を起動するための一般的なメカニズムを提供する。クライアントノード１０が利用可能なアプリケーションを起動する場合、起動メカニズムは、必要に応じて（例えば、クライアントノード１０がアプリケーションをローカルに実行するためのリソースを有しない場合）、サーバ３０上でアプリケーションを起動し得る。
【００７６】
ＰＮＡＰＩ５２は、クライアントノード１０の画面１２上に表示するために、ユーザインターフェースコンポーネント５６にすべての公開されたアプリケーション情報を提供する。ＰＮＡＰＩ５２は、さらに、単一の認証機能をサポートするクライアントノード１０のユーザのログオン身元証明（例えば、パスワード）のためのローカルデータベースにおいて、サーバファームのログオンをマネージメントする。身元証明は、クライアントノード１０の立ち上げ（電源遮断および周期的に）を経て維持されてもよいし、維持されなくともよい。
【００７７】
ＰＮＡＰＩ５２は、ローカルキャッシュ６０に格納されたＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションオブジェクトの自動および手動のマネージメントを提供する。ローカルキャッシュ６０は、クライアントノード１０のユーザによって手動で、またはユーザ定義可能なリフレッシュレートで、あるいは、接続中はいつでもサーバによってリフレッシュされ得る。Ｗｉｎｄｏｗｓ（Ｒ）実装の場合、ＰＮＡＰＩ５２は、リモートアプリケーションファイル関連を構築し、かつ、アプリケーションオブジェクトショートカットの「スタート」メニュおよびデスクトップアイコンをマネージメントする。
【００７８】
（ＰＲＯＧＲＡＭ  ＮＥＩＧＨＢＯＲＨＯＯＤユーザインターフェース）
ユーザインターフェースモジュール５６は、ＰＮＡＰＩ５２をインターフェースし、かつ、既存のクライアントユーザインターフェースの機能的スーパーセット（例えば、リモートアプリケーションマネージャ）であり得る。ユーザインターフェースモジュール５６は、ＰＮＡＰＩ５２を通じてローカルキャッシュ６０に格納された情報にアクセスし、この情報をクライアントノード１０の表示画面１２上でユーザに情報を視覚的に提供する。表示された情報は、クライアントノード１０のユーザによって生成された情報と、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションによって取得された情報との混合である。ユーザインターフェースモジュール５６は、さらに、ユーザが現在動作させるすべてのアプリケーション、ならびにすべてのアクティブなセッションおよび切断されたセッションをユーザに示し得る。
【００７９】
グラフィックの実施形態において、ユーザインターフェースモジュール５６は、表示画面１２上に表示されるべきウィンドウズ（Ｒ）およびプルダウンメニュー等の種々のグラフィックコンポーネントを提供し得る。このようなグラフィカルユーザインターフェースコンポーネントの組み合わせの表示は、通常、「デスクトップ」と呼ばれる。ユーザインターフェースモジュール５６によって生成されたデスクトップは、使用するクライアントノード１０のユーザに利用可能なアプリケーションプログラムのネイバーフッドを表示するＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウを含み得る。これらのアプリケーションプログラムは、ネットワーク上のサーバファームによってホストされる公開されたアプリケーションのフィルタリングされた組み合わせである。ユーザインターフェースモジュール５６は、サーバファーム毎にＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウを生成するか、または、単一のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ下の異なったサーバファームからのアプリケーションをマージし得る。
【００８０】
最上レベルにおいて、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウは、サーバファームごとにフォルダを含む。マウス１８でフォルダの１つをクリックすると、ユーザに利用可能な各ホストされたアプリケーションの表現（例えば、アイコン）を含むウィンドウを生成する（例えば、図６Ａおよび図６Ｂを参照）。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウは、公開されたアプリケーションを起動するための焦点になり、ユーザインターフェースモジュール５６は、ＰＮＡＰＩ５２を通じてアプリケーションを起動するために用いられ得る。例えば、クライアントノード１０のユーザは、マウス１８を用いて、表示されたアイコンの１つを選択し、関連したアプリケーションを起動し得る。
【００８１】
クライアントベースの実装の特徴は、クライアントノードがオフラインであっても、すなわち、ＩＣＡ接続６２がアクティブでなくても、ユーザは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウにおいて表示されたオブジェクトをブラウズし得ることである。さらに、クライアントノード１０のユーザは、アプリケーションオブジェクトおよびフォルダをデスクトップのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウから他のグラフィックコンポーネント（例えば、他のウィンドウズ（Ｒ）、フォルダ等）にドラッグし得る。
【００８２】
図５は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションのサーバベースの実装のプログラムコンポーネントの例示的配置を示す。これらのコンポーネントは、Ｓｅｒｖｉｃｅ（ＰＮＳＶＣ）コンポーネント４４’、アプリケーションデータベースコンポーネント４８’、アプリケーションプログラムインターフェース（ＰＮＡＰＩ)コンポーネント５２’、ユーザインターフェースコンポーネント５６’およびローカルキャッシュ６０’を含む。各ソフトウェアコンポーネント４４’、４８’、５２’、５６’および６０’は、アプリケーションサーバ３０’上にインストールされる。サーバベースの実装のソフトウェアコンポーネントは、図４のクライアントベースの実装のソフトウェアコンポーネントに対応する。各サーバベースのソフトウェアコンポーネントの機能は、後述される違いまたは追加された能力により、クライアントベースの対応物と同様である。ＰＮＳＶＣ４４’は、ローカルプロシージャコールを用いて、アプリケーションデータベース４８’と、およびＰＮＡＰＩ５２’と通信する。ＰＮＡＰＩ５２’は、さらに、ユーザインターフェースモジュール５６’およびローカルキャッシュ６０’と通信する。
【００８３】
クライアントノード１０に関する図４に記載されたものと同様に、クライアントノード２０は、ネットワーク４０にログオンし、サーバ３０’は、サーバファームにおける他のサーバ３２、３４から収集されたアプリケーション関連情報を含むデータベースを改良および維持し、サーバ３０’とクライアントノード２０との間に通信リンクが確立される。アプリケーションサーバ３０’は、ＩＣＡチャネル接続６２’を介して、クライアントノード２０と通信する。チャネル接続６２’は、ＩＣＡバーチャルチャネルプロトコル（例えば、シンワイヤ（ｔｈｉｎｗｉｒｅ）によって確立され得る。シンワイヤプロトコルは、アプリケーションサーバ３０’上で動作するＷｉｎｄｏｗｓ（Ｒ)ベースのアプリケーションからのプレゼンテーションコマンドをクライアントノード２０に送信するために用いられ得る。クライアントノード２０のユーザには、アプリケーションがクライアントノード２０上で動作するように見える。クライアントノード２０は、ＩＣＡチャネル接続６２’を介してアプリケーションサーバ３０’と通信するリモートアプリケーションマネージャアプリケーションプログラム６４を含み得る。
【００８４】
サーバベースの実装のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを動作させるために、クライアントノード２０のユーザは、初期のデスクトップ（サーバ３０’における）に接続し、そのデスクトップ環境内からＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを起動する。初期のデスクトップへの接続は、例えば、クライアントノード２０のログオンスクリプトを介して、Ｗｉｎｄｏｗｓ（Ｒ）９５におけるＳｔａｒｔＵｐグループ内のエントリを介して、または、別の集中管理されたサーバ特有のメカニズムによって自動的に生じ得る。すべてのリモートアプリケーションマネージメントおよび起動は、この初期のデスクトップを通じて達成される。
【００８５】
サーバ３０に関して図４に記載されるものと同様に、サーバ３０’は、クライアントノード２０のユーザによる使用が認可されるアプリケーションプログラムを決定するためにユーザ身元証明を用いる。Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄグラフィックウィンドウは、クライアントノード２０に戻され、クライアントスクリーン２２上に表示される。このウィンドウは、クライアントノード２０のプログラムネイバーフッドにおける、利用可能、かつ、場合によっては、利用可能でないアプリケーションプログラムを表すアイコンを含み得る。
【００８６】
クライアントノード２０のユーザは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウに表示されたアプリケーションプログラムの１つを選択および起動し得る。アプリケーションを起動する場合、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、サーバ間のロードバランシング要件、およびそのサーバ３０’上のアプリケーションの可用性を考慮して、適用可能である場合に、同じサーバ３０’上でアプリケーションを実行し得る。ＰＮＡＰＩ５２’は、サーバ３０’がアプリケーションを起動するよう指定された場合、サーバ３０’上でローカルにリモートアプリケーションを起動するための起動メカニズムを含み得る。アプリケーションを動作させるために異なったサーバが必要とされた場合、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、図３Ｂで記載されたように、クライアントノード２０のデスクトップ上にアプリケーションを提供するためにウィンドウを用いて、サーバ３０’（すなわち、サーバベースのクライアント）を介してそのアプリケーションを起動し得る。
【００８７】
１実施形態において、ウェブベースのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションは、アプリケーションの種々の局面をマネージメントするオブジェクトのグループを含む。１実施形態において、アプリケーションは、ウェブサーバに「プラグイン」する３つの主要なオブジェクトクラス、すなわち、ゲートウェイオブジェクトクラス、身元証明オブジェクトクラス、およびアプリケーションオブジェクトクラスを含む。いくつかの特定の実施形態において、オブジェクトクラスは、Ｊａｖａ（Ｒ）ｂｅａｎｓとして提供される。これらの３つの主要なオブジェクトクラスは、サーバファームへのユーザ身元証明の検証、特定のユーザがアクセスし得る公開されたアプリケーションのリストの生成、特定の公開されたアプリケーションに関する詳細な情報の提供、および公開されたアプリケーション情報の、ＩＣＡ互換性のフォーマットへの変換を容易にする。
【００８８】
Ｊａｖａ（Ｒ）ｂｅａｎｓとして提供された場合、オブジェクトは多数の異なった方法でアクセスされ得る。例えば、これらは、ＣＯＭオブジェクトとしてコンパイルされ、かつ、ＡｃｔｉｖｅＸコンポーネントとしてウェブサーバに利用可能にされ得る。別の実施形態において、Ｊａｖａ（Ｒ）ｂｅａｎｓは、サーバがＪａｖａ（Ｒ）  Ｓｅｒｖｅｒ  Ｐａｇｅｓ技術を用いる場合等、ネイティブフォームで用いられ得る。さらに別の実施形態において、Ｊａｖａ（Ｒ）  ｂｅａｎｓは、インスタンス化され、かつ、直接Ｊａｖａ（Ｒ）サーブレットにおいて用いられ得る。さらに別の実施形態において、サーバ３０は、Ｊａｖａ（Ｒ）ｂｅａｎｓをＣＯＭオブジェクトとして直接インスタンス化し得る。
【００８９】
身元証明オブジェクトクラスは、ターゲットサーバファームへのユーザを認証するために必要な情報をマネージメントする。身元証明オブジェクトは、格納されたユーザ身元証明を他のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄオブジェクトにわたす。いくつかの実施形態において、身元証明オブジェクトは、インスタンス化され得ない抽象クラスであり、ユーザの身元証明を表す。バイオメトリクス、スマートカード、チャンレンジレスポンスおよびタイムベースのパスワードの生成等のようなトークンベースの認証メカニズムを含む、異なった認証メカニズムが用いられることを可能にするために、種々のクラス拡張子が提供され得る。例えば、ユーザ名、ドメイン、およびパスワードがプレーンテキストで格納される「クリアテキスト身元証明」拡張子が提供され得る。
【００９０】
ゲートウェイオブジェクトクラスは、ターゲットサーバファームとの通信を処理する。１実施形態において、インスタンス化され得ない抽象Ｊａｖａ（Ｒ）クラスとしてゲートウェイオブジェクトクラスが提供される。特定のゲートウェイオブジェクトは、特定のプロトコルを用いるサーバファームと通信し、キャッシュアプリケーション情報を読み出し、これらの２つの方法の組み合わせ、または他の種々の方法によってアプリケーション情報を取り出し得る。
【００９１】
上述のように、ゲートウェイオブジェクトクラスは、情報をキャッシュして、ターゲットサーバファームとの通信を最小化する。ＨＴＴＰ等の特定のプロトコルを介してサーバファームと通信するために、ゲートウェイオブジェクトの拡張子が提供され得る。１実施形態において、ゲートウェイオブジェクトがＷＩＮＤＯＷＳ（Ｒ）  ＮＴ指定のパイプを介してサーバファームと通信することを可能にする拡張子クラスが提供される。ゲートウェイオブジェクトは、他のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄオブジェクトが、アプリケーション情報を得るためにオブジェクトに問い合わせることを可能にするアプリケーションプログラミングインターフェースフックを提供し得る。
【００９２】
アプリケーションオブジェクトクラスは、公開されたアプリケーションに関する情報を含み、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウェブページを生成するために、サーバファームによってホストされたアプリケーションに関する情報を戻す。アプリケーションオブジェクトクラスは、アプリケーションと関連する情報を、ゲートウェイオブジェクトによって生成されたオブジェクトからか、または、サーバファームにおけるサーバから直接的に取り出すことによってアプリケーションを表すオブジェクトを生成する。アプリケーションオブジェクトは、オーディオアプリケーションの特定のプロパティ（設定可能なもの、および設定不可能なもの）のコンテナとして機能する。これらは、アプリケーション名（設定不可能）、クライアントウィンドウが占めるべきクライアントのデスクトップのパーセンテージ（設定可能）、このアプリケーションのクライアントウィンドウのピクセルでの幅（設定可能）、このアプリケーションのクライアントウィンドウから離れたピクセルでの高さ（設定可能）、アプリケーションに接続した場合に用いる色の数（設定可能）、オーディオ帯域幅制限の程度（ｓｅｖｅｒｉｔｙ）（設定可能）、アプリケーションに接続する場合に用いる暗号化のレベル（設定可能）、このアプリケーションに接続する場合に用いるビデオのレベル（設定可能）、アプリケーションがクライアントのスタートメニュー上に配置されるべきかどうか（設定可能）、アプリケーションがクライアントのデスクトップ上に配置されるべきかどうか（設定可能）、アプリケーションが属するＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄフォルダの識別（設定可能）、アプリケーションの説明（設定可能）、アプリケーション用のグラフィックアイコンのソース（設定可能）、アプリケーションに接続する場合に用いられるべきウィンドウのタイプ（設定不可能）、オブジェクトのデフォルトパラメータを無視するかどうか等である。
【００９３】
図６Ａは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションが実行された後、クライアントノード１０、２０のスクリーン１８、２０上に表示され得る例示的Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ１２０のスクリーンショットである。ウィンドウ１２０は、グラフィックアイコン１２２を含む。各アイコン１２２は、ネットワーク４０上のサーバ２０、３２、３４および３６の１つによってホストされるアプリケーションプログラムを表す。各表されたアイコンは、クライアントノードのユーザが実行するために利用可能である。ユーザは、マウス１８、２８またはキーボード１４、２４を用いて、アプリケーションの１つを選択および起動し得る。
【００９４】
図６Ｂは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションが実行された後、クライアントノード１０、２０の画面１８、２２上に表示され得る別の例示的Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウ１２４のスクリーンショットである。ウィンドウ１２４は、グラフィックアイコン１２６、１２８を含む。各アイコン１２６、１２８は、ネットワーク４０上のサーバ３０、３２、３４および３６の１つによってホストされるアプリケーションプログラムを表す。アイコン１２６の１つによって表される各アプリケーションプログラムは、クライアントノード１０、２０のユーザが実行するために利用可能である。ユーザは、マウス１８、２８またはキーボード１４、２４を用いて、アプリケーションの１つを選択および起動し得る。ウェブベースのプログラムネイバーフッド環境の場合、図６Ａおよび図６Ｂのスクリーンショットは、アイコン１２２、１６６、１２８がブラウザウィンドウ内に表示されることを除いて同様である。
【００９５】
アイコン１２８の１つによって表される各アプリケーションプログラムは、クライアントノード１０、２０のユーザに利用可能でないが、このようなアプリケーションは、サーバファーム内に存在する。これらのアプリケーションプログラムの非可用性は、表示画面上に通知され得る（例えば、「Ｘ」は、アイコン１２８を通じて描画され得る）。このようなアプリケーションプログラムの起動の試みは、ユーザにアプリケーションの使用が認可されないことを示すメッセージをトリガし得る。
【００９６】
図７は、ネットワーク４０上のアプリケーションサーバ３０、３２、３４および３６によってホストされるアプリケーションの可用性に関して、クライアントノード１０、２０のどちらかのユーザに通知され得る例示的プロセスを示す。ステップ８０において、クライアントノード１０、２０は、例えば、サーバ３２等のサーバの１つからログオンサービスをリクエストする。サーバ３２は、接続を確立するために有効なユーザ身元証明を必要とする。サーバ３２は、クライアントノード１０からユーザ身元証明を受信し（ステップ８２）、ユーザがログオンすることを認証する（ステップ８４）。デスクトップは、クライアントノード１０、２０に表示される（ステップ８５）。デスクトップは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションプログラムを表すグラフィックアイコンを含み得る。
【００９７】
ステップ８６において、アプリケーションサーバ３２は、サーバ３０、３４および３６の相互の通信を確立して、上述のように、これらのサーバ上でホストされるアプリケーションプログラムに対応するアプリケーション関連情報を交換する（ステップ８８）。ステップ９０において、アプリケーションサーバ３２は、収集されたアプリケーション関連情報のデータベースを展開および維持する。サーバファームにおける各他のサーバ３０、３４、３６は、サーバ３２のデータベースと等価なデータベースを、サーバ３２と同様の態様で展開し得る。別の実施形態において、サーバ３２のデータベースは、サーバファームにおける各他のアプリケーションサーバ３０、３４、３６にアクセス可能である集中化されたデータベースであり得る。アプリケーション関連情報の収集は、クライアントノード１０、２０がサーバファーム３８にログオンすることを求めるリクエストによって独立して生じるか、またはトリガされ得る。
【００９８】
ステップ９２において、クライアントノード１０、２０は、デスクトップディスプレイからアプリケーションプログラムの実行をリクエストし得る。マスターサーバノードは、上述のように、リクエストをロードバランシング評価およびアプリケーションの可用性を用いて処理し、アプリケーションサーバがクライアントノード１０、２０にサービスを提供することを決定し得る（ステップ９４）。例えば、アプリケーションサーバ３２は、クライアントノード１０、２０でリクエストにサービスするように選択され得る。ステップ９６において、クライアントノード１０、２０は、サーバ３２との通信リンクを確立する。サーバ３２およびクライアントノード１０、２０は、上述のクライアントノードのために適切なＩＣＡプロトコルにより、通信し得る。
【００９９】
さらに、アプリケーションプログラムの動作を求めるこのリクエストに応答して、クライアントノード１０、２０がＰＮアプリケーションプログラムをリクエストしていなくても、マスターサーバノード３０またはサーバ３２は、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを動作させ得（ステップ９３）、結果をクライアントノード１０、２０にプッシュする。ＰＮアプリケーションプログラムを実行した場合、マスターサーバノード３０またはサーバ３２は、ユーザ身元証明を用いてデータベースにおけるアプリケーション関連情報をフィルタリングする（ステップ１００）。データベースをフィルタリングした結果は、クライアントノード１０、２０のユーザによる使用が認可されたアプリケーションプログラムを決定する。認可されたアプリケーションプログラムは、クライアントノード１０、２０のプログラムネイバーフッドにある。利用可能なアプリケーション情報のプログラムネイバーフッドは、クライアントノード１０、２０にプッシュされ(ステップ１０２）、かつ、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄグラフィックウィンドウにおけるクライアント画面１２、２２に表示される（ステップ１０４）。
【０１００】
他の実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウは、サーバファームにあるが、クライアントノード１０、２０の使用には利用不可能であるアプリケーションを含み得る。Ｗｉｎｄｏｗｓ（Ｒ)ベースの実装において、利用可能（および利用不可能）なアプリケーションプログラムは、アイコンによって表され得る。クライアントノード１０、２０のユーザは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウに表示されるアプリケーションプログラムの１つを選択および起動し得る。
【０１０１】
（ファイルタイプの関連（ＦＴＡ））
上述のように、１実施形態において、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄ（Ｒ）メカニズムは、クライアントノード上に必ずしもインストールされているとは限らない実行可能プログラムをユーザが識別、選択、および実行することを可能にする。別の実施形態において、さらなるＦＴＡ機能は、データファイルおよび実行可能プログラムが、異なったコンピューティングノード上でホストされる場合であっても、データファイルと関連付けられた実行可能プログラムの実行をユーザが自動的に開始することを可能にする。
【０１０２】
通常、ＦＴＡ機能は、実行可能プログラムが配置されたノード（単数または複数）とは異なったコンピューティングノード上に配置されたデータファイルを選択することによって、ユーザが実行可能プログラムをトランスペアレントに実行することを可能にする。１実施形態において、クライアントノード上に配置されたデータファイルを選択することによって、ユーザは、サーバノード上の実行可能プログラムの実行をトランスペアレントに呼び出し得る。別の実施形態において、サーバノードに配置されたデータファイルを選択することによって、ユーザは、クライアントノード上のアプリケーションプログラムの実行をトランスペアレントに呼び出し得る。さらに別の実施形態において、ユーザは、ウェブサーバに格納されたデータファイルを選択して、サーバノード上の関連した実行可能プログラムの実行をトランスペアレントに呼び出し得る。通常、実行は、選択さえたデータファイルのコンテンツの処理を可能にし、その出力は、その後、クライアントノードにおけるユーザに提供される。
【０１０３】
上述のように、クライアントノードは、１つ以上のサーバノードと通信する。クライアントノードは、ファイルを表すグラフィック印の選択、ビットマップグラフィックの表示、ならびに、電気通信リンクの初期化および動作を可能にする機能を備える動作システムを実行する。１実施形態において、これらの機能は、オペレーティングシステムと統合される。別の実施形態において、これらの機能は、クライアントノード上に個別にインストールおよび保守される１つ以上の第３者ベンダーからのソフトウェアによって提供される。
【０１０４】
サーバノードは、電気通信リンクの開始および動作、ならびに実行可能プログラムの実行を可能にする機能を備える。１実施形態において、これらの機能は、オペレーティングシステムと統合される。別の実施形態において、これらの機能は、サーバノード上に個別にインストールおよび保守された１つ以上の第３者ベンダーからのソフトウェアによって提供される。
【０１０５】
本説明において、ファイル名の拡張子を用いる例は、オペレーティングシステムのウィンドウズ（Ｒ）系列の製品を利用する実施形態の特異性を必然的に反映すると理解されるべきである。他の実施形態は、データファイルそれ自体、データファイル内に含まれるデータ、データファイルと関連したファイルシステムレコード、または別個のデータファイルまたはデータベースに格納された特定のパラメータを用いて、本発明による方法および装置を実現する。例えば、オペレーティングシステムのＭａｃＯＳ（Ｒ）系列の製品を利用する実施形態において、本発明は、ファイルおよびアプリケーションクリエータタイプを利用し、かつ、各格納デバイスと関連したデスクトップファイルにファイルタイプ関連データを格納する。システムを動作させるＵＮＩＸ（Ｒ）の異形を用いる実施形態は、ファイル拡張子、埋め込みパラメータ、または他のメカニズムを適宜利用する。従って、請求項の範囲は、ファイル名拡張子に依存する実施形態か、または、ＷＩＮＤＯＷＳ（Ｒ）オペレーティングシステムを利用する実施形態に限定されると読まれるべきでない。
【０１０６】
（クライアントベースのＦＴＡ）
図８Ａを参照して、１実施形態において、本発明は、クライアントノード上に配置されたデータファイルを表すグラフィック印の選択を通じて、サーバノード上にトランスペアレントに配信されたプログラムの実行を可能にする。クライアントノードは、複数のサーバノードの１つの上で実行するために、所定のタイプのデータファイルと実行可能プログラムとの間の関連を特定するマッピングを複数のサーバノードの１つから受信する（ステップ１０６）。クライアントノードは、クライアントノード上に格納されたデータファイルのグラフィック描画を提供し（ステップ１１４）、データファイルのグラフィック描画の選択を受信する（ステップ１１８）。クライアントノードは、選択されたデータファイルのタイプと関連した実行可能プログラムを受信されたマッピングを用いて識別し（ステップ１２２）、かつ、識別された実行可能プログラムの実行を求めるリクエストを送信する（ステップ１２６）。別の実施形態において、クライアントノードは、ローカルディスプレイアプリケーションの実行を開始して（ステップ１３０）、実行プログラムからアプリケーション出力データを受信し（ステップ１３４）、これをエンドユーザに表示する（ステップ１３８）。
【０１０７】
さらに図８Ａを参照して、クライアントノードは、マッピングを受信した場合（ステップ１０６）、このマッピングは、いくつかの他のマッピング、あるいはソフトウェア更新等の他のメッセージまたはデータと共に自動的に受信され得る。表３は、本発明の１実施形態において提供された例示的マッピングを示す
【０１０８】
【表３】
2005505051.tif 000004
１実施形態において、マッピングは、ユーザのクライアントノード上に格納された特定のデータファイルと共に用いる特定の実行可能プログラム間の関連を識別する。例えば、マッピングは、ワードの使用を特定してファイル「ＲＥＣＯＲＤＳ．ＤＯＣ」を編集する。別の実施形態において、マッピングは、特定の実行可能プログラムと、ユーザのクライアントノード上に格納された特定のタイプのデータファイルとの間の関連を特定する。例えば、マッピングは、ＷＯＲＤの使用を特定して、拡張子「．ＲＴＦ」で終わるすべてのファイルを編集する。さらに別の実施形態において、マッピングは、特定のデータファイルまたは特定のタイプのデータファイルと共に用いる特定のタイプの実行可能ファイルを特定する。例えば、ワード処理情報を含むファイルが選択された場合には、マッピングは「ワード処理アプリケーション」の使用を特定するが、これは、ファイルを調べることによって、あるいはファイルにコード化されたか、または添付された特定のパラメータを調べることによって決定される。
【０１０９】
さらに別の実施形態において、マッピングは、実行可能プログラムをサーバノード上で起動し、実行からの出力をクライアントノードに表示するクライアントノードアプリケーションに関して、実行可能プログラムとデータファイルとの間の関係を特定する。例えば、マッピングは、「．ＤＯＣ」ファイルが選択された場合、クライアントノードがＦｔ．Ｌａｕｄｅｒｄａｌｅ（ＦＬ）のＣｉｔｒｉｘ  ＳｏｆｔｗａｒｅからのＭＥＴＡＦＲＡＭＥを実行し得、これは、次に、複数のサーバノードの１つにおけるＷＯＲＤの実行を求めるリクエストを送信し、ユーザのためにクライアントノードに表示するために、実行からの出力データを受信することを特定し得る。さらに別の実施形態において、関連した実行可能プログラムの入力は、１つ以上のパラメータ、フラグ、またはサーバノード上での実行を制御するアーギュメントを含む。例えば、ＭＥＴＡＦＲＡＭＥの局所的実行、およびＷＯＲＤの遠隔的実行を特定する入力は、「Ｃ：＼ＰＲＯＧＲＡ〜１＼ＭＦ．ＥＸＥ  ＭＳＷＯＲＤ．ＥＸＥ」の形態をとり得、これは、ＭＥＴＡＦＲＡＭＥアプリケーションがＣ：＼ＰＲＯＧＲＡ〜１＼ＭＦ．ＥＸＥに局所的に格納され、サーバノード上で実行されるべきアプリケーションがＭＳＷＯＲＤ．ＥＸＥ．であることを示す。
【０１１０】
１実施形態において、マッピングにおける実行可能プログラムは、例えば、「ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤ」等のベンダー名として特定される。受信されると、クライアントノードは、ＦＴＡ機能を適用する場合、後で用いるために、ベンダー名「ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤ」と関連したファイルパスおよびファイル名の少なくとも１つを識別する。別の実施形態において、マッピングの際の実行可能プログラムは、クライアントノードオペレーティングシステムによって利用される命名規則に従って、ファイル名として特定される。例えば、ウィンドウズ（Ｒ）系列のオペレーティングシステムを用いるクライアントノード上で、関連した実行可能プログラムは、「ＭＳＷＯＲＤ．ＥＸＥ」として識別され得る。このマッピングを受信した後、クライアントノードは、局所的に識別して、例えば、「Ｃ：＼ＰＲＯＧＲＡ〜１＼ＭＳＯＦＦＩＣＥ＼ＭＳＷＯＲＤ．ＥＸＥ」等の実行可能ファイルにパスを格納するか、または、クライアントノードは、ＦＴＡが特定の実行可能プログラムのために起動される毎に実行可能ファイルを動的にロケートする。
【０１１１】
１実施形態において、受信されたマッピングは、実行可能プログラムとデータファイルまたはデータファイルのタイプとの間の関連を追跡するシステムデータベースを含むファイルに埋め込まれる。例えば、ファイルは、ＷＩＮＤＯＷＳ（Ｒ）システム上のレジストリか、またはＭａｃＯＳシステム上のデスクトップファイルであり得る。別の実施形態において、上述のＦＴＡ機能を提供するために、マッピングは１つ以上の実行可能プログラムによってアクセスされるファイルに格納される。例えば、Ｊａｖａ（Ｒ）ベースの実行可能プログラムは、マッピングを受信し得、これを他のＪａｖａ（Ｒ)ベースの実行可能プログラムによって用いられるようにクライアントノード上のテキストファイルに格納し得る。例えば、さらに別の実施形態において、埋め込みデバイス等のファイルシステム機能が存在しない場合には、マッピングは、特定のアドレスのランダムアクセスメモリにて受信および格納される。さらに別の実施形態において、マッピングは、例えば、複数のサーバの１つ等に遠隔的に格納され、かつ、クライアントノード上の実行可能プログラムによって必要に応じて取り出される。マッピングそれ自体は、アレイ、リンクリスト、フラットデータベース、またはリレーショナルデータベースを含むが、これらに限定されない任意のデータ構造に格納され得る。
【０１１２】
１実施形態において、これらのマッピングは、クライアントベース、すなわち、「プル（ｐｕｌｌ）」技術を用いて周期的に更新される。別の実施形態において、これらのマッピングは、サーバ側、すなわち、「プッシュ（ｐｕｓｈ）」技術を用いて周期的に更新される。さらに別の実施形態において、これらのマッピングは、例えば、システム管理者が新しいアプリケーションプログラムをインストールし、かつ、サーバノード上またはサーバファームにわたって、このプログラムをサポートする場合等、必要に応じてプッシュまたはプル技術を用いて更新される。
【０１１３】
１実施形態において、クライアントノードは、実行可能プログラムの実行のロケーションを制御する規則を受信する（ステップ１１０）。１実施形態において、特定の実行可能プログラムをクライアントノード上で実行するか、サーバノード上で実行するか、または特定のサーバ上で実行するかを決定する規則は、１つ以上の変数に依存し得る。このような変数は、クライアントシステム上での実行ロード、複数のサーバシステムの１つの上での実行ロード、複数のサーバシステム全体の上での実行ロード、クライアントシステムと複数のサーバシステムとの間の接続速度、あるいは、これらまたは他のファクタとの任意の組み合わせを含むが、これらに限定されない。例えば、「．ＤＯＣ」タイプのドキュメントの選択により、サーバファームにおけるサーバノード上で実行するＷＯＲＤからの出力を受信および表示するローカルシンクライアントアプリケーションの実行を開始することを要求した場合、条件付規則は、クライアントシステム上での実行ロードが、利用可能なＣＰＵ時間の５０％よりも多く消費され、サーバファームへの接続が、理論上の性能で１Ｍｂｉｔ／ｓｅｃ、あるいは、利用可能な性能で２０Ｋｂｉｔ／ｓｅｃを越えた場合に、ＷＯＲＤは、エンドユーザに表示するためのシンクライアントアプリケーションに提供されるアプリケーション出力データと共にサーバファーム上で遠隔的に実行されるべきであることを指定し得る。１実施形態において、規則の評価が、関連した実行可能プログラムがクライアントノード上で実行することを示す場合、クライアントノードは、任意のシンクライアントアプリケーションをバイパスして、実行プログラムをユーザに直接出力する。
【０１１４】
実際の操作においては、ユーザが「．ＤＯＣ」ドキュメントを選択し、関連したアプリケーション、すなわち、ＷＯＲＤが識別された場合、任意の付随的規則がロードされ、評価され、かつ、ルールの評価に応答して、クライアントノード上でローカルに実行されるか、あるいはサーバノード上で遠隔的に実行される。評価が、アプリケーションプログラムがサーバノード上で実行すべきであることを示す場合、プログラムの実行を求めるリクエストがサーバノードに送信される（ステップ１２６）。
【０１１５】
マッピング、条件付規則、または、これら２つの特定の組み合わせの受信は、いくつかのメカニズムを通じて生じ得る。マッピングおよび条件付規則は、ライブ電気通信リンクを介してか、または、ポータブル格納媒体の１つ以上の形態を用いてオフラインで配信され得る。これらは、クライアントノード、あるいは複数のサーバノードのうちの少なくとも１つが使用中である場合には、リアルタイムで配信される。あるいは、予定時間ウィンドウ内の予定時刻、または、クライアントノードおよび複数のサーバノードのどれもエンドユーザによって使用されていない場合にはオフラインで配信される。
【０１１６】
いくつかの実施形態において、マッピング、および、インストールすることで条件付規則を、ユーザは、グラフィックユーザインターフェースを用いてクライアントノードと双方向通信する。ローカルクライアントノード上に存在するデータファイルは、グラフィックでユーザに提供される（ステップ１１４）。典型的な実施形態において、クライアントノードは、クライアントノード上に格納されたデータファイルを表す１つ以上のアイコンを表示する。別の実施形態において、クライアントノードは、クライアントノード上に格納されたデータファイルと関連したファイル名のリストを表示する。さらに別の実施形態において、クライアントノード上に格納されたファイルを表す印は、１つ以上のサーバノード上に格納されたファイルを表す印と混ぜられる。この実施形態において、クライアントベースのＦＴＡは、クライアントノード上に格納されたファイルを表す印が選択された場合に動作する。別の実施形態において、ＦＴＡの複数の形態（以下参照）が、選択された印と関連したファイルのロケーションに基づいて、起動されたＦＴＡの適切な形態で動作する。
【０１１７】
ユーザは、データファイルのグラフィック描画と双方向通信することによって特定のデータファイルを選択する（ステップ１１８）。データファイルを表すアイコンまたはテキストは、通常、キーボード、マウス、ライトペン、感圧タブレット、触覚インターフェース、または、他の入力デバイスを用いて選択される。
【０１１８】
一旦データファイルが選択されると、クライアントノード上の機能は、格納されたマッピング、および、いくつかの実施形態において、格納された条件付規則にアクセスし、かつ、選択されたデータファイルまたは選択されたデータファイルのタイプと関連したこれらのマッピングおよび規則を識別する（ステップ１２２）。データファイルが複数のサーバの１つの上で実行されるべきアプリケーションと関連付けられることをマッピングが示し、かつ、任意の関連した条件付き規則の評価がそのように示した場合、クライアントノードは、関連したアプリケーションプログラムをホストする複数のサーバの１つに実行リクエストを送信する（ステップ１２６）。
【０１１９】
実行されると、関連したアプリケーションプログラムは、通常、グラフィック出力データまたはサウンドを含むが、これらに限定されない、出力データの１つ以上の形態を生成する。１実施形態において、クライアントノードは、サーバノードとの接続を通じてアプリケーション出力データを受信し（ステップ１３４）、かつ、これをエンドユーザに表示する（ステップ１３８）アプリケーションプログラムの実行を開始する（ステップ１３０）。１実施形態において、このアプリケーションプログラムは、ＭＥＴＡＦＲＡＭＥである。
【０１２０】
１実施形態において、クライアントノードは、選択されたデータファイルと関連したデータを処理するためにサーバノードにさらに提供する。１実施形態において、クライアントノードは、データを提供するために、サーバノードとのネットワーク接続を利用する。別の実施形態において、クライアントノードは、データファイルのコンテンツに対するポインタをサーバノードに提供する。次に、サーバノードは、このポインタを利用してデータのシーケンシャルまたはランダムアクセスリクエストを生成し、これは、クライアントノードに提供される。クライアントノードは、これらのリクエストを処理し、かつ、サーバノードに適切なデータを提供する。
【０１２１】
このクライアントサーバ構成は、異なったコンピューティングアーキテクチャに基づいて、クライアントノードおよびサーバノードを使用することを可能にする。例えば、クライアントノードは、ローカルディスプレイアプリケーションを実行するＭＡＣＩＮＴＯＳＨベースのＰＯＷＥＲＰＣであり得、サーバノードは、ＩＴＡＮＩＵＭベースのＷＩＮＤＯＷＳ（Ｒ）  ＮＴサーバであり得る。クライアントノードおよびサーバノードがアプリケーション出力データの転送、交換、および印のフォーマットについて一致する機能を備える限り、ノード間のバイナリレベルの相互運用性は、不必要である。
【０１２２】
図８Ｂは、クライアントベースのファイルタイプ関連プロセスにおけるサーバノードの典型的役割を示す。クライアントシステムに格納されたデータファイルのタイプと、複数のサーバノードのうちの１つで実行されるための実行可能プログラムとの間の関連を特定するマッピングが提供される（ステップ１５４）。実行可能プログラムの実行を求めるリクエストが受信され（ステップ１６２）、かつ、実行可能プログラムは、複数のサーバノードの１つの上で実行される（ステップ１６６）。
【０１２３】
１実施形態において、マッピングは、システム管理者、または管理の特権を有する別のユーザからサーバノードにて受信される（ステップ１５０）。管理者は、上述のように、特定のデータファイルまたはデータファイルのタイプと、特定の実行可能プログラムまたは実行可能プログラムのタイプとの間の関連を特定するシステムデータベースを編集することによって、新しいマッピングを構成する。別の実施形態において、管理者は、あるデータファイルのタイプとサーバシステムとの接続を確立するプログラムと、データファイルを処理する実行可能プログラムとの間の関連を特定する。１実施形態において、管理者は、１つ以上のデータファイルを手動で編集することによってか、または、グラフィックシステム管理ツールを用いることによってマッピングを特定する。
【０１２４】
１実施形態において、サーバノードは、プッシュまたはプル技術を用いて、このシステムデータベースを１つのファイルで、周期的に、または、必要に応じて１つ以上のクライアントノードに提供する。別の実施形態において、これらのマッピングは、スタンドアロンデータ入力としてクライアントシステムに送信され、これらのシステムは、これらの入力を受信し、かつ、固有のローカルシステムデータベースに組み込む。さらに別の実施形態において、特定のマッピングは、さらに、他のサーバノード上で特定されたマッピングに対して複製または同期化される。この最後の機能は、サーバファーム構成におけるサーバノードの構成および保守を容易にする。
【０１２５】
サーバノードは、１つ以上のクライアントノードにマッピングを提供し（ステップ１５４）、これを上述のように利用する。１実施形態において、サーバは、上述のような格納または評価のために、１つ以上のクライアントノードに条件付き実行規則をさらに提供する（ステップ１５８）。条件付規則は、ファイルタイプの関連の特定および配信のために用いられる技術を用いて特定および配信される。
【０１２６】
動作中、サーバノードは、実行可能プログラムの実行を求めるリクエストを１つ以上のクライアントノードから受信する（ステップ１６２）。１実施形態において、サーバノード（単数または複数）上の１つ以上の実行可能プログラムの利用可能性は、部分的に、印を識別または認証することによって決定される。サーバノード上の各ファイルは、ユーザ、ユーザのグループ、または特権レベルを定義する印と直接的または間接的に関連付けられる。クライアントノードは、ユーザのアイデンティティまたはユーザの特権レベルを示す１つ以上の印を、マスターサーバノードか、または１つ以上の個別サーバノードに提供する。サーバノード（単数または複数）は、実行するために利用可能な各実行可能プログラムと関連付けられた印に対してこれらの印を検証する。提供された印が関連した印と一致した場合、実行可能プログラムは、実行するためにクライアントノードに利用可能にされる。クライアントノードによって提供されたものを超過する認証印で実行可能プログラムを実行する試みは、１つ以上のエラーメッセージをクライアントノード上に表示し、アラームメッセージをサーバノード上に表示し、かつ、実行可能プログラムの初期実行を求めるリクエストをクライアントノード上にもたらし得る。
【０１２７】
サーバノードは、識別されたプログラムを実行することによって、これらのリクエストをサービスする（ステップ１６６）。プログラムの実行を求めるリクエストをサービスする場合、サーバは、それ自体、そのリクエストをサービスし得るか、または、サーバは、実行リクエストを別のサーバに委任または再割り当てし得る。この委任は、クライアントプールをサービスするために必要とされるサーバライセンスの数を制限することによってライセンスマネージメントおよび再発行を容易にする。リクエストを受信するサーバは、さらに、コンピューティングクラスタに実行リクエストを割り当て得、サーバ間のロードおよびリソースマネージメントがクライアントの要求をより良好にマネージメントすることを可能にする。
【０１２８】
１実施形態において、サーバノードは、クライアントノード上で識別された特定のデータファイルと関連したデータをさらに受信する（ステップ１７０）。通常、このデータは、上述のように、サーバノードまたはクラスタ上で実行して、実行可能プログラムによって処理される。別の実施形態において、例えば、シーケンシャルまたはランダムアクセスリクエスト等のデータと適切なクライアントノードに送信することを求めるリクエストを生成するためにサーバが利用する、クライアントノード上のデータファイルに対するポインタまたは他のリファレンスをサーバが受信する。１実施形態において、第１のサーバノードが第２のサーバノードにプログラム実行リクエストを委任した場合、第１のサーバノードは、これがデータまたはデータファイルリファレンスを受信する場合、同様に、データまたはデータファイルリファレンスを第２のサーバノードまたは別のサーバノードに適宜委任、リルーティング、または再送信し得る。
【０１２９】
通常、サーバノードは、上述のように、実行可能プログラムの実行からのアプリケーション出力データをエンドユーザに表示するためにクライアントノードに提供する（ステップ１７４）。アプリケーション出力データは、クライアントノードによってか、または、例えば、ＭＥＴＡＦＲＡＭＥ等のシンクライアント印アプリケーション等のクライアントノード上で実行するアプリケーションプログラムによって、直接サポートされた１つ以上のフォーマットで提供され得る。アプリケーション出力データは、圧縮されたか、または圧縮されないグラフィックデータを表すビットストリーム、表示するベクトルグラフィックを表すマークアップ言語、テキスト、あるいは、実行された場合、アプリケーション出力データをユーザのクライアントノード上にアプリケーション出力データを表示する一連のシステム依存コールまたはＡＰＩコールであり得る。
【０１３０】
（サーバベースＦＴＡ）
図９Ａを参照して、別の実施形態において、本発明は、サーバノード上に配置されたデータファイルを表すグラフィック印の選択を通じて、クライアントノード上にトランスパレントに配信されたプログラムの実行を可能にする。クライアントノードは、複数のサーバノードの１つの上に格納されたデータファイルのグラフィック描画を提供する（ステップ２００）。クライアントノードは、データファイルのグラフィック印の選択を受信し（ステップ２０４）、かつ、複数のサーバノードの１つに選択を送信する（ステップ２０８）。クライアントノードは、選択されたデータファイルと関連した実行可能プログラムの実行を求めるリクエストを複数のサーバノードの１つから受信し（ステップ２１２）、関連した実行可能プログラムを実行する（ステップ２１６）。
【０１３１】
図９Ａをさらに参照して、クライアントノードは、少なくとも１つのサーバノード上に格納された少なくとも１つのデータファイルのグラフィック描画をユーザに提供する（ステップ２００）。データファイルのグラフィック描画は、アイコン、またはファイル名のディスプレイ等のグラフィック印のディスプレイを含むが、これらに限定されない。１実施形態において、１つ以上のサーバノード上に格納されたファイルを表す印は、クライアントノード上に格納されたファイルを表す印と混ぜられる。この実施形態において、サーバベースのＦＴＡは、サーバノード上に格納されたファイルを表す印が選択された場合に動作する。べつの実施形態において、ＦＴＡの複数の形態（上記、下記参照）は、選択されたグラフィック印と関連したファイルのロケーションに基づいて活性化されたＦＴＡの適切な形態で動作する。
【０１３２】
１実施形態において、クライアントノード上の機能は、接続されたサーバノード上で利用可能なデータファイルに関する情報をまとめるマスターサーバノードに問い合わせる。マスターサーバノードは、マスターサーバおよび接続されたサーバ上で利用可能なファイルのまとまったリストを提供し、かつ、ユーザに提供する前に、プッシュまたはプルメカニズムを用いてクライアントノードにこのリストを提供する。別の実施形態において、クライアントノード上の機能は、利用可能なファイルをユーザに提供する前に、サーバ側のＦＴＡのデータファイルの利用可能性に関して各個別のサーバノードに問い合わせる。さらに別の実施形態において、クライアントノード（例えば、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）またはＡＦＳ（Ａｎｄｒｅｗ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等）上の機能は、ファイルを、クライアントノードのファイルシステムの一部分として１つ以上のサーバノード上に出現させる。これらのファイルは、次に、ユーザがサーバベースのＦＴＡと共に用いるように提供される。
【０１３３】
１実施形態において、サーバノード（単数または複数）上の１つ以上のファイルの利用可能性は、部分的に、識別印または認証印によって決定される。サーバノード上の各ファイルは、ユーザ、ユーザのグループ、または特権レベルが定義する印と直接的または間接的に関連付けられる。クライアントノードは、ユーザのアイデンティティまたはユーザの特権レベルを示す１つ以上の印を、マスターサーバノード、または１つ以上の個別サーバノードに提供する。サーバノード（単数または複数）は、これらの印をサーバベースのＦＴＡに利用可能な各ファイルの印に対して検証する。提供された印が関連した印と一致した場合、このファイルは、潜在的なサーバベースのＦＴＡアクティビティのために、クライアントノードに利用可能にされ、かつユーザにグラフィックで提供される。
【０１３４】
上述のように、ユーザは、通常、グラフィックユーザインターフェース、および１つ以上の入力デバイスを用いて、表示されたグラフィック印と双方向通信することによってデータファイルを選択し得る（ステップ２０４）。一旦ユーザがデータファイルを選択すると、選択が複数のサーバシステムの１つに送信される（ステップ２０８）。１実施形態において、選択は、マスターサーバノードに送信される。マスターサーバノードは、データファイルをホストするサーバノードを識別し、かつ、さらに処理するために、適切なサーバノードに選択を提供する。別の実施形態において、選択は、１つ以上のサーバノード、すなわち、選択されたデータファイルと特別に関連したサーバノードか、または一般的にサーバベースのＦＴＡに利用可能であると識別されたサーバノードに送信される。この挙動は、ロードバランスファイルがファイルミラーリング、およびデータ剰余性の他の最新の形態によりサーバ間で利用されることを容易にする。
【０１３５】
データファイルの選択を提供した後、選択されたデータファイルと関連した実行可能プログラムの実行を求めるリクエストが受信される（ステップ２１２）。上述のように、このリクエストは、マスターサーバノード、選択されたデータファイルをホストするサーバノード、または選択されたデータファイルをホストしないサーバノードから入来し得る。これに応答して、クライアントノードは、データファイルと関連した実行可能プログラムを実行する（ステップ２１６）。
【０１３６】
１実施形態において、クライアントノードは、実行プログラムによって処理するために選択されたデータファイルと関連したデータを受信する（ステップ２２０）。別の実施形態において、クライアントノードは、選択されたデータファイルに対するポインタを受信する。上述のように、クライアントノードは、マスターサーバノード、選択されたデータファイルをホストするサーバノード、または選択されたデータをホストしないサーバノードによってサービスするために１つ以上のサーバノードにこれを提供する、例えば、シーケンシャルまたはランダムなどのデータの１つ以上のリクエストを生成するために提供されたポインタを利用する。１実施形態において、これらのリクエストは、ＨＴＴＰ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）、ＨＴＴＰＳ（ｓｅｃｕｒｅ  ＨＴＴＰ）（すなわち、ＳＳＬを用いる）、ＭＡＰＩ（ｍｅｓｓａｇｉｎｇ  ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）プロトコル、ＲＴＳＰ（ｒｅａｌ−ｔｉｍｅ  ｓｔｒｅａｍｉｎｇ  ｐｒｏｔｏｃｏｌ）、ＲＴＳＰＵ（ｒｅａｌ−ｔｉｍｅ  ｓｔｒｅａｍｉｎｇ  ｐｒｏｔｏｃｏｌ  ｕｓｅｄ  ｆｏｒ  ｕｓｅｒ  ｄａｔａｇｒａｍ  ｐｒｏｔｏｃｏｌ  ｓｃｈｅｍｅ）、ワシントン州、シアトルのＲｅａｌＮｅｔｗｏｒｋｓ，Ｉｎｃ．によって開発されたＰＮＭ（Ｐｒｏｇｒｅｓｓｉｖｅ  Ｎｅｔｗｏｒｋｓ  Ｍｕｌｔｉｍｅｄｉａ）プロトコル等のプロトコルを利用して送信される。
【０１３７】
選択されたデータファイルと関連したデータが受信されると、クライアントノードは、通常、実行プログラムを用いて、受信されたデータを処理する（ステップ２２４）。クライアントノードは、通常、エンドユーザに処理の結果を表示する。１実施形態において、処理および表示サイクルは反復し、ユーザからのさらなる制御入力がさらなる処理および表示につながり、続いて、ユーザからのさらなる制御入力につながる等である。
【０１３８】
図９Ｂは、サーバ側のＦＴＡにおけるサーバノードの典型的な役割を示す。所定のタイプのデータファイルとクライアントシステム上で実行するための実行可能プログラムとの間の関連を特定するマッピングが受信される（ステップ２４０）。データファイルは、複数のサーバシステムの１つに格納される（ステップ２４４）。格納されたデータファイルの選択は、サーバノードによって受信され（ステップ２４８）、選択されたデータファイルのタイプと関連した実行可能プログラムは、受信されたマッピングを用いて識別される（ステップ２５２）。リクエストは、識別された実行可能プログラムを実行するために、クライアントシステムに送信される（ステップ２５６）。
【０１３９】
サーバノードによって受信されたマッピング（ステップ２４０）は、データファイルと実行可能プログラムとの間の関連を特定し、この点で、クライアントベースのＦＴＡにおいて利用されるマッピングと同様である。このマッピングは、クライアントノード上で実行するための実行可能プログラムを特定するという点でクライアントベースのＦＴＡにおいて用いられるマッピングとは異なる。アプリケーションがクライアントノードにて実行する実施形態の場合、関連したプログラムは、通常、スタンドアロンアプリケーションであり、第２の実行可能プログラムのアプリケーションを呼出すシンクライアントアプリケーションではない。
【０１４０】
しかしながら、いくつかの実施形態において、クライアントノードは、サーバノードからアプリケーション実行リクエストを受信し、識別された実行可能プログラムを実行する（従って、アプリケーションを実行する）のではなく、別のサーバノードに実行リクエストをリダイレクトする。従って、クライアントノードが実行リクエストをリダイレクトするサーバノードは、識別された実行可能プログラムを実行するノードである。この実施形態において、クライアントベースのＦＴＡは、サーバベースのＦＴＡを「無視する（ｏｖｅｒｒｉｄｅ）」。なぜなら、クライアント側のマッピングによって識別されるサーバノードがアプリケーションを実行し、サーバ側のマッピングによって識別されるノードがアプリケーションを実行するのではないからである。
【０１４１】
１実施形態において、マッピングは、スタンドアロンエントリとして受信される。別の実施形態において、マッピングは、グループにまとめられ、かつ提供されるか、または、ソフトウェア更新等の他のデータとまとめられ、かつ送信される。マッピングは、ライブ電気通信リンクを介して提供されるか、または、１つ以上の取り外し可能格納媒体にバイナリまたはテキストフォーマットで格納される。
【０１４２】
上述のように、マッピングは、データファイル、または実行可能プログラムとの間のリンクを種々のレベルの粒度で特定する。特定のマッピングは、特定のデータファイルまたは特定のタイプのデータファイル、および特定の実行可能プログラムまたは実行可能プログラムのタイプをリンクする。実行可能プログラムは、ベンダー名またはファイル名によって識別される。
【０１４３】
１実施形態において、受信されたマッピングは、実行可能プログラムと、データファイルまたはデータファイルのタイプとの間の関連を追跡するシステムデータベースを含むファイルに組み込まれる。別の実施形態において、これらのマッピングは、プッシュ技術、プル技術、またはこれら２つの組み合わせを用いて、周期的に、または、必要に応じて更新される。
【０１４４】
さらに別の実施形態において、サーバシステムは、識別され、関連した実行可能プログラムがクライアントシステム上で実行されるべきか、または、複数のサーバシステムの１つにて実行されるべきかを決定するための１つ以上の規則を受信する。これらの規則は、クライアントシステム上での実行ロード、複数のサーバシステムの１つの上での実行ロード、複数のサーバシステム全体の上での実行ロード、クライアントシステムと複数のサーバシステムとの間の接続速度、あるいは、これらの、または他のファクタの任意の組み合わせを含むが、これらに限定されない１つ以上の変数の関数である。
【０１４５】
動作中、１つ以上のデータファイルが、１つ以上のサーバノード上に格納される（ステップ２４４）。データファイルは、ライブ電気通信リンク、またはポータブル格納媒体の１つ以上の形態を介してサーバノードに提供される。データファイルは、予定された時間に、予定された時間窓内で、または、該当するクライアントノードが休止状態であるか、または特定の所定のレベル未満のプロセッサ実行ロードを有する場合に提供される。
【０１４６】
サーバノードは、格納されたデータファイルを表すグラフィック印の選択を受信する（ステップ２４８）。この選択が受信された場合、サーバは、任意の関連した実行可能プログラムまたは受信されたマッピングにおいて識別された実行可能プログラムのタイプを識別する。識別された実行可能プログラムの実行を求めるリクエストは、実行するためにクライアントノードに送信される（ステップ２５６）。
【０１４７】
１実施形態において、実行可能プログラムがクライアントノード上で実行するべきか、複数のサーバノードの１つか、または配信された処理間局におけるようないくつかのサーバノードかを決定するためにロードおよび評価される。この規則の評価は、実行がクライアントノード上で生じるべきであることを示した場合、関連した実行可能プログラムの実行を求めるリクエストがクライアントノードに送信される（ステップ２５６）。１実施形態において、規則の評価は、関連した実行可能プログラムがクライアントノード上で実行するべきことを示す場合、クライアントノードは、クライアントノード上での動作の際に任意のシンクライアントアプリケーションをバイパスして、実行プログラムの出力をユーザに直接提供する。
【０１４８】
１実施形態において、サーバノードは、処理するために選択されたデータファイルと関連したデータを提供する（ステップ２６０）。通常、この情報は、クライアントノード上で動作する実行可能プログラムによって処理され、その結果がユーザに提供され、ここで、さらなる入力が、さらなる処理および表示のキューを出す。別の実施形態において、サーバノードは、選択されたデータファイルに対するポインタまたは他のリファレンスを提供する。クライアントノードは、提供されたリファレンスを用いて、例えば、ランダムまたはシーケンシャル等のデータのリクエストを生成する。リクエストは、リクエストに応答してデータを提供することによって、これらのリクエストにサービスするサーバノードに送信される。
【０１４９】
さらに別の実施形態において、データリクエストにサービスするか、または、選択されたファイルと関連したデータを提供する等の、サーバノードによって提供されるサービスは、例えば、サーバファーム等の複数のサーバノードが一斉に機能することによって提供される。１実施形態において、マスターサーバノードは、処理を求めるリクエストまたはデータを受信し、これらに直接サービスする。別の実施形態において、マスターサーバノードは、クライアントリクエストを他のサーバノードに委任する。この技術は、サーバノード間でバランスのとれた処理を容易にする。さらに別の実施形態において、リクエストは、処理またはデータアクセスを並行して取り扱ういくつかのサーバノード間で細分されて配信される。
【０１５０】
（ウェブベースのＦＴＡ）
図１０Ａを参照して、１実施形態において、本発明は、ウェブサーバ上に配置されたデータファイルを表すクライアントノード上に提供されたグラフィック印の選択を通じてサーバノード上でのトランスペアレントなプログラムの実行を可能にする。クライアントノードは、ウェブサーバに格納されたデータファイルのグラフィック描画を提供する（ステップ２８０）。クライアントノードは、データファイルのグラフィック描画の選択を受信し（ステップ２８４）、かつ、これをウェブサーバに提供する（ステップ２８８）。クライアントノードは、第１の実行可能プログラムの実行を求めるリクエストを受信する。このリクエストは、クライアントシステムの１つ、および複数のサーバシステムの１つの上で実行するためのデータファイルと関連した第２の実行可能プログラムに関する情報を含む（ステップ２９２）。クライアントノードは、第１の実行可能プログラムを実行し（ステップ２９６）、第２の実行可能プログラムの実行を求めるリクエストを提供する（ステップ３００）。クライアントノードは、第２の実行可能プログラムの実行からアプリケーション出力データを受信し（ステップ３０４）、これをエンドユーザに表示する（ステップ３０８）。
【０１５１】
さらに図１０Ａを参照して、クライアントノードは、１つ以上のウェブサーバに格納された１つ以上のデータファイルのグラフィック描画をユーザに提供する（ステップ２８０）。データファイルのグラフィック描画は、ＳＧＭＬドキュメント内のハイパーリンクとしてのアイコンまたはファイル名の表示といったグラフィック印の表示を含むが、これに限定されない。１実施形態において、ウェブサーバに格納されたファイルを表す印は、クライアントノード上に格納されたファイル、または１つ以上のサーバノード上に格納されたファイルを表す印と混ぜられる。この実施形態において、ウェブサーバに格納されたファイルを表すアイコンが選択された場合、ウェブベースのＦＴＡが動作する。別の実施形態においてＦＴＡの複数の形態（上記参照）は、動作し、選択されたグラフィック印と関連したファイルのロケーションに基づいて適切な形態のＦＴＡが起動される。
【０１５２】
クライアントノードは、キーボード、マウス、ライトペン、感圧タブレット、触覚インターフェース、または他の入力デバイスを用いて、特定のデータファイルのユーザ選択を受信する（ステップ２８４）。クライアントノードは、通常、ＨＴＴＰ等の電気通信プロトコルを用いて、ウェブサーバに選択を提供する（ステップ２８８）。
【０１５３】
選択されたデータファイルの提供に応答して、クライアントノードは、実行リクエストを受信する（ステップ２９２）。このリクエストは、第１の実行可能プログラムに対するリファレンス、およびデータファイルと関連した第２の実行可能プログラムに対するリファレンスを含むが、これらに限定されない、いくつかのパラメータを含む。１実施形態において、実行可能プログラムは、ベンダー名またはファイル名によって識別され、これらは、クライアントシステムによって、ファイル名、パス名、または所望の実行可能プログラムに対するリファレンスの少なくとも１つに分解される。このリクエストは、通常、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）等のウェブサーバ上の選択されたデータファイルを識別するパラメータを含む。
【０１５４】
１実施形態において、例示的リクエストは、「ＭｅｔａＦｒａｍｅ  ＭＳＷＯＲＤ．ＥＸＥ  ｈｔｔｐ：／／１２．３４．１２７．１２８／ｄｏｃ／ＶｅｎｄｏｒＬｉｓｔ．ＲＴＦ」である。第１のパラメータは、クライアントノードが「Ｃ：＼ＰＲＯＧＲＡ〜１＼ＣＩＴＲＩＸ＼ＭＦ．ＥＸＥ」に格納された実行可能プログラムとして識別する、クライアントノード上で実行するための第１の実行可能プログラムを表す「ＭｅｔａＦｒａｍｅ」である。第２のパラメータは、「ＭＳＷＯＲＤ．ＥＸＥ」であり、これは、サーバノード上で決定および実行するための第２の実行可能プログラムのことである。第３のパラメータは、ユーバが選択したウェブサーバ上のファイルを識別する、「ｈｔｔｐ：／／１２．３４．１２７．１２８／ｄｏｃ／ＶｅｎｄｏｒＬｉｓｔ．ＲＴＦ」である。動作中、クライアントノードは、ＭｅｔａＦｒａｍｅを実行し、ＷＯＲＤの実行を求めるリクエストをサーバノードに転送する。
【０１５５】
さらなる実施形態において、サーバノードは、セキュリティトークン等の制御情報を含むリクエストをクライアントノードに送信する。例えば、第１の実行可能プログラムは、サーバノード上の第２の実行可能プログラムの実行を求めるリクエストに制御情報を含み得る。従って、制御情報は、第２の実行可能プログラム（例えば、ＷＯＲＤ）の実行を求めるリクエストを受信すると、サーバノードまたはウェブサーバ上の第３のプログラムを呼び出し得る。この第３のプログラムは、アプリケーションの送達の態様を変更し得る（例えば、アプリケーションを送達する前に、パスワードなどの適切な認証証明書の提供を求めるリクエストをユーザにする等）。さらなる実施形態において、制御情報は、サーバノードがサーバノードによって事前にアクセスできない第２の実行可能プログラムにアクセスすることを可能にするために、サーバノードに印を提供し得る。
【０１５６】
１実施形態において、ウェブサーバ上の選択されたファイルは、クライアントノードによって受信され、これは、編集するためにファイルをキャッシュする。この実施形態において、クライアントノードは、ファイルと関連したデータを実行プログラムによって処理するためにサーバノードに提供する。別の実施形態において、クライアントノードは、キャッシュされたファイルに対するリファレンスをサーバノードに提供する。サーバノードは、クライアントノードがサービスするデータのリクエストを生成するために、提供されたリファレンスを用いる。さらに別の実施形態において、選択されたデータファイルを識別するパラメータは、サーバノードに直接提供され、これは、選択されたファイルと関連したデータに関してウェブサイトと直接連絡するか、または、サーバファームにおける別のサーバにリクエストを委任する。
【０１５７】
クライアントノードは、１実施形態において、アプリケーション出力データを受信およびエンドユーザに表示するためのＭＥＴＡＦＲＡＭＥのようなシンクライアントアプリケーションである第１の実行可能プログラムを実行する（ステップ２９６）。１実施形態において、クライアントノードは、プッシュ技術、プル技術、またはこれらの組み合わせを必要に応じてか、または予定して用いて、サーバノードまたはウェブサーバから第１の実行可能プログラムを受信する。
【０１５８】
クライアントノードは、マスターサーバノード、サーバノード、または、複数のサーバノードに第２の実行可能プログラムの実行を求めるリクエストを提供する（ステップ３００）。１実施形態において、複数のサーバノードは、実行タスクを調整および共有する。この機能は、サーバファームまたはサーバアレイにおけるロードバランスの実現を可能にする。
【０１５９】
１実施形態において、クライアントノードは、第２の実行可能プログラムがクライアントシステム上で実行されるべきであるか、複数のサーバシステムの１つが実行されるべきであるかを決定するための１つ以上の規則を受信する。これらの規則は、クライアントシステム上の実行ロード、複数のサーバシステムの１つの上の実行ロード、複数のサーバシステム全体の上での実行ロード、クライアントシステムと複数のサーバシステムとの間の接続速度、またはこれらのまたは他のファクタの任意の組み合わせを含むが、これらに限定されない１つ以上の変数の関数である。動作中、任意の関連した規則は、第２の実行可能プログラムがクライアントノード上で実行されるべきか、複数のサーバノードの１つの上か、または配信された処理環境におけるようないくつかのサーバノード上かを決定するためにロードおよび評価される。１実施形態において、規則の評価は、実行がクライアントノード上で生じ得ることを示す場合、クライアントノードは、クライアントノード上で動作する際に任意のシンクライアントアプリケーションをバイパスして、実行プログラムの出力をユーザに直接提供する。
【０１６０】
実行されると、関連したアプリケーションプログラムは、通常、グラフィック出力データまたはサウンドを含むがこれらに限定されない出力データの１つ以上の形態を生成する。１実施形態において、クライアントノードは、サーバノードとの接続を通じて、アプリケーション出力データを受信し（ステップ３０４）、これをエンドユーザに表示する（ステップ３０８）。１実施形態において、アプリケーション出力データは、クライアントノードによってか、またはクライアントノード上で実行する第１の実行可能プログラムまたは別の実行可能プログラムによって直接サポートされる１つ以上のフォーマットで提供される。べつの実施形態において、アプリケーション出力データは、圧縮されたか、または圧縮されないグラフィックデータを表すビットストリーム、表示するためのベクトルグラフィックを表すマークアップ言語、テキスト、または、実行されると、ユーザのクライアントノード上にアプリケーション出力データを表示する、一連のシステム依存コールまたはＡＰＩコールの１つ以上である。
【０１６１】
図１０Ｂは、ウェブベースのＦＴＡにおけるウェブサーバの役割を示す。ウェブサーバは、データファイルのグラフィック描画を提供する（ステップ３２０）。ウェブサーバは、次に、クライアントノードに実行リクエストを送信する（ステップ３２４）。
【０１６２】
１実施形態において、ウェブサーバは、このサーバがホストし、エンドユーザによる選択に利用可能であるデータファイルに関連したグラフィック印を提供する（ステップ３２０）。別の実施形態において、ウェブサーバは、認証またはアイデンティティ印を各ホストされたファイルと関連した印と比較することによって、どのデータファイルがエンドユーザに利用可能であるかを決定する。さらに別の実施形態において、ウェブサーバは、印をまとめて、これら自体を提供するか、あるいは、各個別のサーバにプレゼンテーションを担わせ、他の接続されたサーバノードまたはウェブサーバに、これらがホストし、ユーザへのアクセスが可能なファイルに関するグラフィック印を提供するよう促す。
【０１６３】
ウェブサーバは、通常、提供されたファイルと関連した印の選択を受信する。選択されたファイルが接続されたサーバと関連付けられる実施形態において、受信するウェブサーバは、実行可能に、かつデータリクエストそれ自体を取り扱い、適切なサーバに受信された選択を委任するか、または、選択されたファイルと関連したデータを適切なサーバから取り出し得る。１実施形態において、サーバ間のロードのバランスをとるように割り当てられた評価と調和して、これらのオプション間の選択が行われる。
【０１６４】
１実施形態において、ウェブサーバは、後から使用するようにデータファイルに組み込むために、個々のマッピングを受信する。さらに別の実施形態において、ウェブサーバは、グループで、またはソフトウェア更新等の他のデータとまとめられたマッピングを受信する。マッピングは、ライブ電気通信リンクを介して送信され得るか、または、１つ以上の取り外し可能格納媒体上のデータファイルに格納され得る。１実施形態において、これらのマッピングは、プッシュ技術、プル技術、またはこれら２つの組み合わせを用いて、周期的に、または、必要に応じて更新される。
【０１６５】
受信されたマッピングを利用して、ウェブサーバは、選択されたデータファイルが、ウェブベースのＦＴＡメカニズムを用いて実行するための実行可能プログラムと関連付けられるかどうかを決定する。マッピングは、通常、データファイルまたは実行可能プログラム間の関連を種々のレベルの粒度で特定する。１実施形態において、マッピングは、ベンダー名またはファイル名によって識別された、特定のデータファイルまたはデータファイルのタイプと、特定の実行可能プログラムまたは実行可能プログラムのタイプとをリンクする。別の実施形態において、マッピングファイルは、ユーザ名、公開鍵、およびＩＰアドレスの１つ以上を含むが、これらに限定されないユーザアイデンティティに関連したパラメータをさらに含む。この機能は、ウェブサーバが、個々のユーザ間で異なる複数のセットのファイルタイプの関連を保守することを可能にする。
【０１６６】
受信されたマッピング情報を用いて、ウェブサーバは、実行リクエストを構築し、クライアントノードに送信する（ステップ３２４）。クライアントノードは、この実行リクエストを次に、上述のように実行する。１実施形態において、ウェブサーバは、第１の実行可能プログラムを実行するために、クライアントノードにさらに提供する。別の実施形態において、ウェブサーバは、他のコンピューティングノードが選択されたデータファイルと関連したデータのリクエストを体系化することを可能にする選択されたデータファイルにリファレンスをさらに提供する。さらに別の実施形態において、ウェブサーバは、提供されたリファレンスを用いて体系化された他のコンピューティングノードからのデータリクエストをサービスする。さらに別の実施形態において、サーバノードは、選択されたデータファイルと関連したデータをクライアントノードか、または複数のサーバノードの１つに提供して、後続の処理を容易にする。
【０１６７】
さらに別の実施形態において、ウェブサーバは、クライアントシステム上のロード、とくていのサーバシステム上のロード、複数のサーバシステム上のロード、またはクライアントノード、ウェブサーバ、サーバノード、または複数のサーバノードの１つ以上の間の接続の利用可能か、または理論上の帯域幅を含むが、これらに制限されないファクタに基づいて、クライアントノードが第２の実行可能プログラムがクライアントノード上で実行されるべきか、複数のサーバノードの１つか、または複数のサーバノードかを決定することを可能にするクライアントノードに１つ以上の規則をさらに提供する。
【０１６８】
本発明は、製造品の１つ以上の製品の上または中に組み込まれた１つ以上のコンピュータ読み出し可能プログラムとして提供され得る。製造品の製品は、フロッピー（Ｒ）ディスク、ハードディスク、ＣＤ  ＲＯＭ、フラッシュメモリカード、ＰＲＯＭ、ＲＡＭ、ＲＯＭ、または磁気テープであり得る。一般に、コンピュータ読み出し可能プログラムは、任意のプログラミング言語で実現され得る。用いられ得る言語のいくつかの例は、Ｃ、Ｃ＋＋、またはＪＡＶＡ（Ｒ）を含む。ソフトウェアプログラムは、オブジェクトコードとして製造品の１つ以上の製品の上または中に格納され得る。
【０１６９】
本発明の主旨および範囲から逸脱することなく、複数の変更および改変が当業者によってなされ得る。従って、示された実施形態は、例示の目的で示されたにすぎず、上記の請求項の範囲によって定義される本発明を限定すると捉えられるべきでないことが明確に理解されなければならない。これらの請求項は、その他の点では、上記の説明に示され、かつ記載されるものとは同じでないとしても、文字通り示されるもの、および、実質的に異ならない均等物を含むと読まれるべきである。
【図面の簡単な説明】
【０１７０】
【図１Ａ】図１Ａは、クライアントノードのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄが判定され得る、ネットワークを介してサーバノードのグループと通信するクライアントノードの実施形態の図である。
【図１Ｂ】図１Ｂは、グラフィカルユーザインターフェースを利用したクライアントノードの実施形態の表示の図である。
【図２Ａ】図２Ａは、サーバノードのうちの１つがクライアントノードのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄを判定するアプリケーションプログラムの実行を開始する、例示的なプロセスを示すブロック図である。
【図２Ｂ】図２Ｂは、クライアントノードがクライアントノードのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄを判定するアプリケーションプログラムの実行を開始する、例示的なプロセスを示すブロック図である。
【図２Ｃ】図２Ｃは、クライアントノードがウェブブラウザアプリケーションを利用してＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄを判定する、例示的なプロセスを示すブロック図である。
【図３Ａ】図３Ａは、クライアントノードがそのクライアントノードに表示されるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウからアプリケーションプログラムを起動する、例示的なプロセスを示すブロック図である。
【図３Ｂ】図３Ｂは、クライアントノードがそのクライアントノードに表示されるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウからアプリケーションプログラムを起動する、例示的なプロセスを示すブロック図である。
【図３Ｃ】図３Ｃは、クライアントノードがそのクライアントノードに表示されるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウィンドウからアプリケーションプログラムを起動する、例示的なプロセスを示すブロック図である。
【図３Ｄ】図３Ｄは、クライアントノードがそのクライアントノードに表示されるＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄウェブページからアプリケーションプログラムを起動する、例示的なプロセスを示すブロック図である。
【図４】図４は、インストール済みのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを有するクライアントノードが複数のサーバノードのうちの１つと通信する、クライアントベースのコンピューティングの実施形態のブロック図である。
【図５】図５は、クライアントノードがインストール済みのＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションを有するサーバノードと通信する、サーバベースのコンピューティングの実施形態のブロック図である。
【図６Ａ】図６Ａは、Ｐｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションプログラムが実行された後のクライアントノードの表示画面の例示的な表示のスクリーンショットである。
【図６Ｂ】図６Ｂは、本発明のＰｒｏｇｒａｍ  Ｎｅｉｇｈｂｏｒｈｏｏｄアプリケーションプログラムが実行された後のクライアントノードの表示画面の別の例示的の表示のスクリーンショットである。
【図７】クライアントノードがアプリケーションサーバにおいてアプリケーションプログラムを利用する可用性について通知される、プロセスの実施形態のフローチャート表現である。
【図８Ａ】図８Ａは、ユーザがユーザのクライアントノードにより支配されるデータファイルを選択することによって、サーバノードにおけるアプリケーションプログラムを実行する、プロセスの実施形態のフローチャート表現である。
【図８Ｂ】図８Ｂは、図８Ａの実施形態のサーバノードの役割のフローチャート表現である。
【図９Ａ】図９Ａは、サーバノードにより支配されるデータファイルを選択することによって、ユーザがユーザのクライアントノードのアプリケーションプログラムを実行する、プロセスの実施形態のフローチャート表現である。
【図９Ｂ】図９Ｂは、図９Ａの実施形態のサーバノードの役割のフローチャート表現である。
【図１０Ａ】図１０Ａは、ウェブサーバにより支配されるデータファイルを選択することによって、ユーザがサーバノードにより支配されるアプリケーションを実行する。
【図１０Ｂ】図１０Ｂは、図１０Ａの実施形態のウェブサーバの役割のフローチャート表現である。
【図２Ａ】
2005505051.tif 000005
【図２Ｂ】
2005505051.tif 000006
【図２Ｃ】
2005505051.tif 000007
【図３Ａ】
2005505051.tif 000008
【図３Ｂ】
2005505051.tif 000009
【図３Ｃ】
2005505051.tif 000010
【図３Ｄ】
2005505051.tif 000011
【図４】
2005505051.tif 000012
【図５】
2005505051.tif 000013
【図６Ａ】
2005505051.tif 000014
【図６Ｂ】
2005505051.tif 000015
【図７】
2005505051.tif 000016
【図８Ａ】
2005505051.tif 000017
【図８Ｂ】
2005505051.tif 000018
【図９Ａ】
2005505051.tif 000019
【図９Ｂ】
2005505051.tif 000020
【図１０Ａ】
2005505051.tif 000021
【図１０Ｂ】
2005505051.tif 000022
【国際公開パンフレット】
2005505051.tif 000023
2005505051.tif 000024
2005505051.tif 000025
2005505051.tif 000026
2005505051.tif 000027
2005505051.tif 000028
2005505051.tif 000029
2005505051.tif 000030
2005505051.tif 000031
2005505051.tif 000032
2005505051.tif 000033
2005505051.tif 000034
2005505051.tif 000035
2005505051.tif 000036
2005505051.tif 000037
2005505051.tif 000038
2005505051.tif 000039
2005505051.tif 000040
2005505051.tif 000041
2005505051.tif 000042
2005505051.tif 000043
2005505051.tif 000044
2005505051.tif 000045
2005505051.tif 000046
2005505051.tif 000047
2005505051.tif 000048
2005505051.tif 000049
2005505051.tif 000050
2005505051.tif 000051
2005505051.tif 000052
2005505051.tif 000053
2005505051.tif 000054
2005505051.tif 000055
2005505051.tif 000056
2005505051.tif 000057
2005505051.tif 000058
2005505051.tif 000059
2005505051.tif 000060
2005505051.tif 000061
2005505051.tif 000062
2005505051.tif 000063
2005505051.tif 000064
2005505051.tif 000065
2005505051.tif 000066
2005505051.tif 000067
2005505051.tif 000068
2005505051.tif 000069
2005505051.tif 000070
2005505051.tif 000071
2005505051.tif 000072
2005505051.tif 000073
2005505051.tif 000074
2005505051.tif 000075
2005505051.tif 000076
2005505051.tif 000077
2005505051.tif 000078
2005505051.tif 000079
2005505051.tif 000080
2005505051.tif 000081
2005505051.tif 000082
2005505051.tif 000083
2005505051.tif 000084
2005505051.tif 000085
2005505051.tif 000086
2005505051.tif 000087
2005505051.tif 000088
2005505051.tif 000089
2005505051.tif 000090
2005505051.tif 000091
2005505051.tif 000092
2005505051.tif 000093
2005505051.tif 000094
2005505051.tif 000095
2005505051.tif 000096
2005505051.tif 000097
2005505051.tif 000098
2005505051.tif 000099
2005505051.tif 000100
2005505051.tif 000101
2005505051.tif 000102
2005505051.tif 000103
2005505051.tif 000104
【国際公開パンフレット（コレクトバージョン）】
2005505051.tif 000105
【国際調査報告】
2005505051.tif 000106
2005505051.tif 000107
2005505051.tif 000108
2005505051.tif 000109