(57)【要約】      （修正有）【課題】アプリケーションプログラムキャッシングを提供する。【解決手段】クライアント計算装置１０２はアプリケーションプログラムの実行のリクエストを受けるとそれがキャッシュ済みのアプリケーションプログラムコンポーネントに関連するか否かを判定し、関連する場合はそのリクエストをそのキャッシュ済みのコンポーネントに導き、関連しない場合はそのリクエストをキャッシング計算装置１０４にパスする。キャッシング計算装置はそのリクエストが自身にキャッシュしているアプリケーションプログラムコンポーネントに関連するか否か判定し関連する場合はそのリクエストをそのキャッシュ済みのコンポーネントに導き、関連しない場合はそのリクエストをオリジナル計算装置１０８にパスする。【選択図】図１
2006092569.tif 000002
【特許請求の範囲】
【請求項１】
クライアント計算装置、キャッシング計算装置又はオリジナル計算装置のいずれかのプロセッサが、アプリケーションプログラムを実行する方法であって、
（ａ）前記クライアント計算装置のプロセッサが、オリジナル計算装置から受信したアプリケーションプログラムのうちキャッシュ可能なコンポーネントをキャッシュし、
（ｂ）前記クライアント計算装置のプロセッサが、当該アプリケーションプログラムのうちのコンポーネントを実行するためのリクエストを受信し、
（ｃ）当該リクエストが、既にキャッシュ済みの当該キャッシュ可能なアプリケーションプログラムコンポーネントに関連するか否かを前記クライアント計算装置のプロセッサが決定し、
（ｄ）前記クライアント計算装置における、当該リクエストが既にキャッシュ済みの当該コンポーネントに関連するという決定に応じて、前記クライアント計算装置のプロセッサが、当該リクエストを当該キャッシュ可能なアプリケーションプログラムコンポーネントに導き、
（ｅ）当該リクエストが既にキャッシュ済みの当該コンポーネントに関連しない場合には、前記クライアント計算装置のプロセッサが、当該リクエストをキャッシング計算装置にパスし、前記キャッシング計算装置において再度、前記クライアント計算装置を前記キャッシング計算装置に置き換えたステップ（ｂ）、（ｃ）、（ｄ）を実行し、さら当該リクエストが既にキャッシュ済みの当該コンポーネントに関連しない場合には、前記キャッシング計算装置のプロセッサが、当該リクエストを前記オリジナル計算装置にパスし、前記オリジナル計算装置のプロセッサが、当該リクエストをアプリケーションプログラムコンポーネントに導く
ステップを含むことを特徴とするアプリケーションプログラムを実行する方法。
【請求項２】
当該キャッシュ可能なアプリケーションプログラムコンポーネントが、キャッシュ可能なアプリケーションプログラム内の唯一のコンポーネントを構成し、その結果、当該キャッシュ可能なプログラムコンポーネントをキャッシュすることによって、当該キャッシュ可能なアプリケーションプログラムの全体がキャッシュされることを特徴とする請求項１に記載された方法。
【請求項３】
当該キャッシュ可能なアプリケーションプログラムコンポーネントをキャッシュするステップとして、
当該キャッシュ可能なアプリケーションプログラムコンポーネントのために、当該オリジナル計算装置から一つあるいはそれ以上のインストレーションファイルをダウンロードするステップと、
当該一つあるいはそれ以上のインストレーションファイルを利用することにより、当該キャッシュ可能なアプリケーションプログラムコンポーネントをキャッシング計算装置上にインストールするステップと
を含むことを特徴とする請求項１に記載された方法。
【請求項４】
（ａ）クライアント計算装置のプロセッサが、アプリケーションプログラムコンポーネントの実行リクエストを受信し、
（ｂ）当該リクエストが、オリジナル計算装置からキャッシュされたキャッシュ可能なアプリケーションプログラムコンポーネントに関連するか否かをクライアント計算装置のプロセッサが決定し、
（ｃ）当該リクエストが、既にキャッシュ済みの当該コンポーネントに関連するという決定に応じて、クライアント計算装置のプロセッサが、当該アプリケーションプログラムコンポーネントリクエストを当該キャッシュ可能なアプリケーションプログラムコンポーネントに導き、
（ｄ）当該リクエストが、既にキャッシュ済みの当該コンポーネントに関連しない場合には、クライアント計算装置のプロセッサが、当該リクエストをキャッシング計算装置にパスし、前記キャッシング計算装置において再度、前記クライアント計算装置を前記キャッシング計算装置に置き換えたステップ（ａ）、（ｂ）、（ｃ）を実行し、さら当該リクエストが既にキャッシュ済みの当該コンポーネントに関連しない場合には、前記キャッシング計算装置のプロセッサが、当該リクエストを前記オリジナル計算装置にパスし、前記オリジナル計算装置のプロセッサが、当該リクエストをアプリケーションプログラムコンポーネントに導く
ステップを含む方法を、前記クライアント計算装置、前記キャッシング計算装置又は前記オリジナル計算装置のいずれかのプロセッサによって実行させることによって実施させるための命令を格納したことを特徴とする計算装置により読み取り可能な媒体。
【請求項５】
当該キャッシュ可能なアプリケーションプログラムコンポーネントが、キャッシュ可能なアプリケーションプログラムを構成する唯一のコンポーネントであり、その結果、
当該キャッシュ可能なアプリケーションプログラムコンポーネントをキャッシュすることにより、当該キャッシュ可能なアプリケーションプログラム全体がキャッシュされている
ことを特徴とする請求項４に記載された媒体。
【請求項６】
クライアント計算装置であって、
独立したオリジナル計算装置から既にキャッシュ済みの、アプリケーションプログラムの、キャッシュ可能なアプリケーションプログラムコンポーネントと、
前記キャッシュ可能なアプリケーションプログラムコンポーネントの実行のリクエストを傍受し、当該キャッシュ可能なアプリケーションプログラムコンポーネントと関連する当該リクエストのいずれかを、当該キャッシュ可能なアプリケーションプログラムコンポーネントに導く、方位指示コンポーネントと、
少なくとも一つのプログラムの少なくとも一つのセクションを含む、各コンポーネントの少なくとも一部を記憶するメモリと、
メモリに記憶された前記少なくとも一つのプログラムの前記少なくとも一つのセクションを実行することが可能であり、少なくとも前記方位指示コンポーネントを実行するように構成された、少なくとも一つのプロセッサとを含み、
前記方位指示コンポーネントの機能によってさらに、当該リクエストが当該キャッシュ可能なアプリケーションプログラムコンポーネントに関連しない場合には、前記クライアント計算装置のプロセッサが、当該リクエストを、前記キャッシュ可能なアプリケーションプログラムコンポーネントと同様なコンポーネントと、前記方位指示コンポーネントと同様なコンポーネントと、前記メモリと同様な機能のメモリと、前記プロセッサと同様な機能のプロセッサとを有するキャッシング計算装置にパスすることを特徴とするクライアント計算装置。
【請求項７】
当該キャッシュ可能なアプリケーションプログラムコンポーネントが、キャッシュ可能なアプリケーションプログラムを構成する唯一のコンポーネントであり、その結果、当該キャッシュ可能なアプリケーションプログラム全体がキャッシュされることを特徴とする請求項６に記載された装置。
【請求項８】
当該方位指示コンポーネントが、
リクエストが、既にキャッシュ済みのキャッシュ可能なアプリケーションプログラムコンポーネントのいずれかに向けられた、アプリケーションプログラムコンポーネントリクエストを含むか否かを決定する、第１のハンドラと、
既にキャッシュ済みの当該アプリケーションプログラムコンポーネントのための第２のハンドラと、
当該リクエストが、既にキャッシュ済みのいずれかのキャッシュ可能なアプリケーションプログラムコンポーネントに向けた、アプリケーションプログラムリクエストを含むという、当該第１のハンドラによる決定に応じて、当該第１のハンドラから当該リクエストを受信し、当該リクエストが、既にキャッシュ済みの当該アプリケーションプログラムコンポーネントに関連するという決定に応じて、当該リクエストを当該第２のハンドラに導く、第３のハンドラを含むことを特徴とする請求項６に記載された装置。
【請求項９】
アプリケーションプログラムコンポーネントの使用量を監視するための、キャッシングコンポーネントを更に含むことを特徴とする請求項６に記載された装置。
【請求項１０】
当該キャッシングコンポーネントが更に、当該アプリケーションプログラムコンポーネントのいずれかの当該使用量が、キャッシングを正当化するために十分であるか否かを評価することを特徴とする請求項９に記載された装置。
【請求項１１】
当該キャッシングコンポーネントが更に、その使用量がキャッシングを正当化するだけ十分と評価された、いずれかの当該アプリケーションプログラムコンポーネントをキャッシュすることを特徴とする請求項１０に記載された装置。
【請求項１２】
当該キャッシングコンポーネントが当該オリジナル計算装置から一つあるいはそれ以上のインストレーションファイルをダウンロードすることによって、当該アプリケーションプログラムコンポーネントのいずれかをキャッシュすることを特徴とする請求項１１に記載された装置。
【請求項１３】
クライアント計算装置であって、
独立したオリジナル計算装置からキャッシュされた、キャッシュ可能なアプリケーションプログラムコンポーネントを含む第１のコンポーネントと、
当該オリジナル計算装置による実行の代わりに、当該アプリケーションプログラムコンポーネントへ当該アプリケーションプログラムコンポーネントと関連する実行のリクエストを転送する第２のコンポーネントと、
少なくとも一つのプログラムの少なくとも一つのセクションを含む、各コンポーネントの少なくとも一部を記憶するメモリと、
メモリに記憶された前記少なくとも一つのプログラムの前記少なくとも一つのセクションを実行することが可能であり、少なくとも前記第２のコンポーネントを実行するように構成された、少なくとも一つのプロセッサとを含み、
当該実行のリクエストが当該アプリケーションプログラムコンポーネントに関連しない場合には、前記クライアント計算装置のプロセッサが、当該実行のリクエストを、前記第１のコンポーネントと同様なコンポーネントと、前記第２のコンポーネントと同様なコンポーネントと、前記メモリと同様な機能のメモリと、前記プロセッサと同様な機能のプロセッサとを有するキャッシング計算装置にパスすることを特徴とするクライアント計算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、クライアントの計算装置のためのオリジナル計算装置によって実行されるアプリケーションプログラムに関連し、更に詳しくは、オリジナル装置からダウンロードされ、キャッシュされ、クライアント計算装置のために、クライアント装置及び/又はキャッシング計算装置によって実行されるプログラムに関連する。
【背景技術】
【０００２】
伝統的に、アプリケーションプログラムはクライアント計算装置によってローカルに実行されてきた。これらのプログラムには、ワードプロセッサ用のプログラム，会計用プログラム，個人情報管理（personal information management programs:PIM）及び他の種類のプログラムのような多くの種類のコンシューマとビジネス関連のプログラムを含む。ローカルにプログラムを実行することの利点の一つは、プログラムがクライアント計算装置のハードウェアの許す限り速く走ることであったし、現在も,今後もそうである。
【０００３】
インターネットのようなネットワークを通じてのネットワークコンピューティングの普及とともに、クライアント計算装置のために、他の計算装置によって実行されるアプリケーションプログラムにより多くの注意が払われるようになってきている。例えば、アプリケーションサービスプロバイダ（ＡＳＰ）は、ＡＳＰのサーバによって、購読クライアントのためにアプリケーションプログラムが実行される購読サービスを提供することもできる。購読クライアントはインターネットを通じてプログラムを利用する。入出力は一般的にクライアント側でなされる一方、プログラムの実行は通常サーバで行われる。
【０００４】
このモデルにはいくつかの利点がある。例えば、適切な情報技術（ＩＴ）部門を持たないかもしれぬ中小企業は、代わりに彼らのアプリケーションプログラムのニーズの一部あるいは全部を効果的にＡＳＰにアウトソーシングできる。つまり、企業はプログラムの保守や更新に心配しなくて済むことを意味する。その代わりに、ほとんど全てがＡＳＰによって処理される。その上、プログラムライセンスに対価を支払う代わりに、企業はその望みどおり定期購読ベースで支払いを行うことができる。
【０００５】
クライアント計算装置のために、他の計算装置によってアプリケーションプログラムを実行することには欠点も存在する。その一つは、クライアント計算装置自身によって実行された場合に比べて、プログラムが走るのが遅いことである。この理由は、アプリケーションプログラムをホストする計算装置は数多くのクライアントの計算装置の数多くの状態のプログラムを走らせなければならない場合があるからである。例えもし、アプリケーションプログラムをホストする計算装置が十分にこの負荷を処理できるとしても、ネットワークの待ち時間がプログラムの動作スピードに影響を与えることがある。最速のインターネット接続であっても、その速度は、一般的に未だコンピュータが走る内部速度より遅い。インターネット内の輻輳もまた、クライアント計算装置が、他の計算装置によって実行されるアプリケーションプログラムと対話する速度に影響を与えることがある。これらの理由及びその他の理由により、本発明が必要とされる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のシステムには上述したような種々の問題があり、さらなる改善が望まれている。
【０００７】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、アプリケーションプログラムキャッシングを提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、クライアント計算装置あるいはキャッシング計算装置によるアプリケーションプログラムのキャッシングと実行を提供する。本発明に従って、アプリケーションプログラム全体がキャッシュされ、あるいは、アプリケーションプログラムの一部のみがキャッシュされうる。アプリケーションプログラムをキャッシュするために、クライアント計算装置，キャッシング計算装置あるいはその双方が用いられる。これらの装置がオリジナル計算装置からのアプリケーションプログラムをキャッシュする。アプリケーションプログラムあるいはその一部分がクライアント計算装置にてキャッシュされる場所で、クライアント計算装置は、自分自身のために、キャッシュ済みのアプリケーションプログラムあるいはその一部のキャッシュ済み部分を実行する。もし、アプリケーションプログラムあるいはその一部がキャッシング装置においてキャッシュされるなら、キャッシング計算装置が、クライアント計算装置のために、キャッシュ済みのアプリケーションプログラム全体あるいはアプリケーションプログラム中のキャッシュ済みの部分を実行する。アプリケーションプログラムの一部はオリジナル計算装置にもまた存在することがあり、このオリジナル計算装置もまたクライアント計算装置のためにアプリケーションプログラムの当該一部を実行する。
【０００９】
本発明に従って、クライアント計算装置は、アプリケーションプログラムがクライアント計算装置のために、オリジナル計算装置によって実行されるようにリクエストを発生する。もしクライアント計算装置がアプリケーションプログラムをキャッシュするだけの容量を持つのであれば、クライアント計算装置は、当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連するか否かを決定するために、当該リクエストを傍受し、調査する。もし当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連するのであれば、その後、当該リクエストは、クライアント計算装置自身による実行のために、キャッシュ済みのアプリケーションプログラムに転送される。もし当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連しないのであれば、クライアント計算装置は、当該リクエストをキャッシング計算装置あるいはオリジナル計算装置に渡す。
【００１０】
もし、アプリケーションキャッシング容量を持つキャッシング計算装置が存するのであれば、当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連するか否かを決定するために、当該キャッシング計算装置はクライアント計算装置によって当該キャッシング計算装置に転送されたリクエストを傍受し、調査する。もし、もし当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連するのであれば、その後、当該リクエストは、クライアント計算装置のためのキャッシング計算装置による実行のために、キャッシュ済みのアプリケーションプログラムに転送される。もし当該リクエストが既にキャッシュしたどれかのアプリケーションプログラムと関連しないのであれば、キャッシング計算装置は、当該リクエストをオリジナル計算装置に渡し、当該オリジナル計算装置はクライアント計算装置のために、リクエストされたアプリケーションプログラムを実行することにより当該リクエストを履行する。
【００１１】
アプリケーションキャッシングはコンテントキャッシングとは異なる。コンテントキャッシングは、オリジナル記憶位置よりもクライアント計算装置に近い位置へのデータ記憶に制限される。クライアント計算装置がコンテントへのアクセスを希望するとき、当該クライアント計算装置は結局、より近い位置からコンテントを受信する。これは恐らく、より遠い位置からコンテントを受信する場合に比べ、より高速である。コンテントキャッシングは比較的単純なプロセスである。コンテントを記憶している計算装置は実際には何も実行しない。当該計算装置は、コンテントをクライアント計算装置に与えるためのみに存在する一方、クライアント計算装置自身はコンテントのいくつかを全面的に実行することがある。
【００１２】
逆にアプリケーションキャッシングには、キャッシング計算装置上への少なくともアプリケーションプログラムの一部のダウンロードとインストールを含む。キャッシング計算装置は、オリジナル計算装置と互換性がある。コンフィギュレーションパラメータは、どのようにプログラムをインストールするかを決定するために、キャッシング計算装置によってダウンロード及び解釈される。コンテントをクライアント計算装置に提供するだけのコンテントキャッシング計算装置と異なり、アプリケーションキャッシング計算装置は、クライアント計算装置のために少なくともアプリケーションプログラムの一部を実行する。一般的に、コンテントキャッシング計算装置によっては、データの実行はなされない。
【００１３】
本発明は、コンピュータにより実行される方法，機械により読み取り可能な媒体，コンピュータ化されたシステム，そして様々な能力のコンピュータを含む。ここに説明される以外の、本発明の他の態様，実施例，及び利点は、詳細な説明を読むことにより、及び図面を参酌することにより明らかになるであろう。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本発明を適用できる実施形態を詳細に説明する。
【００１５】
以下の本発明の実施例の詳細な説明においては、当該詳細な説明の一部分をなす添付図面への参照がなされ、当該図面中では図解によって、本発明が実施されうる特定の実施例が示される。これらの実施例は、本発明を当業者が実施できるために十分に詳細に記述される。他の実施例も利用することができ、そして本発明の意図及び範囲を逸脱せずに論理的，機械的，電気的，及び他の変更がなされ得る。それゆえ、以下の詳細な説明は限定的に捉えられるべきではなく、本発明の範囲は添付される特許請求の範囲によってのみ規定される。
【００１６】
発明の概要
図１の線図100は本発明の好ましい実施例の基本的構成を図示する。クライアント計算装置102が通信状態で、第１のネットワーク106を通じてキャッシング計算装置104に接続される。キャッシング計算装置104は通信状態で、第２のネットワークを通じてオリジナル計算装置108に接続される。102、104、及び108の各計算装置は、デスクトップあるいはラップトップコンピュータのようなコンピュータでありうる。各装置102、104、及び108として、一つ以上の装置が存在しうる。
明確に図解する目的のために、図１には各装置としては一つずつのみが示されている。キャッシュ可能なアプリケーションプログラムは初めに、オリジナル計算装置108上にのみインストールされる。アプリケーションプログラムは、ビジネスあるいはコンシューマ関連のいかなるタイプのアプリケーションプログラムでありうる。アプリケーションプログラムの例としては、ワードプロセッサプログラム，スプレッドシートプログラム，通信プログラム，及び他の種類のプログラムを含む。キャッシング計算装置104は、全てのあるいは一部分のキャッシュ可能なアプリケーションプログラムをキャッシュし終わっており、クライアント計算装置102のために、アプリケーションプログラム中のキャッシュ済みの部分を実行する。もし、キャッシング計算装置104によってアプリケーションプログラムの一部がキャッシュされておらず、オリジナル計算装置に残存するならば、当該オリジナル計算装置108がクライアント計算装置102のために、当該プログラムの当該部分を実行する。クライアント計算装置102もまた、自分自身のためにアプリケーションプログラムの一部をキャッシュし実行することができる。
【００１７】
アプリケーションプログラムは、クライアント計算装置102，キャッシング計算装置104，あるいはオリジナル計算デバイス108の各装置の特性に従って、当該各装置の一つあるいは全ての装置によって実行される異なる部分に分割されうる。プログラムのグラフィカル・ユーザ・インターフェース面はクライアント計算装置102によってキャッシュされ直接実行されうる。プログラムの大部分を占める、非グラフィカル・ユーザ・インターフェース面はクライアント計算装置102のためにキャッシング計算装置104によってキャッシュされ実行される。オリジナル計算装置108はクライアント計算装置のために、アプリケーションプログラムのうちめったに使用されない面のみを実行しうる。
【００１８】
第１のネットワーク106と第２のネットワーク110は異なるネットワークあるいは同じネットワークでありうる。ネットワークの例としては、ローカルエリアネットワーク（ＬＡＮ’ｓ），広域ネットワーク（ＷＡＮ’ｓ）イントラネット，エクストラネット，インターネット，構内ネットワーク，遠隔ネットワーク，及び他の種類のネットワークを含む。図２は、図１の構成の特定の実施例である線図200を示す。図１のネットワーク106は、参照番号206で示される図２の構内ネットワークである。そして、図１のネットワーク110は参照番号210で示される遠隔ネットワークである。構内ネットワーク206と遠隔ネットワーク210では主として、それらが接続される装置間の距離が異なる。遠隔ネットワーク210を通じて接続されるオリジナル計算装置108とキャッシング計算装置104と比較すると、クライアント計算装置102とキャッシング装置104は構内ネットワークを通じて接続されるために、物理的により近接している。
【００１９】
好ましくは、クライアント計算装置102のためにキャッシング計算装置104によってキャッシュされ実行されるアプリケーションプログラムのうちキャッシュされた部分は、オリジナル計算装置108によって実行されるいかなる非キャッシュ部分よりも、装置104を基点として、より速く走る。これにはいくつかの理由が考えられる。第１に、キャッシング計算装置104は、オリジナル計算装置108が行う程多くのクライアントのためにアプリケーションプログラムを実行する必要が無いかもしれない。第２に、構内ネットワーク206は遠隔ネットワーク210よりも高速のネットワークであるかもしれない。更に、構内ネットワーク206は遠隔ネットワーク210より輻輳していないかもしれない。しかし、クライアント計算装置102自身によってキャッシュされ実行されるアプリケーションプログラムのいかなる部分も、キャッシング計算装置104によってキャッシュされ実行される場合あるいはオリジナル計算装置108によって実行される場合に比べて、より高速に走るかもしれない。
【００２０】
図１に話を戻すと、第１のネットワーク106と第２のネットワーク110は同じネットワークでありうる。図３は、図１のネットワーク106とネットワーク110が同じネットワーク308である実施例たる線図300を示す。例えば、ネットワーク308はインターネットを含みうるし、インターネット自身でありうる。曲線の距離表示用の矢304によって示されるように、オリジナル計算装置108はキャッシング計算装置104からの距離に比べて、クライアント計算装置102から物理的により遠くに位置する。例えば、クライアント計算装置102はシアトルに、キャッシング計算装置104はシカゴに、そしてオリジナル計算装置108はロンドンに位置しうる。その結果、クライアント計算装置102のためにキャッシング計算装置104によって実行されるアプリケーションプログラムのキャッシュされた部分は、一般的にオリジナル計算装置108によって実行される部分より速く走る。クライアント計算装置102自身によってキャッシュされ実行されるいかなる部分も、やはりより速く走る。
【００２１】
図１，２，及び３を参照して説明されてきたように、本発明はアプリケーションプログラムの全体あるいは一部をクライアント計算装置102及び/又はキャッシング計算装置104によってキャッシュすることに関連する。装置102のために、装置104はプログラムのうち当該装置104でキャッシュされた部分を実行し、装置102は自分自身のために、自分でキャッシュした部分を実行する。アプリケーションプログラムは、クライアント計算装置102のために各部分が装置102，104あるいは108によって実行される、異なる部分に分割されうる。
【００２２】
詳細な説明中の次の節では、もともとクライアント計算装置102のためにオリジナル計算装置108によって実行されることが予定されていたアプリケーションプログラムが、その代わりに、いかに装置102あるいはキャッシング計算装置104によって実行されるかを説明する。他の節では、いかにプログラムがオリジナル計算装置108からダウンロードされ、キャッシング計算装置104あるいはクライアント計算装置102によってインストールされるかを詳細に説明する。装置102，104及び108のいずれかの装置を実施しうる計算装置の例もまた詳細な説明中の次の節で説明されている。
【００２３】
キャッシュ可能なプログラムの、キャッシング計算装置あるいはクライアント計算装置による実行  
図４は図１のキャッシング計算装置104の実施例をより詳細に示した図である。線402に示されるように、キャッシング計算装置104は通信状態でクライアント計算装置に接続され、線404に示されるように、オリジナル計算装置に接続される。キャッシング計算装置104は第１のコンポーネント406，第２のコンポーネント408，そしてキャッシュ済みのアプリケーション410を含む。第１のコンポーネント406と第２のコンポーネント408はそれぞれ、プラグイン及びサービスと呼ばれることがある。これらは単一のコンポーネント内に装備されうる。このアプリケーションで用いられるコンポーネントは、コンピュータ命令，コンピュータプログラムモジュール，コンピュータプログラム及びソフトウェアオブジェクトの一つあるいはそれ以上のセクションを意味する。
【００２４】
第１のコンポーネント406はアプリケーションプログラムに向けられた、クライアント計算装置からのリクエストを傍受する。第１のコンポーネント406は、与えられたリクエストがキャッシュ済みのアプリケーション410内でキャッシュされたアップリケーションの一部に関連するか否かを決定する。もし、関連するのであれば、コンポーネント406は当該リクエストをキャッシュされたアップリケーション410内の関連するアプリケーションに転送する。このようにしてオリジナル計算装置ではなく、キャッシング計算装置104で実行が行われる。与えられたリクエストがキャッシュ済みのアプリケーション410内でキャッシュされたアプリケーションの一部に関連しない場合には、コンポーネント406はリクエストをオリジナル計算装置へ通過させる。
【００２５】
図５は一つの実施例で特に装置500が、いかにアプリケーションプログラムリクエストを、傍受し，転送し，そして通過させるかを示す図である。装置500は図１及び図４のキャッシング計算装置104でありうる。装置500のアプリケーションプロトコルハンドラ502はアプリケーションプログラムリクエストを傍受する。プロトコルはリクエストの形式を指定する。リクエストは“rapp://www.aspco.com/program/directory/request.ext.”の形式でありうる。“rapp”なるインジケータは、リクエストが“遠隔アップリケーションプログラムプロトコル（remote application program protocol）”のような特定のプロトコルと関連することを指定するために用いられる。“www.aspco.com”なるドメイン名は、インターネット上におけるようなリソース位置を指定する。インジケータ“program/”と“directory/”はこの位置における特定のディレクトリを指定する。ここで“program/”は現時点でアクセスされているプログラムを識別するために特に用いられる。“request.ext.”と表示されるように、リクエストはこの位置のファイルに対してなされる。
【００２６】
アプリケーションプロトコルハンドラ502はクライアント計算装置からの全てのネットワークトラッフィックを調べる。もしトラッフィックの項目が“rapp:”なるインジケータの後に来るのであれば、ハンドラ502は、リクエストによって特定されるプログラムが、装置500上で既にキャッシュされたプログラムに関連するか否かを更に決定する。もし関連しなければ、矢印503に示されるように、ハンドラ502はリクエストを通過させる。もし関連すれば、ハンドラ502はリクエストをローカルネーム解決ハンドラ504に通過させる。
【００２７】
ローカルネーム解決ハンドラ504はアプリケーションプログラムリクエストを適切なキャッシュ済みのアプリケーションに転送する。ハンドラ504は、ローカルアプリケーションハンドラ506ａ，506ｂ，・・・，506ｎの中からプログラムのために特定のハンドラをポイントするように、リクエストを修正する。“rapp://www.aspco.com/wordprocessing/request.ext.”がリクエストの例である。もし、ローカルアプリケーションハンドラ506ｂがこのリクエストで指示されたアプリケーションに対応するならば、ハンドラ504はローカルアプリケーションハンドラ506ｂをポイントするようにリクエストを修正する。ローカルアップリケーションハンドラ506ｂは“c:/wordprocessing/”によって識別されうる。“ｃ”は、例えばハードディスクドライブのような、装置500内の物理的な位置を意味し、“wordprocessing/”はこの物理的な位置におけるディレクトリを意味する。ハンドラ504はリクエストを“c:/wordprocessing/request.ext”に修正し、ハンドラ506ｂがキャッシュされたアプリケーションのためにリクエストを処理する。
【００２８】
以上説明してきたように、必ずしもアプリケーション全体がキャッシュされる必要は無い。むしろ、アプリケーションの一つあるいはそれ以上の部分のみがキャッシュされうる。この場合、各アプリケーション部分は、ハンドラ506ａ，506ｂ，・・，506ｎ内の自分自身のローカルアプリケーションハンドラを持つかもしれない。アプリケーションプログラムリクエストはこのように、アプリケーションプログラムコンポーネントリクエストとして、より正確に記述される。ここで、各アプリケーションコンポーネントは装置500上で独自にキャッシュされうる。与えられたアプリケーションプログラムは、一つのコンポーネントのみからなるかもしれないし、複数のコンポーネントからなるかもしれない。一つのコンポーネントのみがアプリケーションプログラムを構成する場合には、プログラム全体がキャッシュされるか、あるいはプログラムは全くキャッシュされないかのいずれかである。複数のコンポーネントがアプリケーションプログラムを構成する場合には、コンポーネントのいずれもがキャッシュされうる。
【００２９】
図４に話を戻すと、好ましくはクライアント計算装置は、実行が、オリジナル計算装置の代わりにキャッシング計算装置104で行われるかもしれないことを認識しない。キャッシング計算装置104によって行われる転送及びキャッシングはクライアント計算装置には見えないことが好ましい。このことは、クライアント計算装置は、キャッシング計算装置104による実行を可能にするために再構成させられる必要は無いことを意味する。
【００３０】
第２のコンポーネント408は、キャッシュ済みのアプリケーション410内でキャッシュされていないアプリケーションプログラムが、ダウンロードされ、キャッシング計算装置104にインストールされるべきか否かを決定する。コンポーネント408は、オリジナル計算装置によって実行されるアプリケーションプログラムのクライアントによる使用量を常に監視する。コンポーネント408は、クライアント計算装置による使用量が、キャッシング計算装置104による実行のためにアプリケーションプログラムをキャッシュすることを正当化するに足るだけ十分であるかどうかを周期的に評価する。コンポーネント408は、プログラムの一部あるいは全てをキャッシュ済みのアプリケーション410にダウンロードし、インストールすることができる。プログラムがキャッシング計算装置104によってキャッシュされるべきか否かを決定するために、いかなる基準を用いることもできる。
【００３１】
クライアント計算装置は同様に、キャッシュ済みのアプリケーションプログラムあるいはその一部をキャッシュし実行することができる。図６は図1のクライアント計算装置102の実施例をより詳細に示す図である。クライアント計算装置102は、線604で示されるように、キャッシング計算装置及び/又はオリジナル計算装置に通信状態で接続される。図４のキャッシング計算装置104と同様に、図６のクライアント計算装置102は、第１のコンポーネント606，第２のコンポーネント608，及びキャッシュ済みのアプリケーション610を含む。第１のコンポーネント606及び第２のコンポーネント608はそれぞれ、プラグイン，サービスと呼ばれることがあり、単一のコンポーネント内に装備されうる。
【００３２】
第１のコンポーネント606はクライアント計算装置102からアプリケーションプログラムに向けられた内部リクエストを傍受する。第１のコンポーネント606は、与えられたリクエストがキャッシュ済みのアプリケーション610内でキャッシュされたアプリケーションの一部分と関連するか否かを決定する。もし関連するならば、コンポーネント606はリクエストを、キャッシュ済みのアプリケーション610内の関連するアプリケーションの部分に転送する。実行はこのように、オリジナル計算装置あるいはキャッシング計算装置のいずれにおいてでもなく、クライアント計算装置102で行われる。もし与えられたリクエストがキャッシュ済みのアプリケーション610内のキャッシュされたアプリケーションの部分と関係しないのであれば、コンポーネント606はリクエストを、キャッシング計算装置
あるいはオリジナル計算装置に通過させる。クライアント計算装置102はまた、図５の装置500が装置102でありうることを説明する図を参照して既に説明されたように、アプリケーションプログラムリクエストを傍受，転送，及び通過させることができる。
【００３３】
依然として図６を参照すると、第２のコンポーネント608はキャッシュ済みのアプリケーション610内でキャッシュされていないアプリケーションプログラムがダウンロードされクライアント計算装置102にインストールされるべきか否かを決定する。好ましくは、コンポーネント608は、装置102のためにオリジナル計算装置あるいはキャッシング計算装置のいずれかによって実行される、クライアント計算装置102によるアプリケーションプログラムの使用量を監視する。
コンポーネント608はその使用量が、クライアント計算装置102による実行のために、アプリケーションプログラムの一部あるいはその全体をキャッシュすることを正当化するに足るだけ十分であるかどうかを周期的に評価する。この決定を行うために、ある基準が用いられることがある。アプリケーションプログラムあるいはその一部がクライアント計算装置102でキャッシュされるべきと決定されたときは、コンポーネント608はプログラムあるいはその一部をダウンロードし、キャッシュ済みアプリケーション610にインストールする。
【００３４】
図７は、いかにクライアント計算装置，キャッシング計算装置，及びオリジナル計算装置がアプリケーションプログラムリクエストを処理するかを概説する、方法700のフローチャートである。アプリケーションプログラムは、最初はオリジナル計算装置上にのみインストールされる。プログラムの一部分あるいはその全体は、その後クライアント計算装置及び/又はキャッシング計算装置によってキャッシュされうる。破線702及び704で示されるように、方法700のいくつかの部分はクライアント計算装置によって実施され、いくつかの部分はキャッシング計算装置によって実施され、そしていくつかの部分はオリジナル計算装置によって実施される。特に、706，708，710，及び712はクライアント計算装置によって実施され、714，716，718，及び720はキャッシング計算装置によって実施され、そして722はオリジナル計算装置によって実施される。
【００３５】
706では、クライアント計算装置はアプリケーションプログラムへの内部生成リクエストを傍受する。708でクライアント計算装置は、当該リクエストがクライアント装置によってキャッシュされたアプリケーションプログラムの一部分と関連するか否かを決定する。もし関連するのであれば、当該リクエストがクライアント計算装置によって処理されるように、当該リクエストは710で転送される。当該リクエストが関連するアプリケーションプログラムの一部は、クライアント計算装置によって実行される。もし当該リクエストがキャッシュ済みのアプリケーションと関連しなければ、クライアント計算装置は712で当該リクエストを通過させる。
【００３６】
714では、キャッシング計算装置は712でクライアント計算装置によって通過させられたリクエストを傍受する。716で、キャッシング計算装置は当該リクエストがキャッシング装置によってキャッシュ済みのアプリケーションの一部と関連するか否かを決定する。もし関連するのであれば、当該リクエストがキャッシング計算装置によって処理されるように、当該リクエストは718で転送される。当該リクエストが関連するアプリケーションプログラムの一部は、クライアント計算装置のためにキャッシング計算装置によって実行される。もし当該要求がキャッシュ済みのアプリケーションの一部に関連しないならば、キャッシング計算装置は720で当該リクエストを通過させる。オリジナル計算装置は722で当該リクエストを受信し、当該要求を処理する。当該リクエストが関連するアプリケーションプログラムの一部はオリジナル装置あるいはクライアント装置によって実行される。
【００３７】
図８は、アプリケーションプログラムの一部あるいはその全体がキャッシュされるべきか否かをいかに決定するかを概説する、方法800のフローチャートである。キャッシング計算装置は、自分が少なくともプログラムの一部をキャッシュすべきか否かを決定するために方法800を実施できる。
【００３８】
同様に、クライアント計算装置は方法800を実施できる。802では、当該方法はアプリケーションプログラムの使用量を監視する。好ましくは、使用量の監視は継続的に行われる。周期的に、当該方法は804において、アプリケーションプログラムの少なくとも一部が基準に従ってキャッシュされるべきか否かを決定する。もしキャッシュされるべきでなければ、当該方法は808で完了する。キャッシュされるべきであれば、806において、当該方法は少なくともプログラムの一部をキャッシュする。詳細な説明における次の節では、キャッシュ可能なアプリケーションプログラムがどのようにキャッシュされるかを説明する。
【００３９】
キャッシュ可能なアプリケーションプログラムのキャッシング（ダウンローディングとインストーリング）  図９は一つの実施例がいかにキャッシュ可能なアプリケーションプログラムをダウンロードし、インストールするかを示す、方法900のフローチャートである。方法900は、図４のキャッシング計算装置104の第２のコンポーネント408によって、あるいは、図６のクライアント計算装置102の第２のコンポーネント608によって実施される。これらのコンポーネントは、アプリケーションプログラムがキャッシュされるべきと決定した後に、方法900を実施する。方法900のキャッシングプロセスは、プロセス内のいかなるポイントでも失敗しうる。失敗した場合には、その後方法900はアプリケーションプログラムをうまくキャッシュできない状態で存在する（この状態は特に図９では取り上げられていない。）
この節での説明は、別々のアプリケーションプログラムコンポーネントに区分されていないアプリケーションプログラム全体をダウンロードし、インストールする場合に焦点を当てる。この節での説明はまた、アプリケーションプログラム全体ではなくアプリケーションプログラムのコンポーネントに関連する方法900を実施することにより、当該コンポーネントをキャッシュする場合にも適用できる。キャッシュ可能なアプリケーションプログラムあるいはその一部は、本節で説明されるようにダウンロードされ、インストールされうるものである。
【００４０】
902では、本方法はアプリケーションプログラムのために、オリジナル遠隔地から、オリジナル計算装置にプリインストールされたファイルを取り出す。プリインストールされたファイルはまた、マニフェストとも呼ばれる。マニフェストには、プログラムがうまくキャッシュされるために必要なコンフィギュレーション及び他の情報が含まれている。ダウンロードされインストールされるべきプログラムのために、マニフェストは少なくともインストレーションファイルを参照ファイルとして引用する。好ましくは、マニフェストはまた、アプリケーションが占有することになるローカル格納スペースの大きさを参照し、またオプションとして、その上でアプリケーションが走ることが予定されるプラットフォームを参照する。マニフェストはまた、アプリケーション名，アプリケーションのバージョン，アプリケーションの簡単な説明，及び他の情報のような記述的情報を含むことがある。
【００４１】
904で、本方法は、本方法を実施している計算装置上にアプリケーションプログラムをインストールできるか否かを決定する。これには基本的に二つのチェックが含まれる。第１に、本方法は、使用可能なローカル格納スペースが、インストールされるべきプログラムのために十分であることを確認する。使用可能なローカル格納スペースは計算装置のハードディスク上で利用できるフリースペースであるかもしれない。第２に本方法は、計算装置と、その上にアプリケーションプログラムがインストールされることが予定されるプラットフォームがコンパチブルであることを確認する。マニフェストのプラットフォームは、その上でプログラムを走らせることのできるオペーレーティングシステムの最低限のバージョンを表示することがある。もし本方法がアプリケーションをインストールできないと決定すれば、その後、本方法はアプリケーションプログラムがインストールされていない状態で本方法が存在する906に進む。
【００４２】
もしアプリケーションプログラムがインストールできるなら、その後、本方法は、本方法がマニフェストによって指定されたインストレーションファイルをダウンロードする908に進む。909では、本方法はインストレーションファイルを利用することによって、本方法を実行している装置上にプログラムをインストールする。インストレーションファイルは、既知の方法により計算装置上にインストール可能な、一つあるいはそれ以上のキャビネット（．ＣＡＢ）ファイルでありうる。910で本方法は、インストールされたアプリケーションプログラムに関して、中央データベースに値を加算する。中央データベースはまた、レジストリと呼ばれることがある。キャッシュされたアプリケーションプログラムは、レジストリで保守される。レジストリでは、例えばオリジナル計算装置というようなアプリケーションプログラムの元々のロケーションが、アプリケーションプログラムがキャッシュされた計算装置上のロケーションにマップされる。これにより、キャッシュされたアプリケーションプログラムへの、プログラムリクエストの転送を可能となる。レジストリはまた、インストールした時間やアプリケーション利用情報のような、アプリケーションプログラムに関する適切なインストレーション情報を保守する。
【００４３】
例えば本方法は、インストールされたアプリケーションプログラムのために、以下の値をレジストリに加算することができる。
アプリケーションプログラムのオリジナルロケーション
プログラムがインストールされたシステム時間
保証された固有の識別子（ＧＵＩＤ）として自動的に生成されうるアプリケーション識別子
アプリケーションがインストールされ、そこから実行可能であり、アプリケーション識別子に基づきハッシュアルゴリズムによって決定可能な、計算装置上の物理的ロケーション
アプリケーションプログラムがアクセスされた直近の時間（プログラムが実行されるまではインストレーション時がデフォールト値とされる）
計算装置例
図１０が例示計算装置1000の図である。図1のクライアント計算装置102，キャッシング計算装置104，及びオリジナル計算装置108のいずれもが、例示装置1000として実現できる。例示計算装置1000は、例えば、デスクトップコンピュータ，ラップトップコンピュータ，あるいはパーソナルデジタルアシスタント（ＰＤＡ）でありうる。本発明は、マルチプロセッサシステム，マルチプロセッサベースあるいはプログラマブルなコンシューマエレクトロニクス，ネットワークコンピュータ，ミニコンピュータ，及びメインフレームコンピュータを含む、他のコンピュータシステムコンフィギュレーションを用いても実施できる。本発明は、タスクが通信ネットワークを通してリンクされた遠隔処理装置によって実行される、分散コンピュータ環境で実施することもできる。
【００４４】
装置1000は、一つあるいはそれ以上の次のコンポーネントを含む：（一つあるいは複数の）プロセッサ1002，メモリ1004，記憶装置1006，通信コンポーネント1008，（一つあるいは複数の）入力装置1010，ディスプレー1012，及び（一つあるいは複数の）出力装置1014。装置1000のうちある特定の具体例によっては、これらのコンポーネントのうち一つあるいはそれ以上のコンポーネントは存在しないかもしれない。例えば、ＰＤＡは出力装置1014を持たないかもしれない。装置1000の説明はそのような装置内に通常存在するタイプのコンポーネントのあらましとして用いられるものであり、限定的あるいは網羅的な説明を意味するものではない。
【００４５】
（一つあるいはそれ以上の）プロセッサ1002は、単一の中央処理装置（ＣＰＵ）、あるいは通常並列処理環境と呼ばれる複数の処理装置を含むかもしれない。メモリ1004は読み出し専用メモリ（ＲＯＭ）及び/又はランダムアクセスメモリ（ＲＡＭ）を含むかもしれない。記憶装置1006は、固定媒体記憶装置や取り外し可能媒体記憶装置等、いかなるタイプの記憶装置でも良い。前者の例としてはハードディスクドライブ，及びフラッシュメモリあるいは不揮発性記憶装置を含む。後者の例としては、テープドライブ，ＣＤ−ＲＯＭのような光学ドライブ，及びフレキシブルドライブを含む。記憶装置とそれに付随したコンピュータにより読み取り可能な媒体は、コンピュータにより読み取り可能な命令，データ構造，プログラムモジュール，及び他のデータを格納した不揮発性記憶装置を提供する。データを記憶でき、コンピュータによりアクセス可能な、いかなるタイプのコンピュータにより読み取り可能な媒体を使用することができる。
【００４６】
装置1000はネットワーク環境で動作することもできる。ネットワークの例としては、インターネット，イントラネット，エクストラネット，ローカルエリアネットワーク（ＬＡＮ’ｓ），及び広域ネットワーク（ＷＡＮ’ｓ）を含む。装置1000は、装置1000内に存するか、あるいは装置1000に取り付けられた通信コンポーネント1008を含むかもしれない。コンポーネント1008は一つあるいはそれ以上のネットワークカード，イーサーネットカード，アナログモデム，ケーブルモデム，デジタルサブスクライバループ（ＤＳＬ）モデム，及び統合サービスデジタル網（ＩＳＤＮ）アダプタでありうる。（一つ又は複数の）入力装置は、それによってユーザが装置1000に入力を提供する機構である。そのような（一つ又は複数の）入力装置1010は、キーボード，ポインティング装置，マイクロホン，ジョイスティック，ゲームパッド，及びスキャナーを含むことができる。ディスプレー1012は装置1000が一般に出力をユーザに見せる方法である。ディスプレー1012は陰極線管（ＣＲＴ）ディスプレー装置とフラットパネルディスプレー（ＦＰＤ）ディスプレー装置を含みうる。装置1000は他の（一つ又は複数の）出力装置1014を用いて出力をユーザに提供するかもしれない。（一つ又は複数の）出力装置1014は、スピーカ，プリンタ，及び他のタイプの装置を含むことができる。
【００４７】
これまでに説明された方法はコンピュータによって実行されうる。コンピュータによって実行される方法の少なくとも一部は、望ましくは、コンピュータ上で走る一つあるいはそれ以上のプログラムとして実現される。プログラムは、コンピュータのプロセッサによって、メモリのようなコンピュータによって読み取り可能な媒体から実行することができる。販売のため、及び他のコンピュータ上でのインストール及び実行のために、プログラムは望ましくは、フレキシブルディスクあるいはＣＤ−ＲＯＭのような、機械読み取り可能な媒体上に格納可能である。一つのプログラムあるいは複数のプログラムは、コンピュータシステム，コンピュータ，あるいは計算装置の一部分であっても良い。
【００４８】
結論
ここでは特定の実施例が図解され説明されてきたが、ここに示される特定の実施例に代えて、同じ目的を達成するために考えられる、いかなる組み合わせを用いることも可能であることが、当業者によって認識されるであろうことに言及しておく。本出願は本発明からのいかなる改変あるいは変動をも包含することを意図している。それゆえ、本発明は特許請求の範囲及びそれと均等なものによってのみ限定されることをはっきり意図するものである。
【図面の簡単な説明】
【００４９】
【図１】本発明の好ましい実施例による、クライアント計算装置，キャッシング計算装置，及びオリジナル計算装置の基本構成図である。
【図２】本発明の実施例に従って、クライアント計算装置がローカルネットワークを通じてキャッシング計算装置に通信状態で接続されており、キャッシング計算装置がリモートネットワークを通じてオリジナル計算装置に通信状態で接続されている図のより詳細な構成例を示す図である。
【図３】本発明の実施例に従って、クライアント計算装置，キャッシング計算装置，及びオリジナル計算装置が同じネットワークを通じて、通信状態でお互いに接続されている、図1のより詳細な構成例を示す別の図である。
【図４】本発明の実施例に従って、図1のキャッシング計算装置をより詳細に示す図である。
【図５】本発明の実施例に従って、クライアント計算装置あるいはキャッシング計算装置等の装置が、いかにしてアプリケーションプログラムリクエストを傍受，通過，転送するかを示す図である。
【図６】本発明の実施例に従って、図1のクライアント計算装置をより詳細に示す図である。
【図７】いかにしてクライアント計算装置，キャッシング計算装置，及びオリジナル計算装置が、アプリケーションプログラムリクエストを処理するかを要約する方法のフローチャートである。
【図８】クライアント計算装置，キャッシング計算装置，及びオリジナル計算装置が、アプリケーションプログラムの一部あるいは全体がキャッシュされるべきか否かを、いかにして決定するかを要約する、方法のフローチャートである。
【図９】本発明の実施例に従って、ローカルな実行のために、クライアント計算装置あるいはキャッシング計算装置がアプリケーションプログラムあるいはアプリケーションプログラムコンポーネントをダウンロードしインストールするかを示す方法のフローチャートである。
【図１０】図１のキャッシング計算装置，クライアント計算装置，あるいはオリジナル計算装置のいずれかを実行させることのできる、計算装置例の図である。
【符号の説明】
【００５０】
１０２  クライアント計算装置
１０４  キャッシング計算装置
１０６  第１のネットワーク
１０８  オリジナル計算装置
１１０  第２のネットワーク
【図１】
2006092569.tif 000003
【図２】
2006092569.tif 000004
【図３】
2006092569.tif 000005
【図４】
2006092569.tif 000006
【図５】
2006092569.tif 000007
【図６】
2006092569.tif 000008
【図７】
2006092569.tif 000009
【図８】
2006092569.tif 000010
【図９】
2006092569.tif 000011
【図１０】
2006092569.tif 000012