(57)【要約】【課題】  本発明の目的は、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法、ウェブ・サーバ、及びコンピュータ・システムを提供することである。【解決手段】  本方法は、クライアント・ユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答して、ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、ユーザに適した対応ホスティング・サーバを決定するステップと、対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングし、ターゲット・デスクトップ・アプリケーションを開始するステップと、クライアントと対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させるために、対応ホスティング・サーバのアドレスをクライアントに送信するステップと、デスクトップ・アプリケーション対話の完了に応答して、対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了するステップとを含むことができる。本発明によれば、クライアント・ユーザに、デスクトップ・アプリケーション及びウェブ・アプリケーションにアクセスするための統一されたウェブ・コンソールが提供され、ウェブ・ファイルをデスクトップ・アプリケーションとウェブ・アプリケーションとの間で共有することができる。【選択図】      図１
2011502291.tif 000002
【特許請求の範囲】
【請求項１】
デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法であって、前記ウェブ・アプリケーションはウェブ・サーバに含まれており、
クライアント・ユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答して、前記ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、前記ユーザに適した対応ホスティング・サーバを決定するステップと、
前記対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングし、前記ターゲット・デスクトップ・アプリケーションを開始するステップと、
前記クライアントと前記対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させるために、前記対応ホスティング・サーバのアドレスを前記クライアントに送信するステップと、
前記デスクトップ・アプリケーション対話の完了に応答して、前記対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了するステップと
を含む方法。
【請求項２】
前記対応ホスティング・サーバ及び前記ウェブ・サーバ上の全てのファイルが、前記デスクトップ・アプリケーション対話中に同期化される、請求項１に記載の方法。
【請求項３】
前記対応ホスティング・サーバのサーバ・イメージを格納し、前記ターゲット・デスクトップ・アプリケーションを終了した後で前記対応ホスティング・サーバを解放するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記ユーザに適した対応ホスティング・サーバを決定する前記ステップが、
現時点においてリソース・プール内に現行のセッションに対するホスティング・サーバが存在する場合、該ホスティング・サーバを前記対応ホスティング・サーバとして決定すること、又は、
存在しない場合、前記ターゲット・デスクトップ・アプリケーション及びそれに必要とされるオペレーション・システム情報に従って、前記リソース・プールから適合するホスティング・サーバを前記対応ホスティング・サーバとして見つけ出すこと
を含む、請求項１から請求項３のいずれか１項に記載の方法。
【請求項５】
前記対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングする前記ステップが、
前記対応ホスティング・サーバ上に前記ターゲット・デスクトップ・アプリケーションがまだインストールされていない場合、前記ターゲット・デスクトップ・アプリケーションが必要とするオペレーション・システムを必要に応じて前記対応ホスティング・サーバ上にインストールすること、及び
前記ターゲット・デスクトップ・アプリケーションを前記対応ホスティング・サーバ上にインストールすることを含み、
前記ターゲット・デスクトップ・アプリケーションを含む複数のデスクトップ・アプリケーション及びそれらが必要とするオペレーション・システムをインストールするためのソフトウェアが、前記ウェブ・サーバによるアクセスが可能なリポジトリ内に格納されている、請求項４に記載の方法。
【請求項６】
前記ユーザが前記デスクトップ・アプリケーションの使用を初回に要求する場合に、前記送信ステップにおいて、ブラウザ・プラグインが前記クライアントに対して同時に送信され、その結果、前記クライアント側においてユーザ入力をインターセプトし、且つ、前記対応ホスティング・サーバのユーザ・インターフェースを前記クライアント側のウェブ・ブラウザ内に表示するようにさせる、請求項１から請求項３のいずれか１項に記載の方法。
【請求項７】
デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるためのウェブ・サーバであって、前記ウェブ・サーバは、クライアント及び１つ又は複数のホスティング・サーバと通信することが可能であり、且つ、ウェブ・アプリケーションとデスクトップ・アプリケーション・サービスとを含み、
前記ウェブ・アプリケーションが、前記クライアントのユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答してデスクトップ・アプリケーション初期化要求を生成し、且つ、デスクトップ・アプリケーション対話の完了に応答してデスクトップ・アプリケーション終了要求を生成し、
前記デスクトップ・アプリケーション初期化要求に応答して、前記デスクトップ・アプリケーション・サービスが、前記ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、前記ユーザに適した対応ホスティング・サーバを決定し、前記対応ホスティング・サーバが前記ターゲット・デスクトップ・アプリケーションを開始することができるようにその上でデスクトップ・アプリケーション環境を準備してプロビジョニングし、前記対応ホスティング・サーバのアドレスを前記クライアントに送信し、それによって、前記クライアントと前記対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させ、
前記デスクトップ・アプリケーション終了要求に応答して、前記デスクトップ・アプリケーション・サービスが、前記対応ホスティング・サーバ上の前記ターゲット・デスクトップ・アプリケーションを停止して終了する、
ウェブ・サーバ。
【請求項８】
前記デスクトップ・アプリケーション・サービスが、
ウェブ・アプリケーションからの要求を受信し、これに応答するための要求ハンドラと、
前記ユーザのセッション情報を維持し保存するためのセッション・マネージャと、
前記１つ又は複数のホスティング・サーバに対するリソース割当て及び解放の管理を実行するためのリソース・マネージャと、
前記ホスティング・サーバ環境を準備してプロビジョニングするために、前記１つ又は複数のホスティング・サーバ上にリモート・システムを自動的にインストールするための配備コントローラと
をさらに含み、
前記デスクトップ・アプリケーション初期化要求に応答して、前記要求ハンドラが、前記セッション・マネージャをチェックして、現行セッションのために作動中のホスティング・サーバが存在するか否かを判定し、存在しない場合には、前記要求ハンドラが、前記リソース・マネージャに対して、前記ターゲット・デスクトップ・アプリケーション及びそれに必要とされるオペレーション・システム情報に従って、適合するホスティング・サーバを前記１つ又は複数のホスティング・サーバの中から前記対応ホスティング・サーバとして決定することを要求し、
前記デスクトップ・アプリケーション終了要求に応答して、前記要求ハンドラが、前記配備コントローラに対して前記対応ホスティング・サーバをクリアすることを依頼し、且つ、前記リソース・マネージャに対して前記対応ホスティング・サーバを解放することを依頼する、
請求項７に記載のウェブ・サーバ。
【請求項９】
前記デスクトップ・アプリケーション・サービスが、前記デスクトップ・アプリケーション対話中に前記ウェブ・サーバ及び前記対応ホスティング・サーバ上の全てのファイルを同期化させるように前記対応ホスティング・サーバと通信することが可能なファイル・コントローラをさらに含む、請求項８に記載のウェブ・サーバ。
【請求項１０】
前記配備コントローラが、前記ターゲット・デスクトップ・アプリケーションの終了後に、前記対応ホスティング・サーバのイメージをリポジトリ内に格納する、請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１１】
前記ターゲット・デスクトップ・アプリケーションが前記対応ホスティング・サーバ上にインストールされていない場合、前記配備コントローラが、前記ターゲット・デスクトップ・アプリケーションが必要とするオペレーション・システムを必要に応じて前記対応ホスティング・サーバ上にインストールし、且つ、前記ターゲット・デスクトップ・アプリケーションをインストールし、前記ターゲット・デスクトップ・アプリケーションを含む複数のデスクトップ・アプリケーション及びそれらのオペレーション・システムをインストールするためのソフトウェアが、リポジトリ内に格納されている、
請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１２】
前記ユーザが前記デスクトップ・アプリケーションの使用を初回に要求する場合に、前記ウェブ・アプリケーションが、前記対応ホスティング・サーバのアドレスの送信中に同時にブラウザ・プラグインを前記クライアントに対して送信し、その結果、前記クライアント側においてユーザ入力をインターセプトし、且つ、前記対応ホスティング・サーバのユーザ・インターフェースが前記クライアント側のウェブ・ブラウザ内に表示するようにさせる、請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１３】
デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたときに請求項１から請求項６に記載の発明を実施するように機能するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ技術の分野に関し、より具体的には、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法、装置、及びシステムに関する。
【背景技術】
【０００２】
現在の情報技術（ＩＴ）分野において、ウェブ技術は、その単純さ、軽量性、オープン規格に基づいていることから、広く応用されている。ウェブ技術に基づくアプリケーション開発を専門に行うソフトウェア・ベンダは増える一方である。従来のデスクトップ・アプリケーションに比べると、ウェブ・アプリケーションは、例えば、多くの利点を有しており、例を挙げれば、ウェブ・アプリケーションはソフトウェアのインストール及び保守が不要なので、配布しやすい。
【０００３】
しかしながら、ウェブ・アプリケーションには制限もある。その主要な問題は、ユーザ・インターフェースがＨＴＭＬベースであるため、高度なユーザ対話をサポートすることができない点である。この問題のため、今でも多くの場合において、デスクトップ・アプリケーションを用いる必要がある。場合によっては、エンド・ユーザは、作業を仕上げるために、ウェブ・アプリケーションとデスクトップ・アプリケーションとの間を切り換える必要がある。例えば、ユーザが自身のブログを編集する場合に、写真又は絵を追加したいと望むならば、まずユーザは、必要な写真又は絵を見つけ出す必要があり、次にはおそらくそれらを編集する必要があるはずである。それをするためには、ユーザは、何らかの写真又は絵の編集ソフトウェア（即ち、デスクトップ・アプリケーション）をインストールしなければならない。その後で、ユーザは、編集した写真又は絵をウェブ・アプリケーションにアップロードする必要がある。しかしながら、次に挙げる理由のうちの幾つかのため、このようなユーザ経験は余り良好とは言えない。即ち、（１）ユーザの経験の一体性が損なわれる、（２）ユーザは異なるコンソールの間で切り換えを行わなければならない、（３）ウェブ・アプリケーション・データとデスクトップ・アプリケーション・データを共有することができない、（４）ユーザは必要なデスクトップ・アプリケーションをインストールし、それを定期的に保守しなければならない。
【０００４】
ウェブ・アプリケーションの能力を強化するために、Ｊａｖａ  ｓｃｒｉｐｔ、ＡＪＡＸ、ＡｃｔｉｖｅＸ及びＡｐｐｌｅｔのような幾つかの技術が広く用いられている。Ｊａｖａ  ｓｃｒｉｐｔ／ＡＪＡＸ手法に関しては、その発想は、対話型プログラミング機能を提供するスクリプト言語であるＪａｖａ  ｓｃｒｉｐｔの助けを借りて、ウェブ・アプリケーションを記述することにある。しかしながら、Ｊａｖａ  ｓｃｒｉｐｔの使用もまた多大な制限を有する。例えば、第１の制限は、Ｊａｖａ  ｓｃｒｉｐｔはインタープリタによって実行され、性能が低いことであり、第２の制限は、ある種のプログラミング論理はＪａｖａ  ｓｃｒｉｐｔを用いて実装することができないことである。ＡｃｔｉｖｅＸ／Ａｐｐｌｅｔ手法に関しては、互換性が低いためにそれほど広範に採用されていない。その一方で、ユーザは異なるアプリケーションごとに異なるプラグインをダウンロードする必要があり、プラグインによってはファイル・サイズが大きすぎて、ダウンロードするのに多大な時間を要する場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
よって、上記の状況に鑑みて、従来技術の欠点を克服し、デスクトップ・アプリケーションを用いてウェブ・アプリケーションのファイルを処理することができるようにウェブ・アプリケーションとデスクトップ・アプリケーションとを１つにまとめる（Converge）ことができる技術が切実に求められている。
【課題を解決するための手段】
【０００６】
本発明の幾つかの態様の基本的な理解を与えるために、これ以降、本発明の簡潔な概要が提示される。しかしながら、この概要は、本発明の網羅的な説明ではないことを理解されたい。さらに、この概要は、本発明の決定的な又は重要な部分を定めることを意図するものではなく、本発明の範囲を限定することを意図するものでもない。この概要は、幾つかの概念を簡略化された形で提示するためにのみ用いられるものであり、後で論じられる、この後に続くより詳細な説明の序論と見なされる。
【０００７】
従来技術に存在する上記の問題を解決するために、本発明の１つの好ましい態様において、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法が提供される。
【０００８】
本発明の別の態様により、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめることを容易にするウェブ・サーバ、並びに対応するコンピュータ・システムが提供される。
【０００９】
本発明の別の態様により、上記の方法を実現するためのコンピュータ・プログラム・コードを格納した又はエンコードしたコンピュータ可読記憶媒体、並びに対応するコンピュータ・プログラムが提供される。
【００１０】
第１の態様から見れば、本発明は、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法を提供するものであり、ウェブ・アプリケーションはウェブ・サーバに含まれており、この方法は、クライアント・ユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答して、ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、ユーザに適した対応ホスティング・サーバを決定するステップと、対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングし、ターゲット・デスクトップ・アプリケーションを開始するステップと、クライアントと対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させるために、対応ホスティング・サーバのアドレスをクライアントに送信するステップと、デスクトップ・アプリケーション対話の完了に応答して、対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了するステップとを含む。
【００１１】
第２の態様から見れば、本発明は、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるためのウェブ・サーバを提供するものであり、ウェブ・サーバはクライアント及び１つ又は複数のホスティング・サーバと通信することができ、且つ、ウェブ・アプリケーションとデスクトップ・アプリケーション・サービスとを含み、ウェブ・アプリケーションは、クライアントのユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答してデスクトップ・アプリケーション初期化要求を生成し、且つ、デスクトップ・アプリケーション対話の完了に応答してデスクトップ・アプリケーション終了要求を生成し、デスクトップ・アプリケーション・サービスは、デスクトップ・アプリケーション初期化要求に応答して、ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、ユーザに適した対応ホスティング・サーバを決定し、対応ホスティング・サーバがターゲット・デスクトップ・アプリケーションを開始できるようにデスクトップ・アプリケーション環境を準備してプロビジョニングし、対応ホスティング・サーバのアドレスをクライアントに送信して、それによって、クライアントと対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させ、デスクトップ・アプリケーション・サービスは、デスクトップ・アプリケーション終了要求に応答して、対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了する。
【００１２】
第３の態様から見れば、本発明は、デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるためのコンピュータ・システムを提供するものであり、このシステムは、ウェブ・ブラウザがインストールされたクライアントと、１つ又は複数のホスティング・サーバであって、各々が、ホスティング・サーバのユーザ・インターフェースをキャプチャするための端末サービスと、ホスティング・サーバ上でデスクトップ・アプリケーションを開始するための制御エージェントとを含む１つ又は複数のホスティング・サーバと、クライアント及び１つ又は複数のホスティング・サーバと通信することが可能であり、ウェブ・アプリケーションとデスクトップ・アプリケーション・サービスとを含むウェブ・サーバとを含み、ウェブ・アプリケーションは、ウェブ・ブラウザを通じたクライアントのユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答してデスクトップ・アプリケーション初期化要求を生成し、クライアントのユーザからのデスクトップ・アプリケーションの終了を求める要求に応答してデスクトップ・アプリケーション終了要求を生成し、デスクトップ・アプリケーション・サービスは、デスクトップ・アプリケーション初期化要求に応答してデスクトップ・アプリケーション初期化プロセスを開始し、ユーザに適した対応ホスティング・サーバを決定し、制御エージェントが対応ホスティング・サーバ上でターゲット・デスクトップ・アプリケーションを開始することができるように、且つ、ウェブ・アプリケーションが対応ホスティング・サーバのアドレスをクライアントに送信できるように、デスクトップ・アプリケーション環境を準備してプロビジョニングし、ブラウザ・プラグインがクライアント側で開始され、その結果、クライアント側においてユーザ入力をインターセプトし、それを対応ホスティング・サーバ上の端末サービスに与え、且つ、対応ホスティング・サーバのユーザ・インターフェースをウェブ・ブラウザ内に表示するようにされ、ブラウザ・プラグインと対応ホスティング・サーバ上の端末サービスとを介して、クライアント側と対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話が行われ、デスクトップ・アプリケーション・サービスは、デスクトップ・アプリケーション終了要求に応答して、対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了する。
【００１３】
第４の態様から見れば、本発明は、デジタル・コンピュータの内部メモリ内にロード可能なコンピュータ・プログラムを提供し、このプログラムは、コンピュータ上で実行された場合に、上記の本発明を実施するように機能するためのソフトウェア・コード部分を含む。
【００１４】
本発明の他の態様により、対応するコンピュータ可読記憶媒体及びコンピュータ・プログラムもまた提供される。
【００１５】
本発明によるこれらの解決策において、ウェブ・アプリケーション（例えば、ウェブ・ブラウザ）内にリモート・デスクトップ・アプリケーションのユーザ・インターフェース（ＵＩ）を埋め込むことによって、エンド・ユーザがリモート・デスクトップ・アプリケーションを用いて、ウェブ・アプリケーションのファイルを処理することが可能になる。これは、ユーザがウェブ・ページ内のウェブ・ファイルを編集するためにデスクトップ・アプリケーションを用いることができることを意味する。クライアント側のユーザは、特定のウェブ・アプリケーションを用いるときに、ウェブ・サーバに対して、特定のデスクトップ・アプリケーションの初期化を求める要求を送信することができる。ウェブ・サーバは、この要求を受信した後、最初に、要求されたデスクトップ・アプリケーションが既にインストールされた既存のサーバを見つけ出す。このような、要求されたデスクトップ・アプリケーションが既にインストールされているか又はそれをインストールすることが可能であって、このデスクトップ・アプリケーションを提供するサーバを、以降はホスティング・サーバと称する。このようなサーバが見つからない場合には、ウェブ・サーバは新規のホスティング・サーバをユーザに対して割り当て、このホスティング・サーバに対して、必要なオペレーション・システムと要求されたデスクトップ・アプリケーションとを供給する。ホスティング・サーバの準備ができた後で、ウェブ・サーバは、ホスティング・サーバ内にウェブ・ファイルを複製し、これらのファイルを用いてデスクトップ・アプリケーションを開始する。デスクトップ・アプリケーションが開始すると、ウェブ・サーバは、ホスティング・サーバのアドレス（例えば、ＩＰアドレス及びポート番号）をクライアントに返す。同時に、クライアント側の同じウェブ・ブラウザ内に、ウェブ・サーバから取得することができる端末プラグインがダウンロードされるか、又はラウンチングされる（launched）。このプラグインは、上記の端末アドレスを用いることによってホスティング・サーバと直ちに接続し、クライアント側のウェブ・ブラウザにリモート・デスクトップ・アプリケーションのユーザ・インターフェースを表示させる。次いで、ユーザは、端末プラグインを通じて、リモート・デスクトップ・アプリケーションと対話することができる。最後に、ユーザがデスクトップ・アプリケーションを閉じるときに、デスクトップ・アプリケーション対話中に修正され変更されたウェブ・ファイルがウェブ・サーバに複製される。このようにして、ウェブ・アプリケーションとデスクトップ・アプリケーションとを１つにまとめることができる。
【発明の効果】
【００１６】
本発明は、幾つかの利点を有する。第１の利点は、エンド・ユーザに、デスクトップ・アプリケーション及びウェブ・アプリケーションにアクセスするための統一されたウェブ・コンソールを提供する点である。デスクトップ・アプリケーションはウェブ・アプリケーションの一部と見なすことができ、ハードウェアに依存せず、オペレーション・システムに依存しない。ウェブ・アプリケーションの制御下でシングル・サイン・オン（ＳＳＯ）機能が準備されている。さらに、ウェブ・ファイルをデスクトップ・アプリケーションとウェブ・アプリケーションとの間で共有することができ、デスクトップ・アプリケーションによって為された全ての変更をウェブ・アプリケーションに迅速に反映させることができる。
【００１７】
第２の利点は、デスクトップ・アプリケーションに対する管理努力を簡素化することができるという点である。エンド・ユーザにとっては、クライアント側においてデスクトップ・アプリケーションをダウンロードし、インストールし、更新し、保持する必要がない。さらに、ほとんどの場合、幾つかのデスクトップ・アプリケーションはユーザによって使用されることがめったにない。本発明のこれらの解決策によれば、ユーザはデスクトップ・アプリケーションをローカルにインストールする必要がない。デスクトップ・アプリケーションの二進コードはホスティング・サーバ上で実行されるので、ソフトウェア・ライセンス問題を管理することがより容易になる。ソフトウェア・ベンダにとっては、対応するデスクトップ・アプリケーションをウェブ・プログラミング・モデルを用いて書き換える必要がない。さらに、従来のデスクトップ・アプリケーションをウェブ・アプリケーションに組み入れることができ、デスクトップ・アプリケーションの開発サイクルを短くすることもできる。システム管理者にとっては、このようなデスクトップ・アプリケーションは、管理がより容易であり、アプリケーションを集中的に維持することができる。その一方で、全てのファイル及びデータをウェブ・サーバに格納することができるので、データ損失リスクが最小限まで低減され、データ・バックアップも、より容易である。一方、より強力なリソース（例えば、ホスティング・サーバ）を用いて、ユーザに対してより優れた性能を提供することができる。
【００１８】
第３の利点は、本発明によるこれらの解決策において、仮想化及び自動化技術を利用してコストを削減することができるという点である。ＶＭＷａｒｅ、Ｘｅｎ、及びＩＢＭ  ＬＰＡＲなどのような幾つかの既存の技術が、サーバ仮想化をサポートする。これらの技術は、物理サーバを、いくつかの論理サーバ又は仮想サーバとしてシミュレートすることができる。これらの仮想サーバは、同じ物理サーバのリソースを共用することができ、それによりリソースの利用率及び共用を改善することができる。さらに、デスクトップ・アプリケーションをこのような仮想サーバ上に配備することができるので、それにより、サービス・プロバイダにとってのホスティング・コストが節約される。その一方で、オペレーション・システム（ＯＳ）及びデスクトップ・アプリケーションのプロビジョニングのために自動化技術を用いることができるので、配備時間の節約、及び人的エラーの低減が容易になる。
【００１９】
本発明のこれらの利点及びその他の利点は、添付の図面と併せて提示される以下の本発明の好ましい実施形態の詳細な説明からより明確になる。
【００２０】
本発明は、添付の図面と併せて提示される以下の説明を参照することによって、より良く理解することができ、添付の図面全体を通じて、同一又は類似の参照符号は同一又は類似の要素を示すために用いられる。これらの図面及び以下の詳細な説明は、本明細書の一部を形成し、本発明の好ましい実施形態をさらに例証し、その原理及び利点を説明する役割を果たす。
【図面の簡単な説明】
【００２１】
【図１】本発明の好ましい実施形態を適用することができる例示的なコンピュータ・システムのブロック図を示す。
【図２】図１に示されたコンピュータ・システムに含まれる種々の構成要素をさらに詳細に示す。
【図３】デスクトップ・アプリケーションのユーザ・インターフェースが組み込まれた例示的なウェブ・アプリケーションのページ・レイアウトを示す。
【図４】図２に示されたコンピュータ・システムのデスクトップ・アプリケーション初期化中のユーザ対話及びセッション複製プロセスを簡略に示す。
【図５】本発明の好ましい実施形態による、デスクトップ・アプリケーション初期化中に実行されるプロセス５００のフローチャートを示す。
【図６】本発明の好ましい実施形態による、デスクトップ・アプリケーション終了中に実行されるプロセス６００のフローチャートを示す。
【図７】本発明の好ましい実施形態による、図５に示されたプロセス５００のリソース割当て及びプロビジョニングのステップＳ５２０の具体的なプロセス７００を詳細に示すフローチャートを示す。
【図８】本発明の好ましい実施形態による方法及びシステムを使用した場合のクライアント・コンピュータの例示的なスクリーン・スナップショット画像を示す。
【発明を実施するための形態】
【００２２】
これ以降、本発明の例示的な実施形態が添付の図面と併せて説明される。明確かつ簡潔にするために、実際の実装の必ずしも全ての特徴が本明細書中で説明されるわけではない。しかしながら、このようないずれかの実際の実装を開発する際に、開発者の特定の目標を達成するためには、例えば、実装ごとに異なるシステム関連の制約条件及び事業関連の制約条件の遵守といった、その実装に固有の多くの決定を行われなければならないことを認識すべきである。さらに、そのような開発努力は非常に複雑で時間がかかることがあるが、それにも関わらず、この開示の利益を受ける当業者にとっては日常業務たり得ることも認識すべきである。
【００２３】
添付の図面は本発明の解決策に密接に関連する装置構造及び／又はプロセス・ステップのみを示すものであり、不必要な詳細によって本発明が曖昧なものにならないように、本発明にあまり関連しない他の詳細は省略されていることもまた、ここで説明しておく必要がある。
【００２４】
これ以降、本発明による好ましい実施形態の詳細な説明を提示するために、添付の図面が参照される。
【００２５】
最初に、図１を参照すると、ブロック図は、本発明の好ましい実施形態を適用することができるコンピュータ・システムを示す。図１に示されるように、本発明によれば、クライアント側ではウェブ・ブラウザのみが必要とされ、サーバ側には１つのウェブ・サーバ及び３つのホスティング・サーバが図示されている。この図面においては３つのホスティング・サーバのみが示されているが、いかなる数のホスティング・サーバを含めることもできる。上述したように、ホスティング・サーバは、関連するデスクトップ・アプリケーションを提供するためのサーバのことを指す。
【００２６】
ウェブ・アプリケーション及び関連の補助構成要素が、ウェブ・サーバ内に配備される。ホスティング・サーバ内には、ユーザによって要求される可能性がある１つ又は複数のデスクトップ・アプリケーションが既に配備されているか、又は配備することができる。一般的なウェブ・アプリケーション対話のためには、クライアント・ブラウザは、ウェブ・サーバ上に配備されたウェブ・アプリケーションと通信する。特定のデスクトップ・アプリケーション対話が必要とされる場合には、対応するホスティング・サーバがウェブ・サーバによってユーザに対して割り当てられる。次いで、クライアントはホスティング・サーバ上に配備されたデスクトップ・アプリケーションと通信する。デスクトップ・アプリケーション対話の終了後、ホスティング・サーバは解放される。その後、クライアントはウェブ・サーバと対話を続ける。この上記手続きは、デスクトップ・アプリケーションに対するクライアントの需要に応じて、多数回にわたって繰り返すことができる。
【００２７】
次に、図２を参照すると、図は、図１に示されるようなコンピュータ・システムに含まれる構成要素を詳細に示す。簡潔にするために、図２にはホスティング・サーバ３００が１つだけしか示されていない。しかしながら、このコンピュータ・システムはさらに、図示されていない１つ又は複数の他の構成要素を含むことができ、通常は、実用上、１つより多くのホスティング・サーバを有するものであることが当業者には理解される。
【００２８】
図２に示されるように、クライアント側において、ブラウザ・プラグインがブラウザ１００の中にインストールされる。このプラグインをこれ以降、端末エージェント１１０と称する（このプラグインの詳細は、後で本方法の処理フローチャートと併せて説明される）。これは、２つの主要な機能を有する。即ち、ユーザ入力をインターセプトし、それを対応ホスティング・サーバ（例えば、図２におけるホスティング・サーバ３００）に送信すること、及び、対応ホスティング・サーバのユーザ・インターフェースをブラウザ１００の中に表示することである。ＲｅａｌＶＮＣにより提供されるＶＮＣ（リモート制御ソフトウェアの一種）、Ｌｉｎｕｘ／ＵＮＩＸ対応のＸＷｉｎｄｏｗマネージャなどのような幾つかの既存の技術を用いて、このプラグインを実装することができる。これらの技術に加えて、端末エージェント１１０を実現するためにＪａｖａアプレット手法を用いることができる（Ｊａｖａは米国及び他の国々におけるＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓの登録商標である）。
【００２９】
例えば、Ｊａｖａアプレット手法を用いる場合には、図２に示されるように、アプレットが初期化されるときに、アプレットは、ホスティング・サーバ３００上で実行される対応する端末サービス３１０に接続する。次いで、ＴＣＰ接続を確立することができる。このアプレットは、ユーザのキーボード及びマウスのイベントをキャプチャし、それを対応ホスティング・サーバ３００に送信することができる。端末サービス３１０は、これらのイベントを受信した後で、クライアント対話をシミュレートするようなイベントをホスティング・サーバ３００上で生成する。それと同時に、端末サービス３１０は、ホスティング・サーバ３００のユーザ・インターフェース（即ち、スクリーン）をキャプチャし、スクリーン画像をクライアントに返送する。端末エージェント１１０は、スクリーン画像を受信すると、アプレット内にその画像を描画する。セキュリティを考慮して、クライアントとサーバとの間で転送されるデータは、実際のアプリケーションにおいては暗号化することができる。さらに、性能を考慮して、転送されるデータを圧縮することができる一方で、クライアント側において画像キャッシュをイネーブルにすることができる。
【００３０】
図３は、デスクトップ・アプリケーションのユーザ・インターフェースが組み込まれた例示的なウェブ・アプリケーションのページ・レイアウトを示す。クライアント側のユーザが自分のウェブ・ブラウザを通じてリモート・デスクトップ・アプリケーションをイネーブルにした後で、図３に示されるようなウェブ・ページ・レイアウトが端末エージェント１１０によってクライアント側のウェブ・ブラウザ１００に現れる。即ち、リモート・デスクトップ・アプリケーションのユーザ・インターフェース（ＵＩ）が、クライアント側のウェブ・ブラウザ上のウェブ・ページ内の矩形領域内に現れる。矩形領域は、図２に示される端末エージェント１１０によって制御される。
【００３１】
再び図２に戻る。図２に示されるように、サーバ側のウェブ・サーバ２００上で、ウェブ・アプリケーション２１０は、デスクトップ・アプリケーションに対する使用要求を処理するためにデスクトップ・アプリケーション・サービス２３０を呼び出す必要がある。クライアントが特定のデスクトップ・アプリケーションを用いることを要求すると、ウェブ・アプリケーション２１０は、デスクトップ・アプリケーション・サービス２３０に準備をするように依頼するためのデスクトップ・アプリケーション初期化要求を生成する。図２に示されるように、デスクトップ・アプリケーション・サービス２３０は主として、以下の構成要素、即ち、要求ハンドラ２４０、ファイル・コントローラ２５０、セッション・マネージャ２６０、リソース・マネージャ２７０、及び配備コントローラ２８０を含む。
【００３２】
これらの構成要素以外に、図２に示されるように、サーバ側において、必要とされる１つ又は複数のホスティング・サーバ、例えばホスティング・サーバ３００（説明の便宜上、図２においてはホスティング・サーバ３００が１つだけ示されているが、実際にはいかなる数のホスティング・サーバを含めることもできる）を提供するために用いられる、１つ又は複数のサーバを含むリソース・プール４００、及び、クライアントによって要求される可能性がある複数のデスクトップ・アプリケーションのためのサーバ・イメージ及びインストール用ソフトウェアを格納するためのイメージ及びソフトウェア・リポジトリ５００が含まれることがある。
【００３３】
要求ハンドラ２４０は、ウェブ・アプリケーション２１０に対して幾つかのインターフェースを提供し、それらは以下の通りである。
（１）デスクトップ・アプリケーション初期化
ウェブ・アプリケーション２１０からデスクトップ・アプリケーション・サービス２３０に送信されるデスクトップ・アプリケーション初期化要求において、クライアントは、デスクトップ・アプリケーションのバージョン情報、及びこのデスクトップ・アプリケーションによって開かれる必要があるファイルのリストを送信する必要がある。それに加えて、初期化要求内に、ファイル同期オプション及び復元オプションを含めることができる。さらに、要求ハンドラ２４０が同じユーザに対して同じホスティング・サーバを再度使用することができるように、ウェブ・セッション情報を含めることもできる。例えば、以下は例示的なＸＭＬ初期化要求である。
<initializereq>
<application name=“Photoshop” version=“7.0” vendor=“Adobe”>
<file url=“/images/header.jpg” location=“crl.ibm.com:/shared/ myproject/header.jpg” synchronization_interval=10s refresh=true/>
<file url=“/images/footer.jpg” location=“crl.ibm.com:/shared/myproject/ footer.jpg” synchronization_interval=20s refresh=false/>
</application>
<application name=“Word” version=“2003” vendor=“Microsoft”>
<file url=“/docs/news.doc” location=“crl.ibm.com:/shared/doc/ news.doc”/>
</application>
<session id=“DFAWER214ASDFD”/>
<restore imageid=23>true</restore>
</initializereq>
【００３４】
上記の初期化要求に対するデスクトップ・アプリケーション・サービス２３０の初期化応答から、クライアントは、この要求の処理が成功したか否かを知ることができる。ホスティング・サーバのアドレスを知ることもできるので、クライアントのブラウザは、ホスティング・サーバへの接続方法を知ることができる。例えば、以下は例示的なＸＭＬ初期化応答である。
<initializeresp>
<result  value=“success” appid=“1”/>
<address  value=“myhost:myport”/>
</initializeresp>
【００３５】
（２）デスクトップ・アプリケーション終了
ユーザがデスクトップ・アプリケーションの使用を終えた後で、ウェブ・アプリケーション２１０は、関連するリソースを再利用することができるようにデスクトップ・アプリケーションを終了することを要求することができる。どのホスティング・サーバを再利用する必要があるかを要求ハンドラ２４０が知ることができるように、終了要求内にウェブ・セッション情報を含めることができる。さらに、必要に応じてホスティング・サーバ環境をバックアップすることができるように、終了要求内にバックアップ・オプションを含めることもできる。例えば、以下は例示的なＸＭＬ終了要求である。
<exitreq>
<session  id=“DFAWER214ASDFD” />
<backup>true</backup>
</exitreq>
【００３６】
終了要求への応答から、ウェブ・アプリケーション２１０は、操作の結果を知ることができる。例えば、以下は例示的なＸＭＬ終了応答である。
（プログラム）
<exitresp>
<result  value=“success”/> 
<image  id=23/>
</exitresp>
【００３７】
（３）照会
照会機能は、ウェブ・アプリケーション２１０が現在の環境の状態をチェックすることを可能にする。例えば、以下の状態をチェックすることができる。
＞利用可能なアプリケーション
＞セッションに対するホスティング・サーバの作動状態
【００３８】
ウェブ・アプリケーションにおいて、デスクトップ・アプリケーションを利用する必要がある場合には、最初に利用可能なデスクトップ・アプリケーションを照会し、次いでそれを、例えばリストの形で列挙することができる。
【００３９】
各々のデスクトップ・アプリケーションごとに、ユーザが選択できるように、以下の属性、即ち、アプリケーション名、バージョン、ベンダ、及びオペレーション・システム（ＯＳ）を表示することができる。上記の情報は、リソース・マネージャ２７０から取得することができ、その詳細な説明は後ほど提示する。ウェブ・アプリケーション２１０において、利用可能なデスクトップ・アプリケーションのリストは、ユーザの権限及び要求に従って修正されることもある。
【００４０】
ユーザが、ウェブ・ブラウザ１００を通じて特定のデスクトップ・アプリケーションを用いることを要求し、フォームをサブミットすると、ウェブ・アプリケーション２１０は、デスクトップ・アプリケーション初期化要求を生成して、それを要求ハンドラ２４０に送信する。要求ハンドラ２４０は、最初に、セッション・マネージャ２６０をチェックして、この現行セッションのために既に作動中のホスティング・サーバが存在するかどうかを判断する。そのようなホスティング・サーバが存在しないと判断された場合には、要求ハンドラ２４０は、要求されたデスクトップ・アプリケーションを作動させるために１つ又は複数のホスティング・サーバ、例えばホスティング・サーバ３００をリソース・プール４００から割り当てるように、リソース・マネージャ２７０に対して要求する。リソース割り当てが行われた後で、要求ハンドラ２４０は、配備コントローラ２８０に対して、ホスティング・サーバ環境を準備して提供し、ＩＰアドレス及びポート番号といったホスティング・サーバのアドレスを取得するように要求する。次いで、セッション・マネージャ２６０が、ホスティング・サーバ・アドレス情報及びユーザ・セッション情報を保存する。最後に、要求ハンドラ２４０は、ホスティング・サーバ・アドレスをウェブ・アプリケーション２１０に返信する。ウェブ・アプリケーション２１０は、ユーザ・ブラウザ側に、プラグイン（即ち、端末エージェント１１０）情報とホスティング・サーバ・アドレスとを含むページを送信する。ユーザ・ブラウザ１００は、応答を受信した後で、プラグイン、即ち、端末エージェント１１０を開始する。ここで、プラグインは、クライアントがブラウザを介してリモート・デスクトップ・アプリケーションに初回にアクセスしたときにのみウェブ・サーバからダウンロードされる必要があり、場合によっては、プラグインは、ウェブ・サーバ上又はウェブ・サーバがアクセス可能なネットワーク上の他のいかなる場所（簡略にするために、図２には図示されない）に格納されたものであってもよいことに留意する必要がある。上述されたこの手順は、図４に示される。
【００４１】
図４は、図２に示されるようなコンピュータ・システムのデスクトップ・アプリケーション初期化中のユーザ対話及びセッション複製プロセスを簡略に示す。前述のように、「１」は、セッション・トークンを用いたウェブ・アプリケーション対話を示し、「２」はクライアントがウェブ・アプリケーションにおいてデスクトップ・アプリケーションを求める要求を行ったことを示し、「３」はウェブ・アプリケーション２１０がデスクトップ・アプリケーション初期化要求をデスクトップ・アプリケーション・サービス２３０に送信したことを示し、「４」はデスクトップ・アプリケーション環境を準備すること、即ち、後ほど図５に示されるフローチャートを参照してその詳細が説明されるデスクトップ・アプリケーション初期化プロセスを示し、「５」はデスクトップ・アプリケーション・サービス２３０がウェブ・アプリケーション２１０に対して応答することを示し、「６」はウェブ・アプリケーション２１０がブラウザに対して応答することを示し、「７」はブラウザ１００が端末エージェント１１０を開始して、デスクトップ・アプリケーション３４０に接続することを示す。
【００４２】
上記のようにデスクトップ・アプリケーション対話を終了した後で、ユーザは、例えば、ウェブ・アプリケーション２１０に要求を送信することができ、次いで、ウェブ・アプリケーション２１０がデスクトップ・アプリケーション終了要求を生成して、それをデスクトップ・アプリケーション・サービス２３０の要求ハンドラ２４０に送信する。ユーザが将来の利用に備えて、現在割り当てられている自分のホスティング・サーバを保存することを所望する場合には、配備コントローラ２８０は、このホスティング・サーバのサーバ・イメージの全体をイメージ及びソフトウェア・リポジトリ５００に格納することができる。その後、要求ハンドラ２４０は配備コントローラ２８０を呼び出してターゲット・ホスティング・サーバをクリーンアップし、例えば、ユーザが使用している間に生成された幾つかのファイルが後で他のユーザに見られないようにそれらのファイルをクリアし、リソース・マネージャ２７０に対してホスティング・サーバの解放を要求する。この上記プロセスは、図６に示されるフローチャートを参照して後ほど詳細に説明される。
【００４３】
再度、図２に戻る。セッション・マネージャ２６０は、ユーザ・セッションを維持し、保存するため用いられる。デスクトップ・アプリケーション初期化要求を受信した後で、要求ハンドラ２４０はセッション・マネージャ２６０をチェックして、このセッションのために既に作動中のホスティング・サーバが存在するかどうかを判断する。そのようなサーバが存在しない場合には、セッション・マネージャ２６０は、このセッションＩＤ及び割り当てられたホスティング・サーバＩＤを保存する。そのようなサーバが既に存在している場合には、要求ハンドラ２４０は、そのホスティング・サーバのＩＰアドレス及びポート番号を返す。
【００４４】
リソース・プール４００内には、Ｉｎｔｅｌ／ＡＭＤ  ＰＣサーバ及びＵＮＩＸサーバなどのような異なる型式の１つ又は複数のサーバが存在してもよい。これらのサーバには、既にオペレーション・システム及びデスクトップ・アプリケーションがインストールされている場合もあるが、オペレーション・システム及びデスクトップ・アプリケーションが全くインストールされていないものであることも可能である。物理サーバに加えて、リソース・プール４００は１つ又は複数の仮想サーバを含むこともある。
【００４５】
リソース・マネージャ２７０は、リソース・プール４００を維持し、リソース割当て要求及びリソース解放要求を処理する。リソース・マネージャ２７０は、リソース・プール４００内の全てのサーバの動向を常に監視し、その詳細な情報を保持する。そのような情報には、サーバのハードウェア・タイプ及び構成、ＩＰアドレス、ＯＳタイプ、サーバ内にインストール又は格納されているデスクトップ・アプリケーションの名称及びバージョン情報などが含まれる。この情報に基づき、リソース・マネージャ２７０は、リソース割当て要求に関して最適なサーバの割当て又は決定を行うことができる。特定のリソース割当て要求が受信されると、リソース・マネージャ２７０は、デスクトップ・アプリケーションとそれに必要とされるＯＳ名とに基づいて、リソース・プール４００の中から適合するサーバを見つけることができる。適合するサーバ（即ち、ホスティング・サーバ）が見つかった場合には、適合するサーバは「使用中」としてマーク付けされ、そのＩＰアドレス及びポート番号が返される。適合するサーバが見つからない場合には、リソース・マネージャ２７０は、リソース・プール４００からプロビジョニングするのに適したホスティング・サーバを選択し、それを「使用中」としてマーク付けする。この上記プロセスは、図７に示されるフローチャートを参照して、後ほど詳細に説明される。リソース解放要求が受信されると、リソース・マネージャ２７０は、使用中のサーバを解放し、それを「フリー」としてマーク付けする。使用中のサーバが現実の物理サーバではなく仮想サーバである場合には、リソース・マネージャ２７０はこのサーバを破棄し、割り当てられたリソースを解放する。
【００４６】
換言すれば、物理サーバと仮想サーバの両方をリソース・マネージャ２７０によって管理することができる。物理サーバの場合は、サーバは、リソース・マネージャ２７０によってボックス・レベルで管理されるが、これは一回ごとに一人のユーザに対して１つの物理サーバのみを割り当てることができることを意味する。仮想サーバの場合、その仮想サーバが動作するホスト・プラットフォームを異なるユーザで共用することができる。各ユーザは、物理サーバの一部しか消費しない１つの仮想サーバのみを使用することができる。仮想サーバは、割当ての前にリソース・プール４００内に準備されてもよく、又は要求に応じて提供されてもよい。
【００４７】
配備コントローラ２８０は、自動インストールのための自動化エンジンである。これは、リモート・システムを自動的にインストールすることができる。インストール作業は、ＯＳのインストール、アプリケーション・プログラムのインストール、ソフトウェアの構成、システム更新、及びサーバのバックアップなどを含む。インストール用ソフトウェアは、一般に、イメージ及びソフトウェア・リポジトリ５００内に格納されている。配備コントローラ２８０は、ＩＢＭのＤｉｒｅｃｔｏｒ  ｆｏｒ  Ｗｉｎｄｏｗｓ／Ｌｉｎｕｘ  ｐｒｏｖｉｓｉｏｎｉｎｇ、又はＩＢＭのＮＩＭ  ｆｏｒ  ＡＩＸ  ｐｒｏｖｉｓｉｏｎｉｎｇのような、幾つかの既存製品によって実装することができる。
【００４８】
ファイル・コントローラ２５０の主要な機能は、ウェブ・サーバ２００とホスティング・サーバ３００との間でファイルを同期化することである。ファイル・コントローラ２５０は、このタスクを完了するために、ホスティング・サーバ３００内の制御エージェント３３０と通信する。ファイル・コントローラ２５０は、デスクトップ・アプリケーション初期化中に、デスクトップ・アプリケーション初期化要求の中で指定されているファイルを、ホスティング・サーバ３００のホーム・ディレクトリに複製する。ファイル・コントローラ２５０は、デスクトップ・アプリケーションの終了中に、デスクトップ・アプリケーション対話の間に修正又は更新された全てのファイルをホスティング・サーバ３００からウェブ・サーバ２００上の元の位置又は他の位置に複製する。デスクトップ・アプリケーション初期化中及びデスクトップ・アプリケーション終了中に、ファイル・コントローラ２５０は、ホスティング・サーバ３００上の全ての修正又は更新されたファイルを、ウェブ・サーバ２００上の特定の一時的位置に繰り返し複製することができる。このことは、ホスティング・サーバ３００が何らかの理由でクラッシュした後でこれらのファイルが失われることを防止するためのバックアップが目的である。もちろん、代替法として、ファイル・コントローラ２５０は、修正又は更新された全てのファイルをウェブ・サーバ２００上の元の位置に直接複製して、元のファイルを上書きし、それにより、加えられた修正又は更新が直ちに反映されるようにすることもできる。これは、ユーザが自身の要求に基づいて設定することができる。
【００４９】
イメージ及びソフトウェア・リポジトリ５００内には、２種類のデータ、即ち、デスクトップ・アプリケーション／ＯＳインストール用ソフトウェア、及びサーバ・イメージが格納される。インストール用ソフトウェアは、対応デスクトップ・アプリケーション又はオペレーション・システムをホスティング・サーバ（物理サーバ又は仮想サーバのどちらであってもよい）上に初回にインストールするために用いられる。サーバ・イメージは、既存サーバのスナップショット／バックアップである。インストール用ソフトウェアは、以下の属性、即ち、ソフトウェア名、バージョン、ベンダ、及びインストール・スクリプトを有するものとすることができる。サーバ・イメージは、以下の属性、即ち、ソフトウェア・リスト、イメージ作成日付、ユーザＩＤ、及びハードウェア・タイプを有するものとすることができる。
【００５０】
各ホスティング・サーバ（例えば、図２に示されるホスティング・サーバ３００）上には、デスクトップ・アプリケーション３４０に加えて、２つの構成要素、即ち、端末サービス３１０及び制御エージェント３３０もまたインストールされる。
【００５１】
端末サービス３１０は、端末エージェント１１０と通信してクライアント側におけるユーザ入力を取得し、それをホスティング・サーバ３００側で再生する。端末サービス３１０はさらに、ホスティング・サーバ上のＵＩをキャプチャし、これをクライアント側の端末エージェント１１０に送信する。このようにして、ユーザは、ウェブ・ブラウザを通じてリモート・デスクトップ・アプリケーションを呼び出し、制御することができる。端末エージェント１１０と同様に、端末サービス３１０もまた、ＮＶＣ及びＪａｖａアプレットなどのような幾つかの既存技術によって実装することができる。
【００５２】
制御エージェント３３０は、主として、ファイル同期化機能及びアプリケーション制御機能を有する。制御エージェント３３０は、ファイルを同期化するために、ウェブ・サーバ２００上のファイル・コントローラ２５０と対話する。制御エージェント３３０は、さらに、ホスティング・サーバ上のユーザのローカル・ディレクトリを監視し、ファイル変更イベントを追跡することもできる。特定のファイルが修正又は更新されたときに、制御エージェント３３０は、修正又は更新されたファイルを複製するようにファイル・コントローラ２５０に通知することができる。デスクトップ・アプリケーション初期化段階において、制御エージェント３３０は、ターゲット・アプリケーションを開始し、入力ファイルをロードする必要がある。デスクトップ・アプリケーション終了段階において、制御エージェント３３０は、使用中のデスクトップ・アプリケーションを停止し、終了する必要がある。ここでは、制御エージェントもまた、スクリプト又はプログラムによって実装することができる。
【００５３】
本発明による、上記の構成要素の機能、及びデスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための例示的な方法の処理フローを例証するために、図５乃至図７に示されるフローチャートと併せて、詳細な説明が提示される。図５は、本発明の一実施形態によるデスクトップ・アプリケーション初期化中に実行されるプロセス５００のフローチャートを示し、図６は、本発明の一実施形態によるデスクトップ・アプリケーション終了中に実行されるプロセス６００のフローチャートを示し、図７は、本発明の一実施形態による、図５に示されるプロセス５００におけるリソース割当て及びプロビジョニング・ステップＳ５２０における具体的なプロセス７００を詳細に示す。
【００５４】
上述のように、ウェブ・アプリケーション２１０がデスクトップ・アプリケーション初期化要求を生成した後で、図５に示されるように、デスクトップ・アプリケーション初期化プロセス５００が開始される。ステップＳ５１０において、要求ハンドラ２４０は、セッション・マネージャ２６０をチェックして、このセッションのための既存のホスティング・サーバが存在するかどうかを判断する。ステップＳ５１０において否定的な結果が得られた場合、即ち、既存のホスティング・サーバが見つからなかった場合には、プロセスはステップＳ５２０に進み、そこでリソース・マネージャ２７０及び配備コントローラ２８０（その更なる説明は図７を参照して後ほど提示される）によってリソースの割当て及びプロビジョニングが行われ、次いで、プロセス５００はステップＳ５３０に進む。そうではなくて、ステップＳ５１０において既存のホスティング・サーバが存在すると判断された場合には、プロセス５００は直接ステップＳ５３０に進む。ステップＳ５３０において、ファイル・コントローラ２５０が、現行のセッション・ファイル（例えば、図２に示されるウェブ・ファイル２２０）をホスティング・サーバ（例えば、図３に示されるホスティング・サーバ３００）に複製する。ステップＳ５４０において、制御エージェント３３０が、要求されたデスクトップ・アプリケーション３４０及び端末サービス３１０をホスティング・サーバ３００上で開始する。ステップＳ５５０において、ホスティング・サーバのＩＰアドレス及びポート番号がクライアント側に返され（ユーザが自分のブラウザを介してそのリモート・デスクトップ・アプリケーションにアクセスするのが初めてであれば、同時に、クライアント・ブラウザ・プラグイン、即ち端末エージェント１１０がクライアントに返される）、次いでデスクトップ・アプリケーション初期化要求は終了する。その後、ユーザはクライアント側において端末エージェント１１０をスタートアップすることができ、ホスティング・サーバ３００上のデスクトップ・アプリケーションとの対話を開始することができる。
【００５５】
ユーザは、デスクトップ・アプリケーション対話を完了した後でウェブ・アプリケーション２１０に対して要求を送信することができ、次いで、ウェブ・アプリケーション２１０は、デスクトップ・アプリケーション終了要求を送信し、それによって、図６に示されるようなデスクトップ・アプリケーション終了プロセスが開始される。
【００５６】
図６に示されるように、ステップＳ６１０において、要求ハンドラ２４０は、セッション・マネージャ２６０をチェックして、このセッションにおいて動作中のホスティング・サーバが存在するかどうかを判断する。上記のように、ホスティング・サーバ３００はデスクトップ・アプリケーション対話中に実際に割り当てられており、作動中であるので、ステップＳ６１０における判定結果は肯定であり、したがってデスクトップ・アプリケーション終了プロセス６００はステップＳ６２０に進む。あるいは、そうでない場合には、プロセス６００は終了する。ステップＳ６２０において、制御エージェント３３０は、ホスティング・サーバ３００上のデスクトップ・アプリケーション３４０及び端末サービス３１０を停止する。次いで、ステップＳ６３０において、ファイル・コントローラ２５０と制御エージェント３３０との間の通信によって、デスクトップ・アプリケーション対話中に修正又は更新された全てのファイルがウェブ・サーバ２１０上の元の位置に複製され、元のファイルを上書きする。次に、ステップＳ６４０において、ユーザが将来の使用に備えて現行のホスティング・サーバのイメージを保存することを所望するかどうかが判定される。これは、例えば、以下のようなやり方で実現することができる。ウェブ・アプリケーションは、「アプリケーションをバックアップする」をオプションとして採用することが可能であり、ユーザがこのオプションを選択した後で、現在のアプリケーションのバックアップを依頼するためのパラメータが、ウェブ・アプリケーションからデスクトップ・アプリケーション・サービスに送信されるデスクトップ・アプリケーション終了要求内に含められる。例えば、上記の＜ｅｘｉｔｒｅｑ＞メッセージ中の＜ｂａｃｋｕｐ＞フィールドを参照することができる。要求ハンドラ２４０が、このパラメータをチェックする。ステップＳ６４０において、ユーザが現在のホスティング・サーバのイメージを保存することを所望していると判定された場合には、プロセス６００は、ステップＳ６５０に進み、そこで配備コントローラ２８０がホスティング・サーバ全体のイメージをイメージ及びソフトウェア・リポジトリ５００に格納し、次いで、プロセスはステップＳ６６０に進む。あるいは、そうでない場合には、デスクトップ・アプリケーション終了プロセス６００は、直接ステップＳ６６０にジャンプし、そこで、このホスティング・サーバは配備コントローラ２８０によってクリアされ、次いで、リソース・マネージャ２７０によってリソース・プール４００に解放され、次いで、図６に示されるデスクトップ・アプリケーション終了プロセス６００は終了する。
【００５７】
本発明の一実施形態による、図５に示されたステップＳ５２０のプロセス（即ち、リソース割当て及びプロビジョニング・プロセス７００）の詳細な説明が、図７におけるフローチャートと併せて、この後でさらに提示される。
【００５８】
図７に示されるように、ステップＳ７１０において、ユーザがサーバ・イメージを復元することを望むか否か、及び、デスクトップ・アプリケーション初期化要求内で指定されたイメージＩＤに対する既存のサーバ・イメージがイメージ及びソフトウェア・リポジトリ５００内に存在するか否かが決定される。ここで、イメージＩＤについては、上記の例示的な＜ｉｎｉｔｉａｌｉｚｅｒｅｑ＞メッセージ内の＜ｒｅｓｔｏｒｅ＞フィールドを参照することができる。例えば、ユーザは、デスクトップ・アプリケーションのスタートアップを要求する前に、イメージ及びソフトウェア・リポジトリ５００の中に既に格納されているサーバ・イメージ及びそのイメージＩＤをウェブ・アプリケーションによって照会することができ、そして、ユーザは、デスクトップ・アプリケーションのスタートアップを要求するときにイメージＩＤを入力することができる。ステップＳ７１０における決定結果が否定であれば、プロセス７００はステップＳ７２０に進み、適合するＯＳとデスクトップ・アプリケーションとを有するフリーのホスティング・サーバが存在するか否かが判定される。ステップＳ７２０における決定結果が肯定であれば、プロセス７００は、直接ステップＳ７８０にジャンプする。ステップＳ７２０における決定結果が否定であれば、ステップＳ７３０において、要求されたデスクトップ・アプリケーションをインストールすることができるフリーのホスティング・サーバが存在するかどうかが判定される。ステップＳ７３０において、そのようなホスティング・サーバが存在しないと判定された場合には、ステップＳ７４０において、クライアントにエラーが返され、それにより、デスクトップ・アプリケーション対話は終了する。あるいは、そうでない場合には、ステップＳ７３０においてそのようなホスティング・サーバが存在すると判定されると、ステップＳ７５０において、必要であれば、そのホスティング・サーバ上にオペレーション・システムがインストールされる（もちろん、このホスティング・サーバ上にそのオペレーション・システムがインストールされていれば、このステップは抜かすことができる）。次に、ステップＳ７６０において、必要なデスクトップ・アプリケーションがホスティング・サーバ上にインストールされる。引き続き、プロセスはステップＳ７７０に進み、ホスティング・サーバ上に端末エージェント及び制御エージェントがインストールされ、この端末エージェント及び制御エージェントは、例えば、イメージ及びソフトウェア・リポジトリ５００内に格納しておくことができる（もちろん、端末エージェント及び制御エージェントがこのホスティング・サーバ上に既にインストールされている場合には、このステップは抜かすことができる）。その後、ステップＳ７８０において、ホスティング・サーバの状態が「使用中」として設定され、次いで、ステップＳ７９０において、ホスティング・サーバのＩＰアドレスが要求ハンドラ２４０に返され、それにより、図７に示されるリソース割当て及びプロビジョニング・ステップ７００は終了する。次いで、図５に示されるステップＳ５３０が進行することになる。
【００５９】
図８は、本発明の一実施形態による方法及びシステムの適用の例である。この図においては、ユーザがウェブ・ブラウザ上で特定のデスクトップ・アプリケーションを選択した時点から、ユーザがクライアント側においてリモート・デスクトップ・アプリケーションにアクセスした時点までのクライアント・コンピュータの複数のスクリーン・スナップショット画像が連続して示されている。
【００６０】
本発明の例示的な実施形態によるコンピュータ・システム及び方法に関する上記の説明から、本発明によれば、エンド・ユーザは、クライアント側において自分のウェブ・ブラウザを介して、リモート・デスクトップ・アプリケーションをあたかもそのデスクトップ・アプリケーションがウェブ・アプリケーションの一部であるかのように呼び出すことができるということが容易に判るはずである。ウェブ・サーバとホスティング・サーバとの間でファイルを同期化することができ、全てのファイル及びデータをウェブ・サーバ上に格納することができるので、その結果、これらのファイル及びデータを多数のユーザ間で共有することが可能となり、ウェブ・サーバ上でデータを管理し、バックアップすることがより容易になる。その上、本発明によれば、従来のデスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめる又は統合することができるので、その結果、より豊富なデスクトップ・アプリケーションをエンド・ユーザのウェブ・アプリケーションのために提供することが可能となり、それにより、ユーザのウェブ経験はより豊富で興味深いものとなる。
【００６１】
言うまでもなく、上記の利点以外にも他の利点が存在し得るが、それらを１つずつ列挙はしない。
【００６２】
本発明の例示的な実施形態に従い、図２に示されるシステム及びその構成要素の機能、並びに対応する方法の処理フローに関しての説明が、図５乃至図７において示されるフローチャートと併せて提示されるが、当業者であれば、上記のシステム・ブロック図及び処理フローチャートは単なる例であり、本発明の本質及び範囲から逸脱することなく、設計の要件及び実用上の要件に応じて、これに対して種々の変更を為すことができることを認識する。例えば、サーバ・イメージとデスクトップ・アプリケーション・インストール用ソフトウェアとが図２に示されるように１つのイメージ及びソフトウェア・リポジトリ５００内に格納されるが、これらをそれぞれ異なったリポジトリに格納することもできる。図６に示されるステップＳ６３０において、代替法として、デスクトップ・アプリケーション対話中に修正又は更新されたファイルを、ホスティング・サーバが何らかの予期せぬ理由でクラッシュした後でこれらのファイルが失われることを防止するために、元の位置ではなくウェブ・サーバ２１０上の一時的位置に複製することもできる。さらにまた、図６及び図７に示されるフローチャートと併せて説明されたプロセスは、ユーザによって「サーバ・イメージを保存する」というオプションが選択されたという前提に基づくものである。しかしながら、本発明は、「サーバ・イメージを保存する」というオプションが選択されない状況にも適用することができる。この場合、図２に示されるリポジトリ５００は、サーバ・イメージを保存する必要はなく、図示されたフローチャート内の幾つかの判定ステップもまた抜かすことができる。さらに、図７に示されるステップＳ７１５において、当業者であれば、明確に示されてはいないが、割り当てられるホスティング・サーバは現実の独立した物理サーバとすることもでき、又は多数のユーザによって共有される仮想サーバとすることもできることを理解すべきである。もちろん、他の代替法も存在し得るが、それらを１つずつ列挙はしない。
【００６３】
添付の図面において、本発明の例示的な実施形態による方法のかならずしも完全なフローチャートが提示されているわけではないが、当業者であれば、対応するフローチャートを、本発明の文章による説明及び図５乃至図７のフローチャートに基づいて、努力を要することなく描くことができることは明らかである。
【００６４】
さらにまた、上述された本発明による方法の操作手順は、種々の機械可読記憶媒体内に格納されたコンピュータ実行可能なプログラムの形態で実装することもできることが明らかである。
【００６５】
さらに、本発明の目的は、上記の実行可能なプログラムのコードが格納された記憶媒体をシステム又は装置に対して直接的に又は間接的に提供し、次いで、そのシステム又は装置のコンピュータ又は中央演算処理装置（ＣＰＵ）によって、そのプログラム・コードを読み出し、実行することによって達成することもできる。
【００６６】
この場合、そのシステム又は装置がプログラムを実行する機能を有する限り、本発明の実装様式はプログラムに限定されるものではなく、そのプログラムも、例えば、目的プログラム、インタープリタによって実行されるプログラム、又はオペレーティング・システムに与えられるスクリプト・プログラムなどのような、いかなる形態であってもよい。
【００６７】
上記の機械可読記憶媒体は、種々のメモリ及び記憶ユニット、半導体デバイス、光、磁気、及び磁気光ディスクといった磁気ディスク・ユニット、並びに情報を格納するのに適した他の媒体などを含むことができるが、これらに限定されるものではない。
【００６８】
さらに、本発明は、クライアント・コンピュータによって、インターネット上の対応するウェブサイトに接続し、本発明によるコンピュータ・プログラム・コードをダウンロードし、それをコンピュータ内にインストールして、その後プログラム・コードを実行することにより、達成することができる。
【００６９】
最後に、本明細書において、左及び右、第１及び第２、などのような関係語（relational word）は、単に１つの実体又は行為を別の実体又は行為から区別するために用いられるに過ぎず、そのような実体又は行為間に現実にそのような関係性又は順序が存在することを必ずしも必要とするものではなく、それを含意するものでもないことにも留意されたい。さらに、「含む（comprise）」、「含んでいる（comprising）」、「含む（include）」という用語又はそれらのいかなる変形も、非排他的な含有をカバーすることが意図されているので、要素の列挙を含むプロセス、方法、物品又は装置は、それらの要素を含むのみならず、明示的に列挙されていない他の要素、又はそのようなプロセス、方法、物品又は装置に固有の他の要素もまた含み得る。「１つの（a 又は an）」が語頭に付された要素は、それ以上の制約がなければ、その要素を含むプロセス、方法、物品又は装置内に付加的に同一の要素が存在することを排除するものではない。
【００７０】
本発明の実施形態を添付の図面を参照して詳細に説明してきたが、これらの実施形態は本発明を説明するためにのみ用いられるものであり、本発明を限定するために用いられるものではないことに留意されたい。当業者であれば、本発明の範囲から逸脱することなく、種々の修正及び変更を行うことができる。したがって、本発明の範囲は、添付の特許請求の範囲及びその均等物によってのみ定められる。
【図１】
2011502291.tif 000003
【図２】
2011502291.tif 000004
【図３】
2011502291.tif 000005
【図４】
2011502291.tif 000006
【図５】
2011502291.tif 000007
【図６】
2011502291.tif 000008
【図７】
2011502291.tif 000009
【図８】
2011502291.tif 000010
【手続補正書】
【提出日】平成22年5月28日(2010.5.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるための方法であって、前記ウェブ・アプリケーションはウェブ・サーバに含まれており、
クライアント・ユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答して、前記ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、前記ユーザに適した対応ホスティング・サーバを決定するステップと、
前記対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングし、前記ターゲット・デスクトップ・アプリケーションを開始するステップと、
前記クライアントと前記対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させるために、前記対応ホスティング・サーバのアドレスを前記クライアントに送信するステップと、
前記デスクトップ・アプリケーション対話の完了に応答して、前記対応ホスティング・サーバ上のターゲット・デスクトップ・アプリケーションを停止して終了するステップと
を含む方法。
【請求項２】
前記対応ホスティング・サーバ及び前記ウェブ・サーバ上の全てのファイルが、前記デスクトップ・アプリケーション対話中に同期化される、請求項１に記載の方法。
【請求項３】
前記対応ホスティング・サーバのサーバ・イメージを格納し、前記ターゲット・デスクトップ・アプリケーションを終了した後で前記対応ホスティング・サーバを解放するステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記ユーザに適した対応ホスティング・サーバを決定する前記ステップが、
現時点においてリソース・プール内に現行のセッションに対するホスティング・サーバが存在する場合、該ホスティング・サーバを前記対応ホスティング・サーバとして決定すること、又は、
存在しない場合、前記ターゲット・デスクトップ・アプリケーション及びそれに必要とされるオペレーション・システム情報に従って、前記リソース・プールから適合するホスティング・サーバを前記対応ホスティング・サーバとして見つけ出すこと
を含む、請求項１から請求項３のいずれか１項に記載の方法。
【請求項５】
前記対応ホスティング・サーバ上にデスクトップ・アプリケーション環境を準備してプロビジョニングする前記ステップが、
前記対応ホスティング・サーバ上に前記ターゲット・デスクトップ・アプリケーションがまだインストールされていない場合、前記ターゲット・デスクトップ・アプリケーションが必要とするオペレーション・システムを必要に応じて前記対応ホスティング・サーバ上にインストールすること、及び
前記ターゲット・デスクトップ・アプリケーションを前記対応ホスティング・サーバ上にインストールすることを含み、
前記ターゲット・デスクトップ・アプリケーションを含む複数のデスクトップ・アプリケーション及びそれらが必要とするオペレーション・システムをインストールするためのソフトウェアが、前記ウェブ・サーバによるアクセスが可能なリポジトリ内に格納されている、請求項４に記載の方法。
【請求項６】
前記ユーザが前記デスクトップ・アプリケーションの使用を初回に要求する場合に、前記送信ステップにおいて、ブラウザ・プラグインが前記クライアントに対して同時に送信され、その結果、前記クライアント側においてユーザ入力をインターセプトし、且つ、前記対応ホスティング・サーバのユーザ・インターフェースを前記クライアント側のウェブ・ブラウザ内に表示するようにさせる、請求項１から請求項３のいずれか１項に記載の方法。
【請求項７】
デスクトップ・アプリケーションとウェブ・アプリケーションとを１つにまとめるためのウェブ・サーバであって、前記ウェブ・サーバは、クライアント及び１つ又は複数のホスティング・サーバと通信することが可能であり、且つ、ウェブ・アプリケーションとデスクトップ・アプリケーション・サービスとを含み、
前記ウェブ・アプリケーションが、前記クライアントのユーザからのターゲット・デスクトップ・アプリケーションの使用を求める要求に応答してデスクトップ・アプリケーション初期化要求を生成し、且つ、デスクトップ・アプリケーション対話の完了に応答してデスクトップ・アプリケーション終了要求を生成し、
前記デスクトップ・アプリケーション初期化要求に応答して、前記デスクトップ・アプリケーション・サービスが、前記ウェブ・サーバ上でデスクトップ・アプリケーション初期化プロセスを開始し、前記ユーザに適した対応ホスティング・サーバを決定し、前記対応ホスティング・サーバが前記ターゲット・デスクトップ・アプリケーションを開始することができるようにその上でデスクトップ・アプリケーション環境を準備してプロビジョニングし、前記対応ホスティング・サーバのアドレスを前記クライアントに送信し、それによって、前記クライアントと前記対応ホスティング・サーバとの間でデスクトップ・アプリケーション対話を成立させ、
前記デスクトップ・アプリケーション終了要求に応答して、前記デスクトップ・アプリケーション・サービスが、前記対応ホスティング・サーバ上の前記ターゲット・デスクトップ・アプリケーションを停止して終了する、
ウェブ・サーバ。
【請求項８】
前記デスクトップ・アプリケーション・サービスが、
ウェブ・アプリケーションからの要求を受信し、これに応答するための要求ハンドラと、
前記ユーザのセッション情報を維持し保存するためのセッション・マネージャと、
前記１つ又は複数のホスティング・サーバに対するリソース割当て及び解放の管理を実行するためのリソース・マネージャと、
前記ホスティング・サーバ環境を準備してプロビジョニングするために、前記１つ又は複数のホスティング・サーバ上にリモート・システムを自動的にインストールするための配備コントローラと
をさらに含み、
前記デスクトップ・アプリケーション初期化要求に応答して、前記要求ハンドラが、前記セッション・マネージャをチェックして、現行セッションのために作動中のホスティング・サーバが存在するか否かを判定し、存在しない場合には、前記要求ハンドラが、前記リソース・マネージャに対して、前記ターゲット・デスクトップ・アプリケーション及びそれに必要とされるオペレーション・システム情報に従って、適合するホスティング・サーバを前記１つ又は複数のホスティング・サーバの中から前記対応ホスティング・サーバとして決定することを要求し、
前記デスクトップ・アプリケーション終了要求に応答して、前記要求ハンドラが、前記配備コントローラに対して前記対応ホスティング・サーバをクリアすることを依頼し、且つ、前記リソース・マネージャに対して前記対応ホスティング・サーバを解放することを依頼する、
請求項７に記載のウェブ・サーバ。
【請求項９】
前記デスクトップ・アプリケーション・サービスが、前記デスクトップ・アプリケーション対話中に前記ウェブ・サーバ及び前記対応ホスティング・サーバ上の全てのファイルを同期化させるように前記対応ホスティング・サーバと通信することが可能なファイル・コントローラをさらに含む、請求項８に記載のウェブ・サーバ。
【請求項１０】
前記配備コントローラが、前記ターゲット・デスクトップ・アプリケーションの終了後に、前記対応ホスティング・サーバのイメージをリポジトリ内に格納する、請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１１】
前記ターゲット・デスクトップ・アプリケーションが前記対応ホスティング・サーバ上にインストールされていない場合、前記配備コントローラが、前記ターゲット・デスクトップ・アプリケーションが必要とするオペレーション・システムを必要に応じて前記対応ホスティング・サーバ上にインストールし、且つ、前記ターゲット・デスクトップ・アプリケーションをインストールし、前記ターゲット・デスクトップ・アプリケーションを含む複数のデスクトップ・アプリケーション及びそれらのオペレーション・システムをインストールするためのソフトウェアが、リポジトリ内に格納されている、
請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１２】
前記ユーザが前記デスクトップ・アプリケーションの使用を初回に要求する場合に、前記ウェブ・アプリケーションが、前記対応ホスティング・サーバのアドレスの送信中に同時にブラウザ・プラグインを前記クライアントに対して送信し、その結果、前記クライアント側においてユーザ入力をインターセプトし、且つ、前記対応ホスティング・サーバのユーザ・インターフェースが前記クライアント側のウェブ・ブラウザ内に表示するようにさせる、請求項７から請求項９のいずれか１項に記載のウェブ・サーバ。
【請求項１３】
請求項１から請求項６に記載の何れか１つの方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【国際調査報告】
2011502291.tif 000011
2011502291.tif 000012
2011502291.tif 000013