(57)【要約】【課題】クライアントプロセッサを更新するために自動的にソフトウェアを引き出すためのワークステーションを提供する。【解決手段】クライアントプロセッサは、ローカルエリアネットワークを介して相互につながれた少なくとも１つの他のクライアントプロセッサに統合される。クライアントプロセッサはまた広域ネットワークを介して相互につながれたソフトウェア配布プロセッサに統合される。ソフトウェア配布プロセッサは１セットのファイルチャンク、設定可能なサイズの各ファイルチャンクおよび計算されたデジタル署名を有する各ファイルチャンクとして、ソフトウェア配布を保持する。クライアントプロセッサのリクエストによって、クライアントプロセッサ用にローカルエリアネットワークを介して相互につながれたクライアントプロセッサのリストおよびソフトウェアの期待状態を得るためにクライアントプロセッサはソフトウェア配布プロセッサと通信し合う。【選択図】図１
2008159054.tif 000002
【特許請求の範囲】
【請求項１】
ローカルエリアネットワークを介して相互につながれた、少なくとも１つの他のクライアントプロセッサに前記クライアントプロセッサを統合するステップと、
広域ネットワークを介して相互につながれたソフトウェア配布プロセッサに前記クライアントプロセッサを統合し、前記ソフトウェア配布プロセッサは、１セットのファイルチャンクと、設定可能なサイズの各ファイルチャンクと、および計算されたデジタル署名とを有する各ファイルチャンクとしてソフトウェア配布を保持するステップと、
前記ローカルエリアネットワークを介して相互につながれたクライアントプロセッサのリストおよび前記クライアントプロセッサ用のソフトウェアの期待状態を得るための前記クライアントプロセッサのリクエストによって、前記ソフトウェア配布プロセッサと通信するステップと、
前記クライアントプロセッサ上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、前記ソフトウェア配布の少なくとも１つのファイルチャンクが必要であることを前記クライアントプロセッサ内において判定するステップと、
前記クライアントプロセッサのリクエストによって、前記ローカルエリアネットワーク上の別のクライアントプロセッサから前記クライアントプロセッサに前記少なくとも１つのファイルチャンクを転送するステップと、
の各ステップを含むクライアントプロセッサに対してソフトウェアを自動配布する方法。
【請求項２】
前記少なくとも１つのファイルチャンクが他のクライアントプロセッサの１つから入手可能でない、もしくは他のクライアントプロセッサの１つによってダウンロードされていないということを前記クライアントプロセッサ内において判定し、
前記ソフトウェア配布プロセッサから前記少なくとも１つのファイルチャンクをダウンロードすること
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ソフトウェア配布プロセッサに結合したクライアントプロセッサの数を勘案する前記ソフトウェア配布プロセッサに入手可能な推測された広域ネットワーク帯域幅および前記クライアントプロセッサの結合帯域幅に基づいた各ファイルチャンクの前記設定可能なサイズを判定すること
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ソフトウェア配布プロセッサに配置されたファイルチャンクのマスタファイルリストのデジタル署名と前記クライアントプロセッサ内のファイルチャンクのファイルリストのデジタル署名との比較に基づいたソフトウェアアップデートを前記クライアントプロセッサが必要とするかどうかを判定するクライアントプロセッサから受信された「GetFileList」トランザクションを前記ソフトウェア配布プロセッサ内において処理することをさらに含み、
前記マスタファイルリストは期待状態を表現する、請求項１に記載の方法。
【請求項５】
前記クライアントプロセッサがソフトウェアアップデートを必要とすることを示す前記比較を判定し、
前記マスタファイルリストの前記デジタル署名と、前記マスタファイルリスト内の各ファイルチャンクのリストと、各ファイルチャンクの署名の関連づけと、およびピアクライアントのためのアドレスを結合するリストを通信すること
をさらに含む、請求項４に記載の方法。
【請求項６】
ファイルチャンクのデジタル署名によって識別された前記ファイルチャンクをダウンロードするために、前記クライアントプロセッサから受信した「GetFileChunk」トランザクションを前記ソフトウェア配布プロセッサ内において処理すること
をさらに含む、請求項１に記載の方法。
【請求項７】
少なくとも２つのソフトウェア配布プロセッサ内の仕事量の平衡を保つ目的で、別のソフトウェア配布プロセッサから受信した「GetClientList」トランザクションを前記ソフトウェア配布プロセッサ内において処理すること
をさらに含む、請求項１に記載の方法。
【請求項８】
前記クライアントプロセッサは、
ファイルチャンクを保持し前記クライアントプロセッサ上で動作するソフトウェアの現在状態を保持するプリスティンディレクトリと、前記ファイルチャンクのファイルリストと、
前記ファイルリストのデジタル署名と、各ファイルチャンクのデジタル署名とを備える、請求項１に記載の方法。
【請求項９】
ファイルチャンクの署名によって識別された前記ファイルチャンクを転送するために別のクライアントプロセッサから受信した「GetFileChunk」トランザクションを前記クライアントプロセッサ内において処理すること
をさらに含む、請求項１に記載の方法。
【請求項１０】
どのファイルチャンクが、既に存在するか、あるいは、前記ソフトウェア配布プロセッサからダウンロードされているか、あるいは、別のクライアントプロセッサから転送されているかを、判定するために、別のクライアントプロセッサから受信した「CompareNotes」トランザクションを前記クライアントプロセッサ内において処理すること
をさらに含む、請求項１に記載の方法。
【請求項１１】
ソフトウェアアップデートを引き出すためのクライアントワークステーションであって、
少なくとも１台の他のクライアントワークステーションに前記クライアントワークステーションを統合することに使用される少なくとも１台の他のクライアントワークステーションに前記クライアントワークステーションを結合するローカルエリアネットワークと、
ソフトウェア配布サーバに前記クライアントワークステーションを同期させるために使用される前記ソフトウェア配布サーバに、前記クライアントワークステーションを結合する広域ネットワークであって、前記ソフトウェア配布プロセッサは、１セットのファイルチャンク、構成可能なサイズの各ファイルチャンクおよび計算されたデジタル署名を有する各ファイルチャンクとしてソフトウェア配布を保持する、前記広域ネットワークと、
前記クライアントワークステーション上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、前記ソフトウェア配布の少なくとも１つのファイルチャンクが必要であることを前記クライアントワークステーション内において判定するために、およびクライアントワークステーションのリクエストによって前記ローカルエリアネットワーク上の別のクライアントワークステーションから前記クライアントワークステーションに前記少なくとも１つのファイルチャンクを転送するために、前記ローカルエリアネットワークを介して相互につながれたクライアントワークステーションのリストと前記クライアントワークステーションのためのソフトウェアの期待状態とを取得する前記クライアントワークステーションのリクエストによって、前記ソフトウェア配布プロセッサと通信するために前記クライアントワークステーション上で作動するクライアントアプリケーションと
を備える、クライアントワークステーション。
【請求項１２】
前記クライアントアプリケーションは、
前記少なくとも１つのファイルチャンクが他のクライアントワークステーションの１つから入手可能でないか、あるいは他のクライアントワークステーションの１つによってダウンロードされていないかを前記クライアントワークステーション内において判定し、かつ前記ソフトウェア配布サーバから前記少なくとも１つのファイルチャンクをダウンロードするために作動することをさらに含む、
請求項１１に記載のクライアントワークステーション。
【請求項１３】
前記クライアントワークステーション上で現在動作しているファイルチャンクのファイルリストを保持するストレージシステムと、ファイルリストおよび前記ファイルチャンクの各々のデジタル署名と、ソフトウェアアップデートを引き出すためのアップデートプログラムと
をさらに含む、請求項１１に記載のクライアントワークステーション。
【請求項１４】
前記アップデートプログラムは、前記ソフトウェア配布サーバに配置されたファイルチャンクのマスタファイルリストのデジタル署名と前記クライアントワークステーション内のファイルチャンクのファイルリストのデジタル署名との比較に基づいて、前記クライアントワークステーションが最新のファイルを有しているかどうかを判断するための前記ソフトウェア配布サーバ内の「GetFileList」トランザクションを要求するためのサポートを含み、
前記マスタファイルリストは、前記期待状態を表現する、請求項１３に記載のクライアントワークステーション。
【請求項１５】
前記アップデートプログラムは、ファイルチャンクのデジタル署名によって識別された前記ファイルチャンクをダウンロードするための前記ソフトウェア配布サーバ内の「GetFileChunk」トランザクションを要求するためのサポートを含む、請求項１３に記載のクライアントワークステーション。
【請求項１６】
前記アップデートプログラムは、前記クライアントワークステーションから、要求するクライアントワークステーションに、ファイルチャンクを転送するために、要求するクライアントワークステーションから受信された「GetFileChunk」トランザクションのサポートを含み、前記ファイルチャンクはファイルチャンクのデジタル署名によって識別される、請求項１３に記載のクライアントワークステーション。
【請求項１７】
前記アップデートプログラムは、どのファイルチャンクが、前記クライアントワークステーション内に既にあるか、あるいは、前記ソフトウェア配布サーバからダウンロードされているか、あるいは別のクライアントワークステーションから転送されているかを判定するために、要求するクライアントワークステーションから受信された「CompareNotes」トランザクションのサポートを含む、請求項１３に記載のクライアントワークステーション。
【請求項１８】
コンピュータ読み取り可能な記憶媒体上に格納されたプログラムコードを含む前記コンピュータ読み取り可能な記憶媒体であって、前記プログラムコードは、
ローカルエリアネットワークを介して相互につながれた、少なくとも１つの他のクライアントプロセッサに前記クライアントプロセッサを統合し、
広域ネットワークを介して相互につながれたソフトウェア配布プロセッサに前記クライアントプロセッサを統合し、前記ソフトウェア配布プロセッサは、１セットのファイルチャンク、設定可能なサイズの各ファイルチャンク、および計算されたデジタル署名を有する各ファイルチャンクとしてソフトウェア配布を保持し、
前記ローカルエリアネットワークを介して相互につながれたクライアントプロセッサのリストおよび前記クライアントプロセッサ用のソフトウェアの期待状態を得るための前記クライアントプロセッサのリクエストによって、前記ソフトウェア配布プロセッサと通信し、
前記クライアントプロセッサ上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、前記ソフトウェア配布の少なくとも１つのファイルチャンクが必要であることを前記クライアントプロセッサ内において判定し、
前記クライアントプロセッサのリクエストによって、前記ローカルエリアネットワーク上の別のクライアントプロセッサから前記クライアントプロセッサに前記少なくとも１つのファイルチャンクを転送するためのプログラムコードである、コンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記少なくとも１つのファイルチャンクが他のクライアントプロセッサの１つから入手可能でない、もしくは他のクライアントプロセッサの１つによってダウンロードされていないということを前記クライアントプロセッサ内において判定し、
前記ソフトウェア配布プロセッサから前記少なくとも１つのファイルチャンクをダウンロードするためのプログラムコードを
さらに含む、請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
どのファイルチャンクが、既に存在するか、あるいは、前記ソフトウェア配布プロセッサからダウンロードされているか、あるいは、別のクライアントプロセッサから転送されているかを、判定するために、別のクライアントプロセッサから受信した「CompareNotes」トランザクションを前記クライアントプロセッサ内において処理し、
ファイルチャンクの署名によって識別された前記ファイルチャンクを転送するために別のクライアントプロセッサから受信した「GetFileChunk」トランザクションを前記クライアントプロセッサ内において処理するためのプログラムコードを
さらに含む、請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア配布システムに広く関する。特に、本発明は、リモートサイト、例えば、航空会社のセルフチェックイン、ホテルのチェックイン、レンタカー予約、ＰＯＳ端末などを支援するために用いられるソフトウェア配布システムに関する。
【背景技術】
【０００２】
集中型サービスセンターを越えて配置された、セルフサービスのキオスク端末装置および代理店端末クライアントワークステーションの数が増加するにつれて、これらのクライアントワークステーションに配置されたプログラムおよびソフトウェアアップデートまたはソフトウェアアプリケーションのアプリケーション管理および配布は、深刻さを増す問題になる。変化するビジネス要件に一貫して応じるために、クライアントがすべて同じソフトウェアバージョンを実行していることが望ましく、また、多くの場合義務的である。クライアントソフトウェアの複数の同時発生のバージョンのサポートが必要な場合、クライアントおよびサーバの両方のバージョン管理は、アプリケーション管理および分配の困難性をさらに増加させる。さらに、最小コンフィギュレーションを必要とし、全く人を介在させない自動化された無人の方法で、リモートクライアント上のソフトウェアを更新することが望ましい。
【０００３】
また、通常、リモートクライアントおよび集中型サーバを支援するインフラは、対処されなければならない制限を有している。例えば、集中型サーバと各リモートサイトの間の広域ネットワーク（ＷＡＮ）帯域幅は、コストを節約するために通常制限されている。特にソフトウェア配布が比較的稀少な場合、帯域幅割当は、主としてアプリケーション用法の要求に基づいて、ソフトウェア配布要求を反映できない。多くのファイルを有する大規模なアプリケーションへのアップデートは、ＷＡＮを介してリモートクライアントに多くの資源の相当量を送信するかもしれない。例えば、増加分のアプリケーションリリースは、１０００ファイルを含む１００メガバイトのファイルリストから少数のファイルを更新してもよい。しかし、多くの現在利用可能な解決法においては、全体のファイルリストはアップデート承諾を保証するために個々のリモートクライアントに送信される。ダウンロード用かつ時刻のインストール用の帯域幅要件を低減するためには、新規、もしくは最後の更新以後変更された更新ファイルのみであることが好ましい。
【０００４】
大規模な空港のキオスク端末装置の展開あるいは大型店のＰＯＳ端末の展開のような、いくつかのリモート展開サイトは、上記の言及する問題を何桁も増幅して、何十あるいは何百ものクライアントを含むかもしれない。例えこれらのサイトにローカルのクライアント間の高速のローカルエリアネットワークがあったとしても、ローカルエリアネットワークはソフトウェア配信プロセスの自動化を強化するためには主として利用されない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そのような問題の組み合わせは非常に複雑な問題を引き起こす。例えば、サーバと多くのクライアントを有するリモートサイトとの間での、上で言及した広域ネットワーク帯域幅制限は、実用的でない、あるいは管理するために費用対効果がよくない状況を作るかもしれない。
【課題を解決するための手段】
【０００６】
いくつかの態様の中で、本発明は、広域ネットワークを介して１セットのクライアントワークステーションに集中型サーバ環境を結合する（それらはさらに相互に結合される）ことが有利であることを認める。クライアントワークステーションは、自動的に集中型サーバ環境からソフトウェアアップデートを引き出す。広域ネットワークを介してファイルチャンク署名に基づいてダウンロードする差分ファイルを用いて、ローカルエリアネットワークを介してクライアント間のファイルを転送するためにピア・ツー・ピアのクライアントコミュニケーションを用いることは、さらに有利である。
【０００７】
そのような分野のために、本発明の実施例は、クライアントプロセッサを更新するためソフトウェアを引き出すための自動化方法である。クライアントプロセッサは、ローカルエリアネットワークを介して相互につながれた、少なくとも１つの他のクライアントプロセッサに統合される。クライアントプロセッサは、広域ネットワークを介して相互につながれたソフトウェア配布プロセッサに統合される。そして、ソフトウェア配布プロセッサは、１セットのファイルチャンク、設定可能なサイズの各ファイルチャンク、および計算されたデジタル署名を有する各ファイルチャンクとして、ソフトウェア配布を保持する。
【０００８】
クライアントプロセッサのリクエストによって、クライアントプロセッサ用にローカルエリアネットワークを介して相互につながれたクライアントプロセッサのリストおよびソフトウェアの期待状態を得るために、クライアントプロセッサは、ソフトウェア配布プロセッサと通信し合う。クライアントプロセッサは、クライアントプロセッサ上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、ソフトウェア配布の少なくとも１つのファイルチャンクが必要であるかどうかを決定する。クライアントプロセッサのリクエストによって、少なくとも１つのファイルチャンクは、別のクライアントプロセッサからクライアントプロセッサにローカルエリアネットワークによって転送される。
【０００９】
発明の別の実施例は、ソフトウェアアップデートを引き出すためのクライアントワークステーションによって取り組む。ローカルエリアネットワークは、少なくとも１台の他のクライアントワークステーションにクライアントワークステーションを統合することに使用される少なくとも１台の他のクライアントワークステーションにクライアントワークステーションを結合する。広域ネットワークは、ソフトウェア配布サーバにクライアントワークステーションを同期させるために使用されるソフトウェア配布サーバに、クライアントワークステーションを結合する。そして、ソフトウェア配布プロセッサは、１セットのファイルチャンク、構成可能なサイズの各ファイルチャンクおよび計算されたデジタル署名を有する各ファイルチャンクとしてソフトウェア配布を保持する。
【００１０】
クライアントアプリケーションは、クライアントワークステーション上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、ソフトウェア配布の少なくとも１つのファイルチャンクが必要であることをクライアントワークステーション内において判定するために、およびクライアントワークステーションのリクエストによってローカルエリアネットワーク上の別のクライアントワークステーションからクライアントワークステーションに少なくとも１つのファイルチャンクを転送するために、ローカルエリアネットワークを介して相互につながれたクライアントワークステーションのリストとクライアントワークステーションのためのソフトウェアの期待状態とを取得するクライアントワークステーションのリクエストによって、ソフトウェア配布プロセッサと通信するためにクライアントワークステーション上で作動する。
【００１１】
発明の別の実施例は、コンピュータ読み取り可能な記憶媒体上に格納されたプログラムコードを含むコンピュータ読み取り可能な記憶媒体に取り組む。プログラムコードは、ローカルエリアネットワークを介して相互につながれた、少なくとも１つの他のクライアントプロセッサにクライアントプロセッサを統合するために用いられる。プログラムコードは、広域ネットワークを介して相互につながれたソフトウェア配布プロセッサにクライアントプロセッサを統合させる。そして、ソフトウェア配布プロセッサは、１セットのファイルチャンク、設定可能なサイズの各ファイルチャンク、および計算されたデジタル署名を有する各ファイルチャンクとしてソフトウェア配布を保持する。
【００１２】
プログラムコードによって管理されるように、クライアントプロセッサのリクエストによってソフトウェア配布プロセッサとのコミュニケーションは、クライアントプロセッサのためにローカルエリアネットワークを介して相互につながれたクライアントプロセッサのリストおよびソフトウェアの期待状態を得るために遂行される。プログラムコードはまた、クライアントプロセッサ上で動作するソフトウェアの現在状態と期待状態との比較に基づいて、ソフトウェア配布の少なくとも１つのファイルチャンクが必要であることをクライアントプロセッサ内において判定することをサポートする。
【００１３】
プログラムコードは、さらに、ローカルエリアネットワークを介して、別のクライアントプロセッサからクライアントプロセッサに、クライアントプロセッサのリクエストによって、少なくとも１つのファイルチャンクを転送する。
【００１４】
本発明の他の機能および利点と同様に、本発明についてのより十分な理解も、以下の詳細な説明および添付の図面から明白になる。
【発明を実施するための最良の形態】
【００１５】
添付図面を参照しながら本願発明について、より十分に記述する。そこでは、本発明のいくつかの実施例と種々相が示される。しかしながら、本発明は様々な形式で具現されることができ、本明細書に記された実施例に限定されるものとして解釈されるべきではない。もっと正確に言えば、この開示が詳細になり完全になるために、これらの実施例が提供され、当業者に発明の範囲を十分に伝えるであろう。
【００１６】
図１は、本発明の態様による集中型サーバシステム１００を図示している。集中型サーバシステム１００は、中央サーバ環境１０２、リモートサイト１０４、および第１のネットワークメディア１０６とともに図示されている。中央サーバ環境１０２は、中央サーバ１０８、コンセントレータ／ルーター１１０、ファイアウォール１１２、ハブ／スイッチ１１４、および他の電子機器を含んでいる。他の電子機器は、例えば、中央サーバ１０８のデータベース１１６（データベース１１６はデータベースサーバおよび他のネットワークスイッチを含むことができる）、およびローカルクライアント１１８を含んでいる。
【００１７】
サーバ（例えば中央サーバ１０８）は、１つ以上のプロセッサ、メモリ、大容量ディスクドライブや高速通信装置のような高容量および高パフォーマンスの入出力装置を有する処理システムであり、キーボード、ディスプレイおよびプリンタを有することができる。コンピュータ読み取り可能な媒体に格納されるようなサーバプログラムは、例えば、磁気、光学、他の型のディスクドライブあるいは不揮発性記憶素子のような記憶メディアからロードされてもよいし、通信装置を通してダウンロードされてもよい。パフォーマンス、容量および、信頼度要求事項を満たすために、中央サーバ１０８のようなサーバは、サーバのクラスタとしてさらに構成されてもよい。
【００１８】
例えば、コンセントレータ、ルーター、ファイアウォール、ハブおよびスイッチは、異なるネットワークあるいはプロセッシングノードの間のデータの流れをコントロールするネットワーク装置であり、仮想プライベートネットワーク（ＶＰＮ）のサポートをするこができる。ファイアウォールは、不要なコミュニケーションあるいは禁止されたコミュニケーションから、サーバやデータベースのようなネットワークおよびその内蔵装置を保護するために、ネットワークトラフィックのセキュリティポリシーを強化するハードウェア装置および／またはソフトウェアアプリケーションである。データベースは、データベースアクセス機能を提供および支援するデータベースサーバによって各々接続され管理された高容量ディスクドライブの集合から成ってもよい。
【００１９】
集中型サーバシステム１００は、リモートサイト１０４のような複数の顧客環境を含む。リモートサイトは、例えば、航空会社環境、ホテル、レンタカー会社、銀行、および中央サーバ環境およびリモートサイトを利用する他のそのような会社を含むことができる。リモートサイトは、１台以上のクライアントワークステーションが配置されるホテル、ショッピング・モール、銀行、大学あるいは総合大学、コーヒーショップのような店、あるいはその他同種のものを適切に象徴することができる。
【００２０】
航空会社環境のようなリモートサイト１０４は、例えば、１つ以上のリモートクライアントプロセッサ１２０、ハブ／スイッチ１２２、およびルーター１２４を含むことができる。リモートサイト１０４は、さらに、リモートクライアントプロセッサを連結するためのローカルエリアネットワークのような第２のネットワークメディアを含むことができる。クライアントプロセッサは、新規のクライアントプロセッサがローカルエリアネットワークに加えられる場合、およびローカルエリアネットワークが最初にオンラインに導かれる場合に生じることができるような、ローカルエリアネットワーク上に相互につながれた他のクライアントプロセッサに統合される。
【００２１】
本発明による、リモートクライアントプロセッサ１２０の１つのようなワークステーションあるいはキオスク端末装置は、集中型サーバシステム１００のユーザと電子的に対話するためのセルフサービス装置である。ワークステーションあるいはキオスク端末装置は、１つ以上のプロセッサ、メモリ、入出力装置、磁気および光ディスク駆動装置のようなストレージシステム、および高速通信装置を有する処理システムを適切に含み、典型的にはキーボード、ディスプレイ、およびプリンタを有する。
【００２２】
キオスク端末装置は、乗客予約、航空会社のチェックイン、ホテルの予約およびチェックイン、レンタカーの予約およびピックアップなどのような機能を提供するために調整することができ、またその意図した機能（航空便の乗客のチェックインなど）に助成するあらゆる環境内に配置することができる。ワークステーションプログラムあるいはキオスク端末装置プログラムは、コンピュータ読み取り可能な媒体として、例えば、ディスクドライブあるいは他のそのような不揮発性記憶素子のような記憶メディアからロードされるか、あるいは通信装置を通してダウンロードされてもよい。
【００２３】
第１ネットワークメディア１０６は、フレームリレー網、仮想プライベートネットワーク（ＶＰＮ：Virtual Private Network）、インターネットなどのような広域ネットワークを含んでもよい。第１ネットワークメディア１０６は、中央サーバ環境１０２と、リモートサイト１０４のような１つ以上のリモートサイトとの間の制御およびデータ通信路を提供する。
【００２４】
図２は、本発明の１つの態様による、リモートクライアントに有利にソフトウェアを配布するための典型的なシンクライアントバージョン管理（ＴＣＶＣ：Thin Client Version Control）システム２００を図示している。
【００２５】
典型的なＴＣＶＣシステム２００は、ＴＣＶＣサーバ２０２、第１のネットワークメディア２０３、ワークステーション２０４、ワークステーション２０６、および第２のネットワークメディア２０７を含んでいる。ＴＣＶＣサーバ２０２は、ＴＣＶＣサーバアプリケーション２０８、ファイルリスト２１０、マスタディレクトリ２１２、ファイルリストのセキュアハッシュアルゴリズム（ＳＨＡ：Secure Hash Algorithm）署名２１４、および登録済みのクライアントノードのリスト２１６を含む。
【００２６】
ワークステーション２０４は、シンクライアントバージョン管理（ＴＣＶＣ）クライアントアプリケーション２２０、ファイルリスト２２２、ステージングディレクトリ（ＳＤＩＲ：Staging Directory）２２４、プリスティンディレクトリ（ＰＤＩＲ：Pristine Directory）２２６、ファイルチャンクのＳＨＡ署名２２８、ライブディレクトリ（ＬＤＩＲ：Live
Directory）２３０、およびアップデートプログラム２３２を含む。
【００２７】
ワークステーション２０６は、ＴＣＶＣクライアントアプリケーション２４０、ファイルリスト２４２、ステージングディレクトリ（ＳＤＩＲ）２４４、プリスティンディレクトリ（ＰＤＩＲ）２４６、ファイルチャンクのＳＨＡ署名２４８、ライブディレクトリ（ＬＤＩＲ）２５０、およびアップデートプログラム２５２を含む。
【００２８】
第１ネットワークメディア２０３は、フレームリレー網、仮想プライベートネットワーク（ＶＰＮ）、インターネットなどのような広域ネットワークを適切に含んでもよい。第２のネットワークメディア２０７は、ワークステーション２０６とワークステーション２０４と、そしてＴＣＶＣサーバ２０２と直接結び付けてもよいし結び付けなくてもよいあらゆる新たなワークステーションとを結び付けるための、ローカルエリアネットワークを含んでもよい。
【００２９】
ＴＣＶＣサーバアプリケーション２０８は、中央サーバ１０８のような１つ以上のサーバ上で作動する。中央サーバ１０８は、個々のリモートクライアントプロセッサ１２０、キオスク端末装置あるいはワークステーション上で用いられるファイルのマスターリストにアクセスする。ＴＣＶＣサーバアプリケーション２０８は、「GetFileList」「GetFileChunk」「GetClientList」のようなトランザクションをサポートする。
【００３０】
最新のファイルを有しているかどうか判断するアップデート手続きでは、ＴＣＶＣクライアントアプリケーション２２０を実行するワークステーション２０４のようなワークステーションは、ＴＣＶＣサーバアプリケーション２０８に「GetFileList」トランザクションリクエストを送信する。ＴＣＶＣクライアントアプリケーション２２０は、入力としてそれが要求しているテーマリストの名前、ＴＣＶＣクライアントアプリケーション２２０が作動している遠隔ワークステーションのＩＰアドレス、および遠隔ワークステーション上のプリスティンディレクトリ（ＰＤＩＲ）２２４内に現在存在するファイルリスト全体のためのセキュアハッシュアルゴリズム（ＳＨＡ）署名を送信する。
【００３１】
クライアントによって送信されたＳＨＡ署名がサーバ上の対応するマスタファイルリストのＳＨＡ署名と一致する場合、ＴＣＶＣサーバアプリケーション２０８は、クライアントに警報解除信号を送信する。署名が一致しない場合、ＴＣＶＣサーバアプリケーション２０８は、マスタファイルリスト署名、関連づけられたＳＨＡ署名に加えてマスタファイルリスト内の各ファイルチャンクのリスト、除去処理の間にクライアントによって削除する必要がある如何なるファイル／ディレクトリのリスト、およびファイルチャンクを転送することを試みることができるピアのＩＰアドレスのリストを、クライアントに通知する。
【００３２】
サーバからファイルチャンクをダウンロードしたい場合、アップデート手続きの一部として、ＴＣＶＣクライアントアプリケーション２２０は、ＴＣＶＣサーバアプリケーション２０８に「GetFileChunk」トランザクションリクエストを送信する。ＴＣＶＣクライアントアプリケーション２２０は、入力としてそれが要求しているファイルリストの名前、およびそれが要求しているファイルチャンクのＳＨＡ署名を送信する。クライアントによって要求されたファイルチャンクのＳＨＡ署名が、現在のサーバ上のいかなるファイルチャンクのＳＨＡ署名とも一致する場合、ＴＣＶＣサーバアプリケーション２０８はクライアントにファイルチャンクを返す。クライアントによって要求されたファイルチャンクのＳＨＡ署名が、現在のサーバ上のどのファイルチャンクのＳＨＡ署名とも一致しない場合、ＴＣＶＣサーバアプリケーション２０８はエラーを返す。
【００３３】
複数のＴＣＶＣサーバが１セットの遠隔ワークステーションを供するために設定される場合、「GetClientList」トランザクションは、別のＴＣＶＣサーバ（図示せず）によってコールされてもよい。いくつかのサーバ中でロードの安定を保つことを可能にし、かつＴＣＶＣサーバの１つがダウンする場合にでさえ、遠隔ワークステーションの活動を可能にするために、複数のＴＣＶＣサーバは、中央サーバ１０８として構成されてもよい。要求するＴＣＶＣサーバは、入力としてクライアントリストを要求しているファイルリストの名前を送信する。ＴＣＶＣサーバアプリケーション２０８は、ＴＣＶＣサーバ２０２により登録されたすべてのクライアントのＩＰアドレスのリスト、および各ＴＣＶＣクライアントが最後にＴＣＶＣサーバ２０２とコンタクトした時刻を、応答として送信する。
【００３４】
ファイルリスト２１０は、マスタファイルリストと見なされ、遠隔ワークステーション上で存在する必要があり、ＴＣＶＣサーバ２０２上のマスタディレクトリ２１２内に存在する必要のあるファイルおよびディレクトリのリストを含んでいる。ＴＣＶＣサーバ２０２のためのマスタディレクトリ２１２は、マスタファイルリスト２１０を構成するファイルおよびディレクトリを含んでいる。ファイルリスト名は、ファイルリストを識別するためのキーである。
【００３５】
ＴＣＶＣサーバ２０２は、ファイルリスト２１０の一部であるファイルチャンクのＳＨＡ署名を含むファイルリストのＳＨＡ署名２１４を、ディスク上に保存する。ファイルチャンクを判定するために、ＴＣＶＣサーバ２０２は、マスタディレクトリ２１２からファイルチャンクサイズを含むファイルを読み込む。ファイルチャンクサイズ以下のすべてのファイルに関しては、ファイルチャンクはファイル全体を含む。
【００３６】
ＴＣＶＣサーバ２０２は、ファイルチャンクのためのＳＨＡ署名を生成する。ファイルチャンクサイズより大きなすべてのファイルについては、ＴＣＶＣサーバは、各ファイルを指定されたファイルチャンクサイズのチャンクに論理的に分割し、各ファイルチャンクのＳＨＡ署名を生成する。例えば、ファイルチャンクサイズが１０２４バイトであることが決定しており、ファイルリスト内のファイルが３０００バイトのサイズを有している場合、ＴＣＶＣサーバ２０２はファイルを３つのファイルチャンクに論理的に分割してもよい。すなわち、１バイト目からスタートするサイズ１０２４バイトの第１のチャンク、１０２５バイト目からスタートするサイズ１０２４バイトの第２のチャンク、および２０４９バイト目からスタートするサイズ９５２バイトの第３のチャンクである。
【００３７】
ファイルチャンクサイズは設定可能であり、サイズは中央サーバに結合されたクライアントプロセッサの数を考慮に入れる中央サーバに利用可能な推測された広域ネットワーク帯域幅およびそれらの結合帯域幅に依存する。
【００３８】
ＴＣＶＣサーバアプリケーション２０８は、クライアントがサーバとコンタクトした最終の時刻と同調してＴＣＶＣサーバアプリケーション２０８とコンタクトしたＴＣＶＣクライアントのＩＰアドレスを含む登録済みのクライアントノード２１６のリストを、ディスク上に保存する。このリストは、ダイナミックに生成され、クライアントがＴＣＶＣサーバ２０２へ「GetFileList」トランザクションを送信するごとに更新される。ＴＣＶＣサーバアプリケーション２０８は、要求するクライアントのピアをすべて判定するための「GetFileList」コール中にリスト２１６を用いる。また、それは「GetClientList」コールの一部としてリスト２１６を返す。このリスト内に保存されたＴＣＶＣクライアントは、もはやアクティブでないクライアントを考慮に入れるために老朽化する。例えば、ＴＣＶＣクライアントがＴＣＶＣサーバアプリケーション２０８とコンタクトした最終の時刻と現在時刻との間の期間が前もって定義した閾値より大きい場合、ＴＣＶＣクライアントは、無効であると見なされ、リストから外される。
【００３９】
ＴＣＶＣクライアントアプリケーション２２０、２４０のようなＴＣＶＣクライアントアプリケーションは、各遠隔ワークステーション上で実行され、ＴＣＶＣサーバ２０２のような１つ以上のＴＣＶＣサーバと通信するように構成される。例えば、ＴＣＶＣクライアントアプリケーション２２０は、ＴＣＶＣサーバ２０２からの遠隔ワークステーション上で用いられるファイルのリストを得る。ＴＣＶＣクライアントアプリケーション２２０、２４０は、「GetFileChunk」「CompareNotes」「QueueUpdate」のようなトランザクションをサポートする。
【００４０】
別のクライアントからファイルチャンクをダウンロードしたい場合、ＴＣＶＣクライアントアプリケーション２２０は、そのアップデート手続きの一部として、別のＴＣＶＣクライアントアプリケーション２４０に「GetFileChunk」トランザクションリクエストを送信する。ＴＣＶＣクライアントアプリケーション２２０は、それが要求しているファイルリストの名前、およびそれが要求しているファイルチャンクのＳＨＡ署名を送信する。クライアントによって要求されたファイルチャンクのＳＨＡ署名が、現在のクライアント上のいかなるファイルチャンクのＳＨＡ署名とも一致する場合、ＴＣＶＣクライアントアプリケーション２４０は、要求するクライアントにファイルチャンクを返す。クライアントによって要求されたファイルチャンクのＳＨＡ署名が、現在のクライアント上のどのファイルチャンクのＳＨＡ署名とも一致しない場合、別のＴＣＶＣクライアントは、エラーを返す。
【００４１】
例えば、ＴＣＶＣクライアント２２０上で作動する「CompareNotes」トランザクションは、どのファイルチャンクが既に存在するか、あるいは、サーバによってダウンロードされているか、もしくは別のＴＣＶＣクライアント（図示せず）から転送されているかを判定するために、ＴＣＶＣクライアント２４０のような第２の要求するＴＣＶＣクライアントによってコールされてもよい。要求するクライアント２４０は、トランザクションへの入力として、情報を望むファイルチャンク署名のリストを送信する。
【００４２】
ＴＣＶＣクライアント２２０は、ＴＣＶＣサーバアプリケーション２０８あるいは他の１つのＴＣＶＣクライアントから現在ダウンロードしている、そのファイルチャンク署名およびファイルに対するリストを比較する。ＴＣＶＣクライアント２２０は、既にディスク上に存在するリストからのファイルチャンク署名、およびＴＣＶＣサーバアプリケーション２０８あるいは別のクライアントから現在ダウンロードされているものを、要求するＴＣＶＣクライアント２４０に返す。
【００４３】
ダウンロードされている各ファイルチャンクについては、ＴＣＶＣクライアント２２０は、ダウンロードされることが完結する予定時刻（ＥＴＡ）、および「１」に設定することでファイルチャンクがＴＣＶＣサーバアプリケーション２０８からダウンロードされていることを示し、「０」に設定することでファイルチャンクが別のクライアントから転送されていることを示すサーバビットを、要求するＴＣＶＣクライアント２４０に返す。既にディスク上にある各ファイルチャンクについては、ＴＣＶＣクライアント２２０は、「０」のＥＴＡおよび「０」のサーバビットの設定の組み合わせを返す。
【００４４】
ワークステーションＴＣＶＣクライアント・アップデートの現在の状況を示すために、例えば、ＴＣＶＣクライアント２２０上で作動する「QueueUpdate」トランザクションは、ワークステーションユーザの状況要求に応じてコールされる。入力はこのトランザクションに必要ではなく、アイドル状態、サーバへのコンタクト、別のクライアントからのダウンロード、サーバからのダウンロード、スリープ状態、ポスト・ダウンロード・アップデートなどの実行のような、ＴＣＶＣクライアントの現在の状態を示すＨＴＭＬページを、出力として戻す。
【００４５】
ワークステーション２０４は、ファイルリスト２２２、ステージングディレクトリ（ＳＤＩＲ）２２４、プリスティンディレクトリ（ＰＤＩＲ）２２６、ライブディレクトリ（ＬＤＩＲ）２３０、アップデートプログラム２３２、ファイルチャンクサイズ、およびサーバアドレスを保存する。ファイルリスト２２２は、ＰＤＩＲ２２６内に存在するファイルおよびディレクトリを格納する。ファイルリスト２２２内には、他のファイルおよびディレクトリ中に含んでいるＴＣＶＣクライアントのためのコンフィギュレーションファイル（ファイルリストの名前）がある。ファイルリスト２２２は、ＴＣＶＣサーバ２０２上に存在するファイルリスト２１０に対応する。
【００４６】
プリスティンディレクトリ（ＰＤＩＲ）２２６は、例えば、ＴＣＶＣサーバ２０２上のファイルリスト２１０に対応して、ファイルリストを構成するテーマおよびディレクトリをすべて保持する。ＴＣＶＣクライアント２２０は、ＰＤＩＲ２２６内のファイルのファイルチャンクのためのＳＨＡ署名を生成し、ＳＨＡ署名のこのリストと、ダウンロードされるためにどのファイルチャンクを必要とするかを判定するための「GetFileList」コール上のＴＣＶＣサーバアプリケーション２０８によって返されたリストとを比較する。
【００４７】
ＰＤＩＲ２２６の中のファイルチャンクはまた、サーバおよび／または他のクライアントからファイルがダウンロードされるステージングディレクトリ（ＳＤＩＲ）２２４の初期のバージョンを生成するために用いられる。ＰＤＩＲ２２６がファイルリストの既知のバージョンを保持することを保証するために、ファイルは、ＰＤＩＲ２２６へ直接ダウンロードされない。ファイルチャンクがすべてステージングディレクトリ２２４にダウンロードされた場合、ファイルリストはステージングディレクトリ２２４から削除されてもよいし更新されてもよい。
【００４８】
ステージングディレクトリ（ＳＤＩＲ）２２４は、ＴＣＶＣサーバアプリケーション２０８および／または他のＴＣＶＣクライアント（例えばＴＣＶＣクライアント２４０）からダウンロードされるファイルおよびディレクトリをすべて保持する。ＳＤＩＲ２２４は、「GetFileList」コール中にＴＣＶＣサーバアプリケーション２０８によって返されるファイルチャンク署名と一致する署名のＰＤＩＲ２２６において、ファイルチャンクを用いて、最初に生成される。ＴＣＶＣクライアント２２０によってダウンロードされる他のいずれのファイルも、ステージングディレクトリ２２４内に保存される。ダウンロードされる必要のあるファイルチャンクが、すべて一旦ＳＤＩＲ２２４にダウンロードされたならば、プリスティンディレクトリ（ＰＤＩＲ）２２６は削除され、ＳＤＩＲ２２４のコンテンツは、新規のＰＤＩＲ２２６になるために移動される。
【００４９】
ＴＣＶＣクライアント２２０は、ＰＤＩＲ２２６内のファイルチャンクのＳＨＡ署名２２８を、ディスク上に保存する。ファイルチャンクは、ＴＣＶＣサーバ２０２内で用いられるような同様の方法で判定される。これらの署名は、ダウンロードされるためにファイルがどれを必要とするかを判定するための「GetFileList」コール中にＴＣＶＣサーバアプリケーション２０８によって返される署名と比較される。
【００５０】
ライブディレクトリ（ＬＤＩＲ）２３０は、ワークステーション２０４のためのファイルおよびディレクトリをすべて保持するワークステーションディスク上の位置にある。ワークステーション２０４上で作動する必要のある多くのプログラムは、ライブディレクトリ２３０からスタートする。一旦ファイルがすべてＴＣＶＣクライアント２２０によってダウンロードされたならば、ライブディレクトリ２３０から作動するいかなるプログラムも中断され更新される。
【００５１】
予定するファイルが一旦すべてダウンロードされたならば、アップデートプログラムファイル２３２は、更新処理中に実行されるプログラムを含んでいる。これらのアップデートプログラムは、それらがちょうど他のファイルのように更新されることを可能にするファイルリストの一部である。アップデートプログラムは、プリスティンディレクトリ２２６から実行される。
【００５２】
図３は、本発明の態様による、シンクライアントバージョン管理（ＴＣＶＣ）サーバの起動処理３００を図示している。図２からの機能要素は、以下の図における対応するステップで引用される。ステップ３０４で開始し、ＴＣＶＣサーバアプリケーション２０８は、そのコンフィギュレーションファイルを読み込む。ステップ３０６において、ＴＣＶＣサーバアプリケーション２０８はファイルリスト名、ライブディレクトリ、およびコンフィギュレーションファイルから得られた情報に基づいてファイルチャンクサイズを決定する。ファイルリスト２１０は、ライブディレクトリ下のファイルおよびサブディレクトリをすべて含んでいる。
【００５３】
ファイルチャンクサイズは、設定可能であり、平均ファイルサイズおよび割り当てられた広域ネットワーク帯域幅に基づく。ステップ３０８において、ＴＣＶＣサーバアプリケーション２０８は、ライブディレクトリ下の各ファイルを読み込む。ステップ３ｌ０において、ＴＣＶＣサーバアプリケーション２０８は、本明細書に参考文献として全体を援用するセキュアハッシュ標準の連邦情報処理規格（ＦＩＰＳ：Federal Information Processing Standard）刊行物１８０−１を満たすセキュアハッシュアルゴリズム（ＳＨＡ：Secure
Hash Algorithm）署名を算出する。ＳＨＡ署名も全ファイルリストのために決定される。
【００５４】
ステップ３１２において、ＴＣＶＣサーバアプリケーション２０８は、インターネットプロトコル（ＩＰ）アドレスのフォーマット内に格納された、登録済みのクライアントノード２１６のそのリストを読み込む。ステップ３１４において、ＴＣＶＣサーバアプリケーション２０８は、ワークステーション２０４のようなクライアントとＴＣＶＣサーバアプリケーション２０８との間の通信路のその端部に、サーバソケットを確立する。ステップ３１６において、ＴＣＶＣサーバアプリケーション２０８は、登記済みのクライアントからのハイパーテキスト転送プロトコル（ＨＴＴＰ）リクエストを処理する。
【００５５】
図４は、本発明の態様による、第１のクライアントリクエストに応答するための第１の応答サーバ処理４００を図示している。ステップ４０４において、「GetFileList」ハイパーテキスト転送プロトコル（ＨＴＴＰ）ポストリクエストが、ワークステーション２０４のような登記済みのクライアントから、ＴＣＶＣサーバアプリケーション２０８内に受信される。ステップ４０６において、クライアントのファイルリスト名、ＩＰアドレス、およびファイルリスト署名が、受信されたリクエストから読み込まれる。
【００５６】
ステップ４０８において、クライアントのファイルリスト署名が有効かどうかが判定される。ステップ４１０において、クライアントのファイルリスト署名が有効でないと判定される場合、リスト内の各ファイルチャンクおよび各ファイルチャンクの署名は、要求するクライアントに返される。クライアントが最新のファイルリストを有しておらずファイルの中で最新のレベルをダウンロードする必要があることを示すので、この判定はエラーとは見なされない。クライアントのリスト署名が有効であると判定される場合、警報解除信号が、ステップ４１２において、要求するクライアントに返される。
【００５７】
図５は、本発明の態様による、第２のクライアントリクエストに応答するための第２の応答サーバ処理５００を図示している。ステップ５０４において、「GetChunk」ＨＴＴＰポストリクエストが、ワークステーション２０４のような登録済みのクライアントから受信される。ステップ５０６において、クライアントのファイルリスト名およびチャンク署名が、受信されたリクエストから読み込まれる。ステップ５０８において、要求されたファイルチャンクが、ＴＣＶＣサーバの目録内に存在するかどうかが判定される。ステップ５１０において、要求されたファイルチャンクがＴＣＶＣサーバの目録において見つからない場合、問題が発見したことを示すエラーコードが報告される。ステップ５１２において、要求されたファイルチャンクは、要求するクライアントに返される。
【００５８】
図６は、本発明の態様による、第３のサーバリクエストに応答するための第３の応答サーバ処理６００を図示している。ステップ６０４において、「GetClientList」リクエストが、サーバクラスタ内のＴＣＶＣサーバの別の１つから受信される。ステップ６０６において、各クライアントが最後にサーバとコンタクトした時刻と同調して、すべての登録済みのクライアントのＩＰアドレスが、要求するＴＣＶＣサーバに返される。この情報は、すべてへのＴＣＶＣサーバのグループを、ロード・バランシングおよびフォールト・トレラントのセットアップで同じリストを保存することを可能にするために用いられる。
【００５９】
図７は、本発明の態様による、ＴＣＶＣクライアント起動処理７００を図示している。
ステップ７０４において、ＴＣＶＣクライアント２２０は、コンフィギュレーションファイルを読み込む。ステップ７０６において、ファイルリスト、ライブディレクトリ、ステージングディレクトリ、プリスティンディレクトリ（ＰＤ）、ファイルチャンクサイズ、およびサーバアドレスの名前が、コンフィギュレーションファイルにおいて読み込まれたデータから決定される。ステップ７０８において、ＴＣＶＣクライアント２２０は、ＴＣＶＣクライアント２２０とＴＣＶＣサーバ２０２との間の通信路のその端部に、サーバソケットを確立する。ステップ７１０において、ＴＣＶＣクライアント２２０は、他のＴＣＶＣクライアントからのＨＴＴＰリクエストを処理する。
【００６０】
図８Ａは、本発明の態様による、ＴＣＶＣクライアント更新処理８００のパートＡを図示している。ステップ８０４において、プリスティンディレクトリ（ＰＤＩＲ）がまだ存在しない場合、初期のプリスティンディレクトリ（ＰＤＩＲ）２２６が生成される。ステップ８０６において、ＰＤＩＲ２２６内の各ファイルが読み込まれる。ステップ８０８において、ＳＨＡ署名が、各ファイルの各チャンク、およびＰＤＩＲファイルリスト全体のために計算される。
【００６１】
ステップ８１０において、「GetFileList」ＨＴＴＰポストリクエストは、そのＰＤＩＲファイルリストおよびＳＨＡ署名を指定して、ＴＣＶＣサーバ２０２のような、クライアントの関連づけられたＴＣＶＣサーバへ送信される。ステップ８１２において、ピアのリスト、およびクライアント上で複製されるファイル署名の正統のリストを含むＴＣＶＣサーバ２０２からのレスポンスが受信される。
【００６２】
「正統なリスト」は、現在のサーバ上のすべてのファイルチャンクのリスト、ライブディレクトリに関するディスク上のそれらの位置、およびそれらのＳＨＡ署名である。ステップ８１４において、警報解除信号が受信されたかどうかが判定される。警報解除信号は、クライアントがサーバと同じファイルを有していて、それ以上アクションが必要でないことを示す。警報解除信号が受信されていない場合、処理はステップＡ８１６に移る。警報解除信号が受信されている場合、処理８００はステップＤ８１８に移る。
【００６３】
図８Ｂは、本発明の態様による、ＴＣＶＣクライアント更新処理８００のパートＢを図示している。処理８００のパートＢは、パートＡのステップ８１６から継続する。ステップ８２２において、ステージングディレクトリは、ステージングディレクトリ（ＳＤＩＲ）２２４のように、生成される。ステップ８２４において、あらゆる再使用されたチャンクが、ＰＤＩＲ２２６からＳＤＩＲ２２４にコピーされる。再使用されたチャンクは、受信されたサーバファイル署名簿から決定される。
【００６４】
ステップ８２６において、クライアントにそのチャンクがすべてあるかどうかが判定される。クライアントにそのチャンクがすべてあることが判定される場合、処理８００はパートＤのステップ８１８に移る。クライアントにそのチャンクがすべてあるとは限らないことが判定される場合、処理はステップ８３０に移る。ステップ８３０において、ＨＴＴＰポストは、「CompareNotes」トランザクションを要求し、現在必要とするチャンク署名のリスト内を通過する、各ピアのもとへ送信される。
【００６５】
ステップ８３２において、各ピア上に存在するファイルチャンクのリストが、要求するクライアント内から受信される。そのリストと同調して、ファイルチャンクが十分にダウンロードされる時のための到着予定時刻（ＥＴＡ：Estimated Time of Arrival）、およびチャンクがＴＣＶＣサーバからダウンロードされているか別のＴＣＶＣクライアントから転送されているかどうか示すビットがある。
【００６６】
ステップ８３４において、ＥＴＡがゼロであるチャンクはすべて、要求するクライアントに、例えば、ランダムな順序で、およびランダムなピア所有者から、ダウンロードされる。ピアからの転送のためのピアおよびファイルチャンクは、１つのピアが他のピアからリクエストを過度に負わせられる可能性を減少させるために、好ましくはアトランダムあるいは偽似乱数の方式が選ばれる。その後、処理８００は、パートＢのステップ８３６に移る。
【００６７】
図８Ｃは、本発明の態様による、ＴＣＶＣクライアント更新処理８００のパートＣを図示している。処理８００のパートＣは、パートＢのステップ８３６から続行する。ステップ８５２において、変数Ｄは、ＴＣＶＣサーバ２０２のような、クライアントの関連づけられたサーバから、現在ダウンロードされているチャンクの数を表現するように、計算される。すべてのＴＣＶＣクライアントは、ファイルへのアクセスのために、そのコンフィギュレーションファイル内に接続するための指定されたＴＣＶＣサーバを有している。
【００６８】
変数Ｄは、アップストリームの帯域幅を推測するために用いられる。ピアからダウンロードするファイルがこれ以上なく、次のファイルがＴＣＶＣサーバからダウンロードされる必要があることを示す、ＥＴＡ＝０のすべてのチャンクがすべてのピアからダウンロードされている場合、変数Ｄが計算される。ステップ８５４において、変数Ｄが、設定可能なダウンロード閾値より大きいかどうかが判定される。
【００６９】
ダウンロード閾値は、起動時に読み込まれるファイルリスト２２２内に含まれ、コンフィギュレーションファイル内で指定される。ダウンロード閾値は、クライアントからサーバへのネットワーク帯域幅に基づいて計算される。変数Ｄが、構成可能なダウンロード閾値より大きいと判定された場合、処理８００はステップ８６４に移る。変数Ｄが、構成可能なダウンロード閾値以下であると判定された場合、処理はステップ８５６に移る。
【００７０】
ステップ８５６において、存在しないチャンク、あるいはいかなるピア上でもダウンロードされないチャンクが選択される。ステップ８５８において、選択されたチャンクは、クライアントからのリクエストに際して、クライアントの関連づけられたサーバからダウンロードされる。この処理は、同じファイルチャンクがＴＣＶＣサーバから２度ダウンロードされるのを防ぐために、各クライアントによって追従される。ステップ８６０において、ダウンロードが成功したかどうかが判定される。
【００７１】
ダウンロードが成功した場合、処理８００は、図８ＢのパートＢのステップ８２６に戻すステップ８６２に移る。一旦ダウンロードが成功裡に終われば、ＴＣＶＣクライアントは、もう一度各ピアの「CompareNotes」をコールするステップ８２６に戻る。このステップは、サーバからファイルをダウンロードしている間、どの新規のファイルチャンクが他のピアによってダウンロードされたかを、これらのクライアントにさせる。ダウンロードが成功しなかった場合、処理はステップ８６４に移る。
【００７２】
ステップ８６４において、要求するクライアントは、最小限必要とされるチャンクＥＴＡの１１０％のスリープモードに置かれる。ファイルチャンクがダウンロードされるまで、他のアクションを行なうことができないので、クライアントは、スリープモードに置かれる。ＥＴＡの１１０％の値は、ダウンロードが完了した後、ピアがＳＨＡ署名の計算のようなあらゆる付加的処理を終了することを可能にするように計算される。
【００７３】
図８Ｄは、本発明の態様による、ＴＣＶＣクライアント更新処理８００のパートＤを図示している。処理８００のパートＤは、パートＡのステップ８１８から続行し、ステップ８８２から開始する。ステップ８８２において、プリスティンディレクトリ（ＰＤＩＲ）２２６は削除され、ステージングディレクトリ（ＳＤＩＲ）２２４のコンテンツは、新規のＰＤＩＲ２２６になるために移動される。ステージングディレクトリ２２４は、ステップ８２２において、まず生成される。それは、ステップ８２４におけるＰＤＩＲ２２６、およびステージングディレクトリ内に保存されるステップ８３４および８５８においてダウンロードされたいかなるファイルからのチャンクにより、更新される。
【００７４】
判定ステップ８８３において、プリスティンディレクトリ（ＰＤＩＲ）内のファイルは、ライブディレクトリ（ＬＤＩＲ）のファイルと比較される。ＰＤＩＲ内のファイルがＬＤＩＲ内のファイルと一致しない場合、処理８００はステップ８８４に移る。ステップ８８４において、リモートサイトクライアントは、ライブディレクトリの実行プログラムを中断する。ライブディレクトリは図７ステップ７０６内で紹介された。それはプログラムが実際に実行されるディレクトリである。ライブディレクトリのプログラムは、プログラムがＰＤＩＲからの、より新規のバージョンにより更新される必要があるかもしれないため、実行を止められてもよい。
【００７５】
ステップ８８６において、新規のＰＤＩＲは、あらゆる複製のファイルも交換するライブディレクトリにコピーされる。ステップ８８８において、クライアントの関連づけられたサーバによって指定されるようなライブディレクトリのいかなるファイルも削除するために、クリーンアップパスがなされる。中断されたプログラムは、ステップ８８８の一部として再開される。サーバは、ステップ８１２における初期のリクエストの一部として削除されるファイルのリストを送信する。これらのファイルは、もはや用いられないので、削除することができる。一旦クリーンアップパスが完結すれば、ステップ８８４において中断されたいかなるプログラムも再開されることに留意されたい。
【００７６】
判定ステップ８８３に戻って、プリスティンディレクトリ（ＰＤＩＲ）内のファイルが、ライブディレクトリ（ＬＤＩＲ）のファイルと比較される場合、照合判定に達することができる。ＰＤＩＲ内のファイルがＬＤＩＲ内のファイルと一致する場合、処理８００は、処理８００のこのステップが完了していることを示すステップ８９０に移る。
【００７７】
図９は、本発明の態様による、別のクライアントからの第１のリクエストに応答するための、第１のレスポンスクライアント処理９００を図示している。ステップ９０４において、「GetChunk」ＨＴＴＰリクエストが、別のクライアントから受信される。ステップ９０６において、チャンクの署名が、受信されたリクエストから読み込まれる。ステップ９０８において、要求されたチャンクがリクエストを受信するクライアント上に存在する場合、要求されたチャンクが返される。
【００７８】
図１０は、本発明の態様による、別のクライアントからの第２のリクエストに応答するための、第２のレスポンスクライアント処理１０００を図示している。ステップ１００４において、「CompareNotes」ＨＴＴＰリクエストが、別のクライアントから受信される。ステップ１００６において、ファイルチャンク署名のリストが、受信されたリクエストから読み込まれる。ステップ１００８において、存在する、あるいは、リクエストを受信するクライアントにダウンロードされるファイルチャンクのリストは、ＥＴＡと、サーバがチャンクをダウンロードしていることを示すビットとに同調して、要求するクライアントに返される。
【００７９】
図１１は、本発明の態様による、別のクライアントからの第３のリクエストに応答するための、第３のレスポンスクライアント処理１１００を図示している。ステップ１１０４において、「QueueUpdate」ＨＴＴＰリクエストが、別のクライアントから受信される。ステップ１１０６において、アップデートがクライアント上のキューに入れられる。ステップ１１０８において、アップデートの状況を示すハイパーテキストマークアップ言語（ＨＴＭＬ）ページが返される。
【００８０】
図１２は、本発明の態様による典型的な自動ソフトウェア配布システム１２００を図示している。典型的なソフトウェア配布システム１２００は、ＴＣＶＣサーバ１２０２、キオスク端末装置の第１のセット１２０４、キオスク端末装置の第２のセット１２０６、キオスク端末装置の第１のセット１２０４のサブセットであるキオスク端末装置の第２のセット１２０６、第１の結合回路網１２１０、および第２の結合回路網１２１２を含む。ＴＣＶＣサーバ１２０２は、図２のＴＣＶＣサーバ２０２と同様の方法で機能する。
【００８１】
キオスク端末装置１２０４の第１のセット内のキオスク端末装置の各々は、ＴＣＶＣサーバ１２０２への第１の結合回路網１２１０を通して結合パスを持つ。キオスク端末装置１２０４の第１のセットは、第２の結合回路網１２１２上で相互に連結されるキオスク端末装置１２１８〜１２２３から成る。各キオスク端末装置１２１８〜１２２３は、図２のワークステーション２０４と同様の方法で機能する。第１の結合回路網１２１０は、フレームリレー網、仮想プライベートネットワーク（ＶＰＮ）、インターネットなどのような、広域ネットワークであってもよい。第２の結合回路網１２１２は、ローカルのキオスク端末装置１２１８〜１２２３間のローカルの高速接続を提供するために、リモートサイトで作動するローカルエリアネットワークであってもよい。
【００８２】
ファイルセット１２３０は、４つのパーツ１２３２〜１２３５に分割される。図３〜図１１に記載されていた処理に従って、ファイルセット１２３０は、キオスク端末装置１２０６の第２のセットのキオスク端末装置１２１９〜１２２２の各々に配布される。配布は、例えば、第１の結合回路網１２０６を介して遂行される各ダウンロードするとともに、キオスク端末装置１２１９へパートＡ１２３２をダウンロードし、キオスク端末装置１２２０へパートＢ１２３３をダウンロードし、キオスク端末装置１２２１へパートＣ１２３４をダウンロードし、キオスク端末装置１２２２へパートＤ１２３５をダウンロードするクライアントキオスク端末装置のリクエストによって遂行される。
【００８３】
各キオスク端末装置１２１８〜１２２３がファイルセット１２３０の複製を持つまで、キオスク端末装置１２１８〜１２２３の各々は、それら自身の間の欠けているファイルを適切に転送する。例えば、キオスク端末装置１２２３はキオスク端末装置１２１９からパートＡ１２３２を受信し、キオスク端末装置１２２０からパートＢ１２３３を受信し、キオスク端末装置１２２１からパートＣ１２３４、およびキオスク端末装置１２２２からのパートＤ１２３５を受信する。すべてのファイル１２３２〜１２３５がソフトウェア配布プロセッサからダウンロードされるのを待機せず、転送が利用可能な場合、ファイルチャンク、パートＡ１２３２、パートＢ１２３３、パートＣ１２３４、およびパートＤ１２３５は、クライアントプロセッサ１２０６の第２のセットから転送されることができる。
【００８４】
サーバがＮクライアントを有しており、Ｍのファイルリストサイズをホストする場合（Ｍの５０％が新規あるいは変更データで、Ｍ／２データが各クライアントに送信される）、転送されたデータの平均値は（Ｍ×Ｎ）／２である。新規あるいは変更データであってもよいファイルセットからのデータのパーセンテージは、変わってもよい。
【００８５】
以下の議論において、Ｍは各クライアントに送信されるデータの正味量であると仮定される。Ｎ＝１０００のクライアントを有する典型的なシナリオおよびＭ＝１００Ｍバイト（１００ＭＢ）の各クライアントに送信されるファイルリストにおいて、広域ネットワークは５６のキロビット毎秒（ｋｂｐｓ）から１．５Ｍｂｐｓ以上までの範囲に応じてクライアントからクライアントまで変わるかもしれないと考慮する、大きい転送された量のデータは、（１００ＭＢ＊１０００）＝１００，０００ＭＢあるいは１００ＧＢになるであろう。本発明のＴＣＶＣアプローチを用いて、クライアントがローカルネットワークへ細分されると仮定して、広域ネットワーク（ＷＡＮ）データ転送は（Ｍ×Ｋ）に近似する（ここで、Ｋは厳密にＮ未満である）。
【００８６】
実際上、Ｋは、帯域幅において大幅な節約を可能にするＮと比べて比較的小さい。Ｋ＝５０のローカルネットワークが、１０００台のクライアントをサポートするために、現在の具体例に用いられる場合、各ローカルネットワーク当たり２０台のクライアントの配布により、ＷＡＮによって転送されたデータの量は、（１００ＭＢ×５０）＝５，０００ＭＢあるいは５ＧＢ（はるかにより扱いやすい数）である。５０個のローカルネットワーク上に５ＧＢを分配することによって、クライアント・ローカルネットワークへの所定のサーバも、具体例において、最小値Ｍあるいは１００ＭＢに近づく。１００ＭＢは各ローカルネットワーク内のファイルチャンクへ分割され、すべてあるいは２０台のクライアントのサブセットに配布される。
【００８７】
その後、１００ＭＢのファイルリストが各々のクライアント上で得られるまで、各ローカルネットワーク内の２０台のクライアントは、本発明に従って、欠けているファイルチャンクを交換してもよい。節約がメインサーバ接続中の重複データのより少ないコミュニケーションを必要とすることによる、技術はサーバとのコミュニケーションを最小限にする。
【００８８】
ここに開示された実施例に関して記述された方法は、ハードウェア、プロセッサによって実行されたソフトウェア、あるいは２つの組み合わせで、直接具現されることができる。ソフトウェアあるいはプログラムコードは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読み取り専用メモリ（ＲＯＭ）、電気的なプログラマブル読出専用メモリ（ＥＰＲＯＭ）、電気的な消去可能なプログラマブル読出専用メモリ（ＥＥＰＲＯＭ）、ハードディスク、リムーバブルディスク、コンパクトディスク読み取り専用メモリ（ＣＤＲＯＭ）、あるいは当該技術の既知の記憶メディアの他の形式の中に存在してもよい。プロセッサが情報を読み込むことができ、かつ記憶メディアに情報を書き出してもよいように、記憶メディアは、プロセッサに結合されてもよい。
【００８９】
本発明は目下好ましい文脈内に開示されているが、この開示と矛盾しない様々な文脈、および後続するクレームに現在の教示が適応してもよいことは認識されるだろう。本発明が、部門のローカルネットワークに内部のイントラネットワークを結合する業務システム、あるいはキオスク端末装置の使用が成熟し発展するようにアプリケーションをサポートした他のセルフサービスキオスク端末装置の広い多様性と同様に、家庭用ローカルネットワークに接続したインターネットにより使用されてもよいことは認識されるであろう。また、使われた特定のハードウェアおよび制御処理におけるバリエーションが実現可能であり、そして双方が時間とともにより発展するように期待されることは認識されるだろう。
【図面の簡単な説明】
【００９０】
【図１】本発明の１つの態様による集中型サーバシステムを示す。
【図２】本発明の１つの態様による、リモートクライアントに有利にソフトウェアを配布するための典型的なシンクライアントバージョン管理（ＴＣＶＣ）システムを示す。
【図３】本発明の態様によるＴＣＶＣサーバ起動処理を示す。
【図４】本発明の態様による、第１のクライアントリクエストに応答するための第１の応答サーバ処理を示す。
【図５】本発明の態様による、第２のクライアントリクエストに応答するための第２の応答サーバ処理を示す。
【図６】本発明の態様による、第３のクライアントリクエストに応答するための第３の応答サーバ処理を示す。
【図７】本発明の態様によるＴＣＶＣクライアント起動処理を示す。
【図８Ａ】本発明の態様による、ＴＣＶＣクライアント更新処理のパートＡを示す。
【図８Ｂ】本発明の態様による、ＴＣＶＣクライアント更新処理のパートＢを示す。
【図８Ｃ】本発明の態様による、ＴＣＶＣクライアント更新処理のパートＣを示す。
【図８Ｄ】本発明の態様による、ＴＣＶＣクライアント更新処理のパートＤを示す。
【図９】本発明の態様による、別のクライアントからの第１のリクエストに応答するための第１の応答クライアント処理を示す。
【図１０】本発明の態様による、別のクライアントからの第２のリクエストに応答するための第２の応答クライアント処理を示す。
【図１１】本発明の態様による、別のクライアントからの第３のリクエストに応答するための第３の応答クライアント処理を示す。
【図１２】本発明の態様による典型的な自動ソフトウェア配布システムを示す。
【図１】
2008159054.tif 000003
【図２】
2008159054.tif 000004
【図３】
2008159054.tif 000005
【図４】
2008159054.tif 000006
【図５】
2008159054.tif 000007
【図６】
2008159054.tif 000008
【図７】
2008159054.tif 000009
【図８Ａ】
2008159054.tif 000010
【図８Ｂ】
2008159054.tif 000011
【図８Ｃ】
2008159054.tif 000012
【図８Ｄ】
2008159054.tif 000013
【図９】
2008159054.tif 000014
【図１０】
2008159054.tif 000015
【図１１】
2008159054.tif 000016
【図１２】
2008159054.tif 000017