(57)【要約】ユーザをサーバファームのデプロイメントにおける彼の全てのリソース（例えば、リモートデスクトップまたはリモートアプリケーション）に接続するための技術が開示されている。ユーザのクライアントは、デプロイメントにユーザの切断されたリソースおよび／または異なるクライアントと通信しているアクティブなリソースを要求するメッセージを送信する。デプロイメントはそれらのリソースが何であるかを判定し、冗長な情報（例えば２つのリソースが同じセッション内で実行されるリモートアプリケーションであること）を取り除いた後、再接続したクライアントに取り除かれたリストを送信する。クライアントは最初にＶＭでないリソースに再接続し、そのログイン中に入力を促されたユーザ入力（例えば認証情報）を格納する。クライアントは、後の再接続において第１の再接続時にクライアントから受信した入力を使用して、並行して他のリソースに再接続する。
2013543617.tif 000002
【特許請求の範囲】
【請求項１】
複数のリモートセッションにクライアントを再接続する方法であって、
クライアントとの第１のリモートセッションおよび第２のリモートセッションを確立するステップと、
前記第１および第２のリモートセッションが切断された後に、ユーザのために切断されたセッションを再接続するための要求をユーザから受信するステップと、
ユーザが第１の切断されたセッションおよび第２の切断されたセッションを有することを判定するステップと、
第１のリモートセッションに再接続する方法についての情報を含む第１のリモートデータおよび第２のリモートセッションに再接続する方法についての情報を含む第２のリモートデータをユーザに送信し、第１および第２のリモートデータの受信に応答して、クライアントが第１および第２の切断されたセッションに再接続するために第１および第２のリモートデータを使用するステップと
を備えることを特徴とする方法。
【請求項２】
前記リモートセッションは、第１の切断されたリモートアプリケーションおよび第２の切断されたリモートアプリケーションを備え、
ユーザに第１のリモートデータを送信することは、
第１のリモートデータの受信に応答して、ユーザが第１の切断されたリモートアプリケーションおよび第２の切断されたリモートアプリケーションへの再接続のために第１のリモートデータを使用するように、第１のリモートデータをユーザに送信することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
ユーザと第１のリモートリソースを確立することは、
第１のコンピュータでユーザと第１のリモートセッションを確立することを含み、
第１のリモートデータをユーザに送信することは、
第２のコンピュータにおいて第１のリモートデータをユーザに送信することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
リモートセッションは、リモートデスクトップ、リモートアプリケーション、またはプールされた仮想マシン（ＶＭ）を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記方法は、接続ブローカによって実行され、
第１の切断されたセッションに再接続するためのユーザからの要求を接続ブローカによって受信するステップであって、前記要求は、第１のリモートデータで作成され、ゲートウェイに向けられ、サーバファームを指定する、ステップと、
第１の切断されたセッションを有するサーバファームのマシンを決定するステップと、
ユーザと第１の切断されたセッションを再接続するためにマシンにインジケーションを送信するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記方法は、接続ブローカによって実行され、ユーザのために切断されたセッションを再接続するためのユーザからの要求を受信することは、
接続ブローカに要求を送信する前にユーザの認証情報を検証する要求プロキシに送られた要求を接続ブローカによって受信することを含むことを特徴とする請求項１に記載の方法。
【請求項７】
クライアントが切断されていない新しいリモートリソースに接続する要求をクライアントから受信するステップと、
クライアントにリモートリソースを提供するサーバファーム上のマシンを判定するステップと、
判定されたマシンの識別子をクライアントに送信するステップと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータ可読命令を格納するコンピュータ可読記憶媒体であって、
前記コンピュータ可読命令は、コンピュータによって実行されると、前記コンピュータに、
クライアントを前記クライアントに関連付けられている各々の切断されたリモートセッションに再接続するために接続ブローカにインジケーションを送信するステップと、
第１のリモートデータと第２のリモートデータを受信するステップであって、各々のリモートデータは、切断されたリモートセッションに再接続するための情報を含む、ステップと、
第１の切断されたリモートセッションは仮想マシン（ＶＭ）によって提供されたリモートセッションではないとの判定に応答して、第１のリモートデータによって示される第１の切断されたリモートセッションについての再接続要求を送信するステップと、
第１の切断されたリモートセッションに再接続した後、第２のリモートデータによって示される第２の切断されたリモートセッションに再接続するステップと
を備える方法を実行させることを特徴とするコンピュータ可読記憶媒体。
【請求項９】
コンピュータ可読命令をさらに格納し、前記コンピュータ可読命令は、コンピュータによって実行されると、前記コンピュータに、
第３のリモートデータを受信するステップと、
第２の切断されたリモートセッションに再接続することと並行して第３のリモートデータによって示される第３の切断されたリモートセッションに再接続するステップと
を備える方法を実行させることを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１０】
コンピュータ可読命令をさらに格納し、前記コンピュータ可読命令は、コンピュータによって実行されると、前記コンピュータに、
ユーザ入力が再接続するために必要であると判定されたことに応答してユーザ入力を求める要求を表示するステップと、
ユーザ入力を受信するステップと、
を備える方法を実行させ、
第２の切断されたリモートセッションに再接続することは、
ユーザ入力で第２の切断されたリモートセッションに再接続することを含むことを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１１】
第１の切断されたリモートセッションが始めに第１のクライアントコンピュータとの間で確立され、前記第１の切断されたリモートセッションに再接続することは、第２のクライアントコンピュータによって実行されることを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１２】
接続ブローカによって管理される、ユーザが有する各々の切断されたリモートセッションをユーザに再接続するインジケーションを接続ブローカに送信することは、
第１または第２の切断されたリモートセッションを参照しないユーザ入力を受信することを含むことを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記ユーザ入力を受信することは、ボタンの押下やリンクのクリックを受信することであって、前記ボタンまたはリンクは、リモートセッション上でどのリモート処理アプリケーションにも関連付けられていない、ことを備えることを特徴とする請求項１２に記載のコンピュータ可読記憶媒体。
【請求項１４】
コンピュータ可読命令をさらに格納し、前記コンピュータ可読命令は、コンピュータによって実行されると、前記コンピュータに、
第１の切断されたリモートセッションに再接続している間に、ユーザに表示される第１メッセージを判定するステップと、
第２の切断されたリモートセッションに再接続している間に、ユーザに表示される第２のメッセージを判定するステップと、
第２の切断されたリモートセッションに再接続した後に、第１のメッセージと第２のメッセージを備える統一メッセージをユーザに表示するステップと
を備える方法を実行させることを特徴とする請求項８に記載のコンピュータ可読記憶媒体。
【請求項１５】
第１の切断されたリモートセッションは、第１の処理によって再接続され、第２の切断されたリモートセッションは、第２の処理によって再接続され、
第１の処理で第１の通信パイプを、および第２の処理で第２の通信パイプを確立するステップと、
第１の通信パイプを介して第１の処理から第１のメッセージを受信するステップと、
第２の通信パイプを介して第２の処理から第２のメッセージを受信するステップと
をさらに備えることを特徴とする請求項１４に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のリモートサーバに統一された再接続を行うことに関する。
【背景技術】
【０００２】
リモートデスクトッププロトコル（ＲＤＰ）、リモートデスクトップセッションホスト（ＲＤＳＨ）、ターミナルサービス、およびリモートデスクトップサービス（ＲＤＳ）などのリモートプレゼンテーション技術を使用して、コンピュータのデスクトップとアプリケーションをリモートクライアントと共有することが一般的であった。このような共有コンピューティングシステムは、通常、サーバ上のリモートプレゼンテーションセッションのためのユーザセッションをインスタンス化することを介して確立される。サーバの画面がセッションのクライアントと共有される場合、リモートプレゼンテーションセッションは、サーバに対してローカルであるコンソールセッションからその情報を取得する。リモートプレゼンテーションセッションの間、クライアントは、キーボード押下、マウスのクリックや選択をサーバに送信し、サーバは、ネットワーク接続（例えば、インターネット）を介して逆方向に画面の更新をクライアントに送信する。従って、実際にはアプリケーションのスクリーンショットがサーバ側で表示されるとともにクライアントコンピュータに送信されるのみであるときに、クライアントのユーザは自身のコンピュータがローカルにアプリケーションを実行しているような経験をする。
【０００３】
ある種のリモートプレゼンテーションシナリオでは、デスクトップ全体がクライアントにリモート接続される。例えば、仮想デスクトップセッションにおいて、単一のユーザが仮想マシン内で実行されているオペレーティングシステムに接続し、デスクトップ全体がクライアントにリモート接続される。リモートデスクトップセッションにおいては、複数のユーザが単一のオペレーティングシステムに接続し、ユーザインターフェースが、クライアントにリモート接続される。他のリモートプレゼンテーションシナリオでは、特定のアプリケーションがクライアントにリモート接続される。この第２のシナリオは時々“アプリケーションリモーティング”と呼ばれる。リモート処理アプリケーションには、管理が容易であること、実行することが必要な処理がより少ないためクライアントを安価にすることが可能であること、アプリケーションがそのデータソース近くで実行される可能性があること、などの多くの利点がある。クライアントが同時に複数のリモートアプリケーションにアクセスしている場合、クライアントは、クライアントが加わっているリモートプレゼンテーションセッションよりも、クライアントがアクセスしているリモートリソースを参照することが適切であるかもしれない。これは、単一のサーバファームがクライアントに２つのリモートアプリケーションを提供している場合、これらのリモートアプリケーションは両方ともサーバファーム上の同じセッション内で実行することができ、サーバファームとの単一のリモートプレゼンテーションセッションの一部とすることができるためである。本明細書では、「リモートリソース」は、リモートアプリケーション、リモートデスクトップ、仮想デスクトップ等を指すことができる。
【発明の概要】
【０００４】
同時に複数のリモートリソースにアクセスするための技術を提供することは改善になるであろう。
【０００５】
例えば、ユーザが第１のクライアントコンピュータから同時に複数のリモートリソースにアクセスし、次に別のクライアントコンピュータに移動してから、あるいは切断されて、第１のクライアントコンピュータに再接続しようとするときは、ユーザは自身のリモートリソースの全てを取り戻すことが難しいかもしれない。ユーザは、自身が使用していたリモートリソースの全てを取り戻すことができるためには、自身がどのサーバに接続していたか、または自身がどのアプリケーションを使っていたかを知っておく必要がある可能性がある。これは理想的な状況ではなく、ユーザが多くのリモートリソースを操作することが難しくなる。
【０００６】
ユーザがリモートセッション用の特定のサーバに接続すると、そのサーバ上でそのユーザについて実行している全てのリモートアプリケーションが、ユーザにリモート接続されて、ユーザは、そのサーバ上のワークスペースからのアプリケーションに再接続される。これは、例えば、ユーザがリモート処理アプリケーションを実行するサーバ上で１セッションを与えられる実施形態において事実であり、これらのリモート処理アプリケーションのためのウィンドウ（ただし、セッションに関連付けられたデスクトップではない）がユーザに送信される。この例では、接続はセッションとのものであり、全てのリモート処理アプリケーションは、そのセッションの一部であり、セッションへの１つの再接続はリモート処理アプリケーションの全てに再接続する結果になる。このようなそれぞれのリモート処理アプリケーションが別々のユーザセッションで実行されている場合など、他のシナリオでは当てはまらない可能性がある。
【０００７】
ここで、ワークスペースのリモート処理アプリケーションが複数のサーバにまたがっている場合、単一のリモート処理アプリケーションに再接続することは、リモート処理アプリケーションの全てに再接続されることにはならない。
【０００８】
更に別の問題は、複数のサーバへの再接続時に、ユーザにユーザ名、パスワード、または種々の異なるエラー条件等の入力を求める複数のプロンプトが表示される場合があるということである。各プロンプトがユーザとの対話を必要としていて、ユーザエクスペリエンスのシームレス性を低下させるため、これらの複数のプロンプトを見ることは、ユーザエクスペリエンスに否定的に影響する場合がある。
【０００９】
本発明の方法は、ユーザが、使用している任意のコンピュータから使用していた全てのリモートのリソースに自動的に再接続できるようにするシナリオを作成することによって、これらの問題を解決している。一実施形態では、ユーザが第１のコンピュータ上にワークスペースを持っている。ワークスペースは、クライアントコンピュータによって受信したもの及びリモートデスクトップＷｅｂ接続（「ＲＤＷｅｂ」）サーバ等のサーバコンピュータからのものの１つまたは複数のリモートリソースである。リモートリソースは、さまざまなリモートプレゼンテーションサーバから、またはリモートプログラム（例えばローカル統合リモートアプリケーション−ＲＡＩＬ−プログラム）経由でデスクトップ仮想化ホストコンピュータ（リモートデスクトップ仮想化ホスト−ＲＤＶＨ−仮想マシン等）から来るものであり得る。ワークスペースを管理するクライアントコンピュータ上のプロセスは、ＳＯＡＰ（Simple Object Access Protocol）を使用してＷｅｂサービスに接続するための識別子を保持している。この識別子は、例えば、クライアントコンピュータがワークスペースにサブスクライブしたときにダウンロードされるＸＭＬ（extensible markup language）フィードに含まれているＷｅｂサービスのロケーションについてのＵＲＬ（Uniform Resource Locator）であっても良い。クライアントは、ユーザがフィードにサブスクライブしたときに、サーバから送信されたＣｏｏｋｉｅを使用してＷｅｂサービスに対して自分自身を認証することも可能である。Ｗｅｂサービスでは、ユーザを認証し、ユーザのＩＤを取得するためにＣｏｏｋｉｅを使用する。Ｗｅｂサービスは、集中パブリッシングサービスにワークスペースおよびユーザ識別子を送信するためにリモートプロシージャコール（ＲＰＣ）を使用する。集中パブリッシングサービスは、そのユーザＩＤとワークスペースに関連付けられたセッション（切断されたセッション及び／または異なるマシンに接続されているアクティブなセッション）のリストを取得すべくセッションブローカに照会するために、この情報を使用する。その後、集中パブリッシングサービスは、セッション及び／または別のマシンに接続されているアクティブなセッションを有している個々のマシンに関連付けられている複数のリモートプレゼンテーションファイルをマッチさせ、再接続を示すように、各リモートプレゼンテーションファイルを変更する。集中パブリケーションサービスは、変更されたリモートプレゼンテーションファイルのそのリストをＷｅｂサービスに返し、後者はクライアントコンピュータ上のワークスペースプロセスに、このリストを返す。
【００１０】
ユーザのコンピュータがリモートプレゼンテーションファイルを持つと、クライアントコンピュータとリモートサーバ間の再接続処理が開始される。各接続は、新しいプロセス（例えば、ＭＩＣＲＯＳＯＦＴ（登録商標）ＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムのバージョンにおけるｍｓｔｓｃ.ｅｘｅ。ｍｓｔｓｃ.ｅｘｅは他のコンピュータとリモートプレゼンテーション接続を行うために設定される）を開始する。実行すべき複数の接続があるかもしれないが、最初に一つの接続が他の接続の前に行われる。ユーザ名とパスワードのプロンプトなどのように、接続の全てに共通するプロンプトの条件があるかもしれないため、最初に単一の接続が行われる。最初に一つの接続のみ実行することにより、そのようなプロンプトが一つだけであるかもしれず、この情報は他の全ての接続のために使用することができるようになる。単一の接続が行われた後、他の接続を並列に行うことができる。
【００１１】
リモートアプリケーションに再接続するときに、再接続を確立するクライアント上のプロセスが新しいアプリケーションを起動するパケットを飛ばし（またはあるいは、この再接続要求とは対照的に、接続要求の過程で送るパケットを送信せず）、それによって新しいアプリケーションを起動せずに（このプロセスのインスタンスは接続／再接続のためにそれぞれ別々にインスタンス化することができる）、そのサーバ上のリモートリソースにユーザを再接続する。再接続処理中、クライアントプロセスインスタンスから再接続を管理するワークスペースランタイムへの通信チャネルを確立することにより、ユーザプロンプトを最小限に抑えることができる。このチャネルを介してエラー状態が、ワークスペースランタイムに送信され、ユーザへの単一のプレゼンテーションにおいて複数の再接続処理インスタンスから受け取られるとともにそこで収集されるようにしても良い。
【００１２】
本技術を使用する場合、ユーザがどのサーバ上でそれが実行されていたか、あるいは彼または彼女がどのアプリケーションやデスクトップを実際に使っていたかを知らなくても、ワークスペース内の彼または彼女のリモートリソースに再接続することができる。さらに、最初の再接続を直列化し、ユーザインターフェースを統一することで、再接続でのユーザエクスペリエンスがよりシームレスになる。
【００１３】
なお、本発明の１つまたは複数の様々な態様は、明細書中で参照した本発明の態様を実現するための回路および／またはプログラミングを含み、それらには限定されないことは当業者には理解される。かかる回路および／またはプログラミングは、システム設計者の設計上の選択に応じて、本明細書で参照した態様を実現するように構成されたハードウェア、ソフトウェアおよび／またはファームウェアの事実上任意の組み合わせとすることができる。
【００１４】
上記は概要であり、従って、必然的に単純化、一般化、及び詳細の省略が含まれる。当業者は、要約は単なる例示であり、いかなる方法でも限定的であることは意図されていないことを理解するであろう。
【図面の簡単な説明】
【００１５】
クライアントのリモートリソースに再接続するためのシステム、方法およびコンピュータ可読媒体は、添付図面を参照しながら更に説明されている。
【図１】本明細書に記載した技術を具現化することができる汎用コンピューティング環境を示す。
【図２】クライアントが複数のサーバとのリモートセッションを含むワークスペースを有するシステムの例を示す。
【図３】ワークスペースのリモートリソースに再接続するクライアントのための通信フローの例を示す。
【図４】ワークスペースのリモートリソースへのクライアントの再接続に関係するクライアント、要求プロキシと接続ブローカのサブコンポーネントの例を示す。
【図５】サーバファームの複数のリモートサーバとの接続を含むワークスペースへの再接続のためのクライアントからの要求を処理する接続ブローカのための例示的な操作手順を示す。
【図６】サーバファームの複数のリモートサーバにワークスペースを再接続するクライアントの例示的な操作手順のフローを示す。
【図７Ａ】再接続処理におけるクライアントの例示的なユーザインターフェース要素を示す。
【図７Ｂ】再接続処理におけるクライアントの追加の例示的なユーザインターフェース要素を示す。
【図７Ｃ】再接続処理におけるクライアントの追加の例示的なユーザインターフェース要素を示す。
【発明を実施するための形態】
【００１６】
実施形態は、１つまたは複数のコンピュータシステム上で実行してもよい。図１および以下の説明は、開示された主題を実施することが可能な適切なコンピューティング環境の簡単な一般的な説明を提供することを意図している。
【００１７】
明細書全体を通して使用される回路という用語は、例えば、ハードウェア割り込みコントローラ、ハードドライブ、ネットワークアダプタ、グラフィックプロセッサ、ハードウェアベースのビデオ／オーディオコーデック、およびそのようなハードウェアを動作させるために使用されているファームウェア等のハードウェア構成要素を含むことができる。回路という用語はまた、マイクロプロセッサ、特定用途向け集積回路、および／または、例えば、ファームウェアおよび／またはソフトウェアから読み出された命令によって構成されたマルチコアジェネラルプロセッシングユニットの１つ以上のコア等の一つ以上のプロセッサを含むことができる。プロセッサは、例えば、ＲＡＭ、ＲＯＭ、ファームウェアおよび／または大容量ストレージなどのメモリからロードされる機能を実行するように動作可能なロジックを具現化する命令によって構成することができる。回路がハードウェアとソフトウェアとの組み合わせを含む実施例では、実装者は、プロセッサによって実行可能な機械可読コードにその後コンパイルされるロジックを具現化したソースコードを書き込むことができる。当業者は、ハードウェア実装された機能またはソフトウェア実装された機能の間に差が殆ど無いような点まで技術水準が進化していることを理解することができ、本明細書で説明される機能を達成するためのハードウェアとソフトウェアの選択は、単に設計上の選択である。換言すれば、当業者は、ソフトウェア処理が同等のハードウェア構成に変換可能であり、ハードウェア構成はそれ自身を同等のソフトウェアプロセスに変換可能であることを理解することができ、ソフトウェア実装に対するハードウェア実装の選択は実装者に任されている。
【００１８】
図１には典型的な汎用コンピューティングシステムが示されている。汎用コンピューティングシステムは、少なくとも１つのプロセッサまたは処理装置２１と、システムメモリ２２と、システムが動作状態にあるときシステムメモリを含む様々なシステム構成要素を処理装置２１に通信可能に接続するシステムバス２３とを含む従来のコンピュータ２０等を含むことができる。システムバス２３は、メモリバスまたはメモリコントローラ、周辺バスおよび様々なバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。システムメモリは、読み出し専用メモリ（ＲＯＭ）２４、ランダムアクセスメモリ（ＲＡＭ）２５を含むことができる。起動時などにコンピュータ２０の内部の要素間で情報を転送するのを補助する基本ルーチンを含む基本的な入力／出力システム２６（ＢＩＯＳ）は、ＲＯＭ２４に格納されている。コンピュータ２０は、さらにハードディスク（図示せず）からの読み取りまたは書き込みのためのハードディスクドライブ２７、リムーバブル磁気ディスク２９からの読み取りまたは書き込みのための磁気ディスクドライブ２８、およびＣＤ−ＲＯＭまたは他の光媒体などのリムーバブル光ディスク３１からの読み取り及び書き込みのための光ディスクドライブ３０を含むことができる。ハードディスクドライブ２７、磁気ディスクドライブ２８および光ディスクドライブ３０はそれぞれハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３および光ドライブインターフェース３４によってシステムバス２３に接続されているところが示されている。ドライブおよびそれらの関連付けられたコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータ２０のための他のデータの不揮発性ストレージを提供する。本明細書中に記載の例示的な環境は、ハードディスク、リムーバブル磁気ディスク２９およびリムーバブル光ディスク３１を採用しているが、フラッシュメモリカード、デジタルビデオディスク、ＲＡＭ、ＲＯＭ等のようにコンピュータによってアクセス可能なデータを格納することができるコンピュータ読み取り可能な他のタイプのメディアが例示的な動作環境でも使用することができることは、当業者によって理解されるべきである。一般に、このようなコンピュータ読み取り可能な記録媒体は、本開示の態様を具体化するプロセッサが実行可能な命令を格納するためにいくつかの実施形態で使用することができる。
【００１９】
コンピュータ可読命令を含むいくつかのプログラムモジュールは、オペレーティングシステム３５、１つ以上のアプリケーションプログラム３６、他のプログラムモジュール３７およびプログラムデータ３８を含んで、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４やＲＡＭ２５のようなコンピュータ可読媒体に格納されてもよい。処理装置によって実行されるとき、コンピュータ可読命令は、以下でより詳細に説明されるアクションを発生させ、あるいは様々なプログラムモジュールをインスタンス化させる。ユーザは、キーボード４０やポインティングデバイス４２などの入力デバイスを介してコンピュータ２０にコマンドおよび情報を入力することもできる。その他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディスク、スキャナ等を含むことができる。これらおよび他の入力デバイスは、システムバスに結合されたシリアルポートインターフェース４６を介して処理装置２１に接続されているけれども、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続することもできる。表示装置４７または他のタイプの表示装置も、ビデオアダプタ４８などのインターフェースを介してシステムバス２３に接続することができる。ディスプレイ４７に加えて、コンピュータは通常、スピーカやプリンタなど他の周辺出力装置（図示せず）を含む。図１の例示的なシステムはまた、ホストアダプタ５５、ＳＣＳＩ（Small Computer System Interface）バス５６、およびＳＣＳＩバス５６に接続された外部記憶装置６２を備える。
【００２０】
コンピュータ２０は、リモートコンピュータ４９などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ４９は、別のコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワークノードであってもよく、メモリ記憶装置５０のみが図１に示されているけれども通常、コンピュータ２０に関連して上述した多くのまたは全ての要素を含むことができる。図１に示す論理接続１は、ローカルエリアネットワーク（ＬＡＮ）５１およびワイドエリアネットワーク（ＷＡＮ）５２を含むことができる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００２１】
ＬＡＮネットワーク環境で使用する場合は、コンピュータ２０は、ネットワークインターフェースまたはアダプタ５３を介してＬＡＮ５１に接続することができる。ＷＡＮネットワーキング環境で使用する場合は、コンピュータ２０は、典型的には、モデム５４またはインターネットなどの広域ネットワーク５２を介して通信を確立するための他の手段を含めることができる。モデム５４は、内蔵でも外付けでもよく、シリアルポートインターフェース４６を介してシステムバス２３に接続することができる。ネットワーク環境では、コンピュータ２０、またはその一部に関して示したプログラムモジュールは、リモートメモリ記憶装置に格納することができる。示されているネットワーク接続は例示にすぎず、コンピュータ間の通信リンクを確立するための他の手段を用いることができることが理解されよう。本発明の多数の実施形態は、特にコンピュータシステムに適していることを想定しているけれども、さらに、本明細書では、開示をこのような実施形態に限定することを意図していない。
【００２２】
図２は、クライアントが複数のサーバとのリモートセッションを含むワークスペースを有するシステムの例を示している。
【００２３】
図２に示すコンピュータは、図１に示したコンピュータと同様であって良い。図２において、クライアント２０２は、要求プロキシ２０４、接続ブローカ２０６、ゲートウェイ２０８、リモートアプリケーションサーバファーム２１４（同一に設定された２つのサーバ、リモートのアプリケーションサーバ２１６ａ-ｂを含む）、およびＶＭサーバファーム２１０（同一構成の２つのＶＭ、ＶＭ２１２ａ-ｂを含む）を含むデプロイメント２００と通信する。
【００２４】
クライアント２０２は、１つまたは複数のリモートアプリケーションサーバ２１６とＶＭ２１２からサービスを提供される複数のリモートリソースから構成されるワークスペースを有する。クライアント２０２は、要求プロキシ２０４を介して、そのワークスペースにログインすることができる。いったん認証されると、クライアントのそのワークスペースに接続するための要求が要求プロキシ２０４から接続ブローカ２０６に送信される。接続ブローカ２０６は、クライアント２０２と、クライアント２０２にリモートリソースを提供するアプリケーションサーバ２１６およびＶＭ２１２との間のブローカ接続を行うように構成されており、これを達成するために、接続ブローカ２０６は現在提供しているリソース（クライアント２０２のユーザのための切断されたセッションを含む）が何であるかを決定するために、アプリケーションサーバ２１６及びＶＭ２１２と通信するように構成されている。
【００２５】
クライアント２０２は、リモートアプリケーションサーバ２１６ａからのリモートアプリケーションを含むリモートリソースおよびＶＭ２１２ａからのＶＭを含むリモートリソースである複数のリモートリソースから構成されたワークスペースを有していても良い。図示のように、クライアント２０２は、リモートアプリケーションサーバ２１６ｂまたはＶＭ２１２ｂを伴うリモートリソースを有していない。これらは、それぞれが異なるアプリケーションやデスクトップ、アプリケーションのバージョン、または他の用例をサービスすることができる。例えば、リモートアプリケーションサーバ２１６ａはリモート処理ワードプロセッサアプリケーションでクライアント２０２にサービスを提供することができ、ＶＭ２１２は、仮想デスクトップでクライアント２０２にサービスを提供することができる。
【００２６】
この描写から分かるように、ユーザが自分のワークスペースに再接続しようとする場合、彼は１つのコマンドを２回行うのではなく、１つのコマンドを介してリモートのアプリケーションサーバ２１６ａとＶＭ２１２ａの両方のリモートリソースに再接続することを望むかもしれない。ユーザは、クライアント２０２から、または別のクライアントコンピュータ（クライアント２０２が、ユーザが仕事をしているコンピュータで、ユーザが週末に自宅のコンピュータから再接続したい場合など）からこの再接続操作を実行できる。
【００２７】
図３は、クライアントがワークスペースのリモートリソースに再接続するための通信フローの例を示している。
【００２８】
図３は、クライアントが複数のサーバとのリモートセッションを含むワークスペースを再接続する場合のシステム内の通信フローの例を示している。この通信フローは、図２に示したコンピュータシステム等のシステム内で達成することができる。即ち、図３のリモーデプロイメント３００、クライアント３０２、要求プロキシ３０４、接続ブローカ３０６、ゲートウェイ３０８、ＶＭファーム３１０およびＶＭ３１２ａは、図２のリモートデプロイメント２００、クライアント２０２、要求プロキシ２０４、接続ブローカ２０６、ゲートウェイ２０８、ＶＭファーム２１０、ＶＭ２１２ａのそれぞれと同様のものとすることができる。
【００２９】
クライアント３０２のユーザは以前にＶＭ３１２ａからリモートリソースへのアクセスに関与していたワークスペースを有していたが、このワークスペースは現在切断されている。代替的な実施形態では、クライアント３０２のユーザは、ＶＭ３１２ａに接続された別のクライアントで以前に作業していた可能性があり、ユーザが再接続したい時に、このワークスペースはまだアクティブになっている。クライアント３０２のユーザがデプロイメント３００への再接続を試行する前に、要求プロキシ３０４は、クライアント３０２がデプロイメント３００のリモートリソースにアクセスするのに使用することができるデプロイメント３００についての情報を識別する文書を（通信（１）を介して）クライアント３０２に発行する。クライアント３０２は後に、要求プロキシ３０４に通信（２）を送信することによって再接続する。要求プロキシ３０４は、ユーザおよび／またはクライアントの認証情報（ログインやパスワードなど）を検証する。認証情報が確認された場合には、要求プロキシ３０４はそのワークスペースを再接続する際にクライアント３０２がどのリモートリソース（ここでは、ＶＭ３１２ａ）に再接続するかを決定するために、接続ブローカ３０６と通信する。要求プロキシ３０４は、接続ブローカ３０６に通信（３）を送信し、それに対して、通信（４）でクライアント３０２が再接続するサーバファームのリスト（ここでは、ＶＭファーム３１０）を受信することによってこの判断を行う。通信（４）で示されたこの情報は、通信（５）で要求プロキシ３０４によってクライアント３０２に渡される。
【００３０】
クライアント３０２が、要求プロキシ３０４からの再接続するサーバのリストを持っている場合、クライアント３０２は、それらのサーバファームのそれぞれとの通信を再確立する。図３に示すようにそのサーバファームは、ＶＭファーム３１０である。クライアント３０２は、これらのサーバファームのリモートリソースにアクセスするためにゲートウェイ３０８との通信（６）を行う。ゲートウェイ３０８は、通信（６）を処理し、続いて同様の情報を伝えるために、接続ブローカ３０６との通信（７）を行う。接続ブローカ３０６は、通信（７）からサーバファームの識別情報を受け取り、そこから、切断されたリモートリソースおよび／またはこのユーザについての異なるクライアントでのアクティブなリモートリソースを有するファーム３１０内のマシン（ＶＭ３１２ａ）を識別する。接続ブローカ３０６はクライアント３０２に通信（８）を送信し、クライアント３０２にＶＭ３１２ａ上のリモートリソースへの再接続を指示する。次に、クライアント３０２は、ゲートウェイ３０８に再接続を示す通信（９）を送信し、ゲートウェイ３０８はＶＭ３１２ａに再接続を示す通信（１０）を送信し、ＶＭ３１２ａに再接続する。
【００３１】
これは本発明を強調するために簡略化した図式であり、そしてより多くのまたはより少ないサーバファームが存在および／または再接続され、渡された通信（例えば、通信（９）、（１０）が、ＶＭ３１２ａおよびクライアント３０２間の間の再接続を確立すること、そこではクライアント３０２から送信された、ゲートウェイ３０８を介したＶＭ３１２ａへの通信を伴うかもしれないことが示されている）がもっと関与している可能性があることが理解されるであろう。
【００３２】
図４は、本技術が使用され得るクライアント、要求プロキシおよび接続ブローカのシステムアーキテクチャの例を示している。図４に示すシステムアーキテクチャは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓオペレーティングシステムの各バージョンで使用されたシステムアーキテクチャに類似している。クライアント４０２、要求プロキシ４０４および接続ブローカ４０６は、それぞれ図２のクライアント２０２、要求プロキシ２０４および接続ブローカ２０６に類似していても良い。クライアントは、ｍｓｔｓｃ４０８とワークスペースランタイム４１４を備えている。次に、ｍｓｔｓｃ４０８は、ｍｓｔｃａｘ４１０およびワークスペースクライアント拡張機能４１２を含み、ランタイムワークスペース４１４は、再接続ユーザインターフェース４１８およびウェブサービスクライアント４１６から構成されている。要求プロキシ４０４は、集中パブリッシングＲＰＣクライアント４２０、ＲＤＷｅｂＳｅｒｖｉｃｅＡｓｐ．ｄｌｌ４２２およびＲＤＷｅｂＳｅｒｖｉｃｅ．ａｓｍｘ４２４を含む。接続ブローカ４０６は、集中パブリッシングサービス４２６、セッションブローカＷＭＩプロバイダ４２８およびセッションブローカサービス４３０を備えている。
【００３３】
ワークスペースランタイム４１４は、クライアント４０２のワークスペースを管理する−それは、ワークスペースのリモートリソースに接続すること、およびワークスペースのリモートリソースに再接続することを管理し、並びにＭＳＴＳＣ４０８のインスタンスに接続または再接続を行わせる。再接続ＵＩ４１８は、クライアント４０２のユーザに再接続を示す入力を行うためのユーザインターフェースを提示する。このユーザインターフェースは、図７Ａで示されているユーザインターフェースであってもよい。ウェブサービスクライアント４１６は、再接続の際のユーザの認証情報の認証のために要求プロキシ４０４と通信するワークスペースランタイム４１４のコンポーネントである。
【００３４】
ＭＳＴＳＣ４０８はリモートリソースに接続または再接続するように構成されている。ＭＳＴＳＣ４０８の１つのインスタンスが１つの接続／再接続を行うことがあるので、ワークスペースランタイム４１４は、複数のリモートリソースに接続／再接続するためにＭＳＴＳＣ４０８の複数のインスタンスをインスタンス化する。ＭＳＴＳＣ４０８は、ｍｓｔｓｃ４０８のためのＡｃｔｉｖｅＸコントロールであるｍｓｔｓｃａｘ４１０を含む。次に、ｍｓｔｓｃａｘ４１０は、ワークスペースクライアント拡張機能４１２を含む。Ｍｓｔｓｃが本発明の技術を考慮せずに実装されたＭＳＴＳＣのバージョンである場合には、ワークスペースランタイム４１４がＭＳＴＳＣ４０８と通信してワークスペースのリモートリソースの再接続を行うようにｍｓｔｓｃ４０８を拡張するためにワークスペースクライアント拡張機能４１２がｍｓｔｓｃ４０８に追加されてもよい。
【００３５】
ＤＭＺ（DeMilitarized Zone）４３２はクライアント４０２が接続ブローカ４０６に直接通信することを防ぐことができる物理的または論理的なサブネットワークを含む。要求プロキシ４０４は、インターネットなどの通信ネットワークを介してクライアント４０２と通信したり、イントラネット上で接続ブローカ４０６と通信したりすることができるようにＤＭＺ４３２にまたがって位置する。
【００３６】
要求プロキシ４０４は、ＲＤＷｅｂＳｅｒｖｉｃｅＡＳＰ．ｄｌｌ４２２とＲＤＷｅｂｓｅｒｖｉｃｅ．ａｓｍｘ４２４を備えており、それらは、連動して、クライアント４０２がログイン認証情報またはその他の入力を提供するのに使用するかもしれないウェブページをクライアント４０２に提供するように構成されているコンポーネントである。要求プロキシ４０４はまた、接続ブローカ４０６からリモートデータファイル（クライアントが該当のリモートリソースを有するサーバファームに再接続する方法についての情報を含むもの）を受信するように構成されている、集中型のパブリッシングリモートプロシージャコール（ＲＰＣ）クライアント４２０を含む。
【００３７】
接続ブローカ４０６はリモートデータファイルを保存し、集中型パブリッシングＲＰＣクライアント４２０にそれを提供するように構成された集中型パブリッシングサービス４２６を備えている。接続ブローカ４０６はまた、サーバファーム内の複数のマシンのうち、どのマシンがユーザに関連付けられた指定のリモートリソースを持っているかを決定するように構成されたセッションブローカサービス４３０を備えている。接続ブローカ４０６はまた、セッションブローカサービス４３０が情報や通知を他のコンポーネントに提供するためのインターフェースを提供するように構成されている接続ブローカのＷＭＩ（WINDOWS Management Instrumentation）プロバイダ４２８を備えている。
【００３８】
図５は、サーバファームの複数のリモートサーバとの接続を含む、クライアントからのワークスペースへの再接続の要求を処理する接続ブローカの動作手順の例を示している。図５の動作手順は、図２の接続ブローカ２０６によって達成することができる。
【００３９】
動作手順は動作５００で開始する。動作５００は、ユーザとの第１のリモートリソースおよび第２のリモートリソースを確立することを示す動作５０２につながる。クライアント２０２に関連付けられているユーザアカウントなどのユーザは、要求プロキシ２０４を介して認証され、次に接続ブローカとリモートリソースを確立するための要求を有することができる。接続ブローカは、クライアントにそのリモートリソースを提供するサーバファームとサーバファーム内のマシンを決定することができる。次に、クライアントは、クライアントの通信を接続ブローカによって決定されたマシンへ送出するデプロイメントのゲートウェイにコンタクトすることができ、次にそのマシンは、クライアントにリモートリソースを提供する。一実施形態では、クライアントコンピュータにおいてユーザとの間で確立されたリモートリソースは、リモートデスクトップ、リモートアプリケーションまたはプールされた仮想マシン（ＶＭ）を備える。接続ブローカはクライアントの再接続要求を処理するだけではなく、最初に、クライアントの接続要求を処理するように構成されている。接続要求を処理するときに、接続ブローカは、クライアントが切断されていない新しいリモートリソースに接続するためのクライアントからの要求を受信し、クライアントへのリモートリソースにサービスを提供するサーバファーム上のマシンを決定し、決定したマシンの識別子をクライアントに送信することができる。
【００４０】
動作５０４は、第１及び第２のリモートリソースがすでに切断された後、切断されたリソースをユーザのために再接続するための要求をユーザから受けることを表している。ユーザは、第１および第２のリモートリソースを確立した後、それらのリソースから切断される場合（前述のように切断されたリソースは、ログオフリソースまたはアクティブなリソースとは区別される）がある。その後ユーザは、接続ブローカが決定可能な切断されたリソースに接続ブローカが再接続するように要求することができる。ユーザは、どのリソースが、もし有れば、再接続されるかについての情報を持っている可能性があるため、ユーザが必ずしも特定の切断されたリソースを指定しなくとも良い。むしろ、ユーザの要求は、切断されたリソースが何であるか、更には切断されたリソースが存在しているかにかかわらず、接続ブローカが認識しているそれらの切断されたリソースに再接続する要求を示している場合があります。
【００４１】
一実施形態では、切断されたリソースをユーザのために再接続する要求をユーザから受信することは、その要求を接続ブローカに送信する前にユーザの認証情報を検証した要求プロキシに向けられていた要求を接続ブローカによって受信することを含む。これは、図２に示したものに類似したシステムアーキテクチャで発生する可能性があり、そこではクライアント２０２は、接続ブローカ２０６に要求を送信する前にユーザの認証情報を検証する認可サーバ２０４にコンタクトする。
【００４２】
動作５０６は、ユーザが第１の切断されたリソースと第２の切断されたリソースを持っていることを判断することを示している。動作５０４の要求は、切断されたリソースが何であるかを指定せず、その切断されたリソースが何であってもクライアントが再接続されることを要求していることだけを指定している。その要求を受信すると、接続ブローカは、サーバファームのために、このケースでは第１の切断されたリソースおよび第２の切断されたリソースである、クライアントの切断されたリソースを決定する。接続ブローカは、例えば、ユーザとの間で確立したリモートリソースのリストを維持し、次にそれらのリモートリソースの一つを提供している／提供していた各マシンにクエリを行って、リモートリソースの状態（例えば、切断、アクティブ、またはログオフ）を判断することによって、これを行うことができる。
【００４３】
動作５０８は第１のリモートリソースに再接続する方法についての情報を含む第１のリモートデータ、及び第２のリモートリソースに再接続する方法についての情報を含む第２のリモートデータをユーザに送信することを示しており、第１及び第２のリモートデータの受信に応じて、ユーザは第１および第２の切断されたリソースへの再接続をするために第１及び第２のリモートデータを使用する。接続ブローカは、リモートリソースを提供するマシンのマシン名または識別子などの、リモートリソースに接続する方法についての情報を維持することができる。第１のリモートデータは、第１のリモートリソースを提供するマシンに再接続するための情報を含むデータであり、第２のリモートデータは、第２のリモートリソースを提供するマシンに再接続するための情報を含むデータである。
【００４４】
一実施形態では、（動作５０２のように）ユーザと第１のリモートリソースを確立することは、第１のコンピュータでユーザと第１のリモートリソースを確立することを含み、第１のリモートデータをユーザに送信することは、第２のコンピュータで第１のリモートデータをユーザに送信することを含む。ユーザは別のクライアントコンピュータでこれらのリモートリソースにアクセスすることができ、元々の接続とは別のコンピュータから再接続しようとしているため、ユーザが再接続を試みるとき彼または彼女のリモートリソースの情報が欠けることにつながる可能性がある。
【００４５】
リモートセッションが第１の切断されたリモートアプリケーションと第２の切断されたリモートアプリケーションを含む実施形態では、動作５０８はユーザに第１のリモートデータを送信することを含み、第１のリモートデータの受信に応答して、ユーザが、第１の切断されたリモートアプリケーションおよび第２の切断されたリモートアプリケーションに再接続するために第１のリモートデータを使用する。ユーザのリモートリソースの切断には、切断されたセッションだけでなく、切断されたリモートアプリケーションが含まれる可能性が有る。図２の接続ブローカ２０６のような接続ブローカが、ユーザが彼または彼女の切断されたリソースに再接続する要求を受け取る場合、接続ブローカはこれらの切断されたセッションを数え上げることができる。ユーザのためのそれら切断されたセッションの一つは、ユーザの一つのリモートデスクトップを含むのではなく、複数のリモートアプリケーションである可能性がある。接続ブローカ２０６がユーザのクライアントにその切断されたリモートセッション用のリモートデータを送信するようなシナリオでは、セッションに再接続することによって、ユーザは、そのセッション内の切断されたリモートアプリケーションのそれぞれに再接続を実施する。
【００４６】
即ち、ユーザが一台のマシンによって提供されている複数のリモートアプリケーションを持っている場合、それらの複数のリモートアプリケーションは全て、そのマシン上の１つのセッション内で実行してもよい。したがって、ユーザがそれらのリモートアプリケーションの一つに再接続する場合には、全てのリモートアプリケーションが実行されるセッションに再接続している。このようなシナリオでは、ユーザはそれらのリモートアプリケーションの各々に再接続する方法の情報を受信する必要はなく（例えば、ユーザは４つのリモートアプリケーション用に４つの別々のリモートデータファイルを受信する必要がない）、一つのリモートアプリケーションへ再接続する方法の情報のみを受信すれば良い。
【００４７】
動作５１０は、ユーザからの第１の切断されたセッションに再接続するための要求であって、第１のリモートデータで作られ、ゲートウェイに送られ、サーバファームを指定する要求を接続ブローカによって受信し、第１の切断されたセッションを有するサーバファームのマシンを判定し、ユーザと第１の切断されたセッションを再接続するためにマシンへのインジケーションを送ることを示している。
【００４８】
動作５１０は、図２のシステムアーキテクチャに似たシステムアーキテクチャで発生する可能性がある。リモートリソースに再接続する方法についての情報のために、クライアント２０２は通信ブローカ２０６（要求プロキシ２０４を介して）にコンタクトする。クライアント２０２は、この情報を持つと、クライアントが接続するサーバファームの識別子で（クライアントはこの識別情報を受信したけれども、サーバファーム内の特定のマシンの識別情報は受信していない）デプロイメントのゲートウェイ２０８にコンタクトする。デプロイメントのゲートウェイ２０８は、その後この情報で接続ブローカ２０６にコンタクトし、接続ブローカ２０６は、識別されたサーバファーム内の切断されたセッションを有する特定のマシンを識別する。
【００４９】
図６は、サーバファームの複数のリモートサーバへワークスペースを再接続するクライアントの動作手順のフローの一例を示している。これらの操作手順は、図２のクライアント２０２によって実施することができる。
【００５０】
図６の動作手順は動作６００で開始する。動作６００は、接続ブローカによって管理される、ユーザが有する切断されたリモートリソースのそれぞれにユーザを再接続するように接続ブローカにインジケーションを送ることを表す動作６０２へと続く。クライアントの表示は、特定のリモートリソース、あるいは再接続されるリモートリソースの数を識別しておらず、リモートリソースが何であっても、単にクライアントが接続ブローカのデプロイメントの任意のおよび／または全てのリモートリソースに再接続することを要求していることを示しているのみである可能性がある。
【００５１】
このように、ユーザのリモートリソースへの再接続を開始するユーザの入力は、特に第１又は第２の切断されたリモートリソースを参照しておらず、切断されたリモートリソースの再接続を一般的に示しているのみである場合がある。一実施形態では、このユーザ入力はリンク上でボタンの押下やクリックを受信することを含み、ボタンまたはリンクはリモートセッションを介してリモート処理する任意のアプリケーションに関連付けられていない。ユーザの再接続のインジケーションは特定のリモートリソースを識別していない可能性があるので、ユーザの入力も同様である。例えば、ユーザの切断されたリモートリソースが、ワードプロセッサやスプレッドシートアプリケーションを含む場合、ユーザの入力は、ワードプロセッサやスプレッドシートのアイコンのいずれかのアイコンをクリックすることを含まず、再接続のため及びそれ自体の、「切断されたリソースに再接続します」のように述べたボタンなどのより一般的なボタンをクリックすることであるかもしれない。
【００５２】
動作６０４は第１のリモートデータと第２のリモートデータを受信することを示しており、各リモートデータは切断されたリモートリソースに再接続するための情報を含んでいる。このリモートデータは、例えば、リモートリソースが提供されるサーバファームの識別子およびそのサーバファームへのゲートウェイの識別子を含んでいてもよい。
【００５３】
一実施形態においては、第１のリモートデータは第１の切断されたリモートリソースを提供していたサーバファーム内のマシンではなく、第１の切断されたリモートリソースのサーバファームを示している。リモートデータは、サーバファーム内の特定のマシンではなくリモートリソースのサーバファームのみを識別することができる。このシナリオでは、クライアントがリモートリソースに再接続するように要求を送信した場合、この要求は、サーバファーム内のどのマシンが切断されたリモートリソースを有するかを判定し、リモートリソースをクライアントに再接続することをそのマシンに指示する接続ブローカに転送される。
【００５４】
動作６０６は、第１の切断されたリモートリソースは仮想マシン（ＶＭ）によって提供されるリモートリソースではないため、第１のリモートデータによって示される第１の切断されたリモートリソースに再接続することによって再接続の開始を決定することを示している。クライアントは、リモートデスクトップ、リモートアプリケーションおよびＶＭを含む複数のリモートリソースへの再接続のためのリモートデータを受信することができる。ＶＭがスリープ状態、メンテナンス状態にあるか、あるいは切断されたリモートリソースをすぐに再接続するために利用できない可能性があるため、ＶＭに再接続することは、リモートデスクトップやリモートアプリケーションへの再接続に比べて長い時間（数分かかる場合がある）がかかることがある。ユーザ入力の必要性が最初の再接続中に収集され、その後保存され、他の全ての再接続で使用されるため、第１のリモートリソースは、他のリモートリソース（動作６０８で示された２番目のリモートリソースなど）に再接続する前に再接続される。第１の再接続がスリープ状態にあるＶＭへの再接続である場合、第１の再接続を順次行ってその後、他の全ては並行して行う（再接続が並行して行われて再接続の一部または全てが、ある一時点において実際に進行中かもしれない）ように再接続を行うことは、全ての再接続を遅くする。
【００５５】
動作６０８は第１の切断されたリモートリソースに再接続した後、第２のリモートデータによって示される第２の切断されたリモートリソースに再接続することを示す。一実施形態において、動作６０８は、第１の切断されたリモートリソースへの再接続中にユーザ入力が再接続するために必要とされることを決定すること、そのユーザ入力を受信することを含み、第２の切断されたリモートリソースに再接続することは、ユーザ入力で第２の切断されたリモートリソースへ再接続することを含む。例えば、ユーザの認証情報が、正しくない場合、有効期限切れの場合、又は別の方法でユーザによって再入力される必要がある場合、ユーザの認証情報は、第１の再接続中に収集された後、格納され、例えば、第２の切断されたリモートリソースに再接続する等の後続の再接続時に再使用される。他の再接続前に一つの再接続を行う際に、ユーザは複数回ではなく一度だけ入力を求められるようにしてもよく、それは複数の再接続が平行して開始するように成されている場合などに行われる可能性がある。
【００５６】
一実施形態では、第１の切断されたリモートリソースが最初に第１のクライアントコンピュータとの間で確立され、第１の切断されたリモートリソースへの再接続は第２のクライアントコンピュータによって実行される。仕事場と彼の居住地の間のように、ユーザは初期の接続と再接続の間でコンピュータを移動してもよい。このため、ユーザは切断されたリモートリソースに関する情報を持っていない可能性があり、それらに再接続する前に接続ブローカからそれらの情報を取得する必要がある。
【００５７】
リモートプロセスが、実行プロトコルデータユニット（ｅｘｅｃ  ＰＤＵ）を含む情報を送信することによってリモートリソースに接続するように構成される実施形態では、第１の切断されたリモートリソースに再接続することはリモートプロセスのインスタンスにｅｘｅｃ  ＰＤＵを送信しないことを示すことを含む。クライアントの再接続は、図４に示されたように、再接続プロセスのインスタンスを管理するワークスペースランタイム（ｍｓｔｓｃのような）によって管理されてもよい。通常、再接続プロセスは、リモートリソースがサーバファーム上でインスタンス化されることを示しているデプロイメントにｅｘｅｃ  ＰＤＵを送信することが可能である。このシナリオでは、クライアントが、リモートリソースが新たにインスタンス化されることを要求しておらず、寧ろリモートリソースの既存のインスタンスに再接続されることを要求しているかもしれない。これが事実である場合には、ワークスペースのランタイムは、クライアントが切断されたリモートリソースの既存のインスタンスにクライアントが再接続することになるように、再接続通信フローからのｅｘｅｃ  ＰＤＵを省略することを再接続プロセスに指示することができる。
【００５８】
動作６１０は、第３のリモートデータを受信すること、および第２の切断されたリモートリソースへの再接続と平行して第３のリモートデータによって示される第３の切断されたリモートリソースに再接続することを示している。上述したように、複数のリモートリソースが再接続される場合、１つのリモートリソース（ここでは、第１の切断されたリモートリソース）が他の再接続に対して最初に順次に再接続され、他のリモートリソース（ここでは、第２および第３の切断されたリモートリソース）が並列に再接続される。
【００５９】
動作６１２は、第１の切断されたリモートリソースに再接続している間に、ユーザに表示される第１のメッセージを決定し、第２の切断されたリモートリソースに再接続している間に、ユーザに表示される第２のメッセージを決定し、第２の切断されたリモートリソースに再接続した後に、ユーザに第１のメッセージと第２のメッセージを含む統一されたメッセージを表示することを示している。ユーザが複数のプロンプトを受信しないように、ユーザ入力を受信することが第１の再接続のためにユーザ入力を受信することに凝縮されるのと同じ方法で、ユーザへのメッセージが収集され、ユーザに一度に表示されるようにすることができる。例えば、複数回の再接続の試行の結果、メッセージが表示され、再接続が失敗したか成功したかがユーザに通知されるようにしても良い。クリックして処理しなければならない複数のメッセージウィンドウを表示するのではなく、それらが一つのメッセージウィンドウに表示されるように、これらのメッセージが収集されても良い。
【００６０】
第１の切断されたリソースが第１のプロセスにより再接続され、第２の切断されたリソースが第２のプロセスにより再接続される実施形態では、動作６１２は、第１のプロセスとの第１の通信パイプ、第２のプロセスとの第２の通信パイプを確立すること、第１の通信パイプを介して第１のプロセスからの第１のメッセージを受信すること、第２の通信パイプを介して第２のプロセスからの第２のメッセージを受信することを含んでいる。図４に示されたようなシステムアーキテクチャにおいて、クライアント上のワークスペースランタイムは、それぞれが１つのセッションに再接続する複数の再接続プロセス（例えばｍｓｔｓｃなど）を管理することができる。このシステムアーキテクチャでは、プロセスからのメッセージは、ワークスペースランタイムによって収集されることができ、ワークスペースランタイムがその後統一的なやり方でそれらをユーザに表示する。各再接続処理は、ワークスペースランタイムとの通信パイプを確立し、この通信パイプを使用してワークスペースランタイムにメッセージを送信することによって、ワークスペースランタイムにメッセージを渡すことができる。ワークスペースランタイムはこれらの受信したメッセージを保存し、全ての再接続プロセスが完了（成功、あるいは失敗）したと判断したとき、ユーザに統一されたメッセージが表示するようにしても良い。
【００６１】
図７Ａは、再接続プロセスにおけるクライアントのためのユーザインターフェース要素の例を示す。ユーザインターフェース７０２は、ユーザが要求プロキシ（要求プロキシ２０４など）にクライアント（クライアント２０２など）の署名をするために彼の認証情報を入力する初期ログイン画面を含むことができる。要求プロキシ２０４はこのユーザインターフェースにおいて受信される認証情報のユーザ入力を受信し、デプロイメント（デプロイメント２００など）のユーザを検証するためにユーザの認証情報を検証することができる。
【００６２】
図７Ｂは、再接続プロセスにおける、クライアントのための追加のユーザインターフェース要素の例を示す。図７Ａのユーザインターフェース７０２において提供された認証情報に基づいて要求プロキシによってユーザが正常に検証された後、要求プロキシは、それらがどんなものであっても、符号７０６に接続することができるリモートリソースを示すユーザインターフェース７０４のための情報だけでなく、任意の切断されたリソースに再接続するためのオプションを再接続リンク７０８を介してユーザに提供してもよい。
【００６３】
図７Ｃは、再接続プロセスにおける、クライアントのための追加のユーザインターフェース要素の例を示す。ユーザが図７Ｂの再接続リンク７０８をクリックすると、要求プロキシが、ワークスペースが再接続されているというインジケーションをユーザに示すインターフェース７１０をユーザに提供するようにしても良い。再接続プロセスが完了すると、もはやユーザインターフェース７１０が表示されず、それらのリモートリソースを提供するマシンを、ユーザが対話可能な、これらのリモートリソースのためのユーザインターフェースに送信するようにすることができる。
【００６４】
結論
様々な図面に示された好ましい態様に関して本発明を説明してきたが、本発明から逸脱することなく同じ機能を実行するために、他の同様の態様を用いること、又は説明された態様に修正および追加をすることが可能であることが理解される。従って、本発明は、任意の単一の態様に限定されるべきではなく、むしろ添付の特許請求の範囲による広さおよび範囲内で解釈されるべきである。例えば、本明細書に記載された様々な手順は、ハードウェアまたはソフトウェア、あるいは両者の組み合わせによって実施することができる。したがって、開示された実施形態、又は特定の態様又はその一部、の方法および装置は、例えば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他の機械可読記憶媒体などの有形媒体で具現化されるプログラムコード（すなわち、命令）の形を取ることができる。プログラムコードがコンピュータなどの機械によってロードされて実行されるとき、機械は、開示された実施形態を実施するように構成された装置となる。明示的に本明細書で述べた特定の実装形態に加えて、他の態様および実装は、当業者には本明細書に開示された内容を考慮することにより明らかであろう。本明細書および図示した実装は、例としてのみ見なされることが意図されている。
【図１】
2013543617.tif 000003
【図２】
2013543617.tif 000004
【図３】
2013543617.tif 000005
【図４】
2013543617.tif 000006
【図５】
2013543617.tif 000007
【図６】
2013543617.tif 000008
【図７Ａ】
2013543617.tif 000009
【図７Ｂ】
2013543617.tif 000010
【図７Ｃ】
2013543617.tif 000011
【国際調査報告】
2013543617.tif 000012
2013543617.tif 000013