JP4990399B2 - セッションブローカ拡張性アプリケーションプログラムインターフェース - Google Patents

セッションブローカ拡張性アプリケーションプログラムインターフェース Download PDF

Info

Publication number
JP4990399B2
JP4990399B2 JP2010524090A JP2010524090A JP4990399B2 JP 4990399 B2 JP4990399 B2 JP 4990399B2 JP 2010524090 A JP2010524090 A JP 2010524090A JP 2010524090 A JP2010524090 A JP 2010524090A JP 4990399 B2 JP4990399 B2 JP 4990399B2
Authority
JP
Grant status
Grant
Patent type
Prior art keywords
server
session
broker module
session broker
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010524090A
Other languages
English (en)
Other versions
JP2010538392A (ja )
Inventor
ベン−シャハル イド
サンパス スリラム
ティー.ドプソン デイビット
ベレットスキー ルスラン
Original Assignee
マイクロソフト コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Grant date

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways

Description

本発明は、セッションブローカ拡張性アプリケーションプログラムインターフェースに関する。

ターミナルサービス(商標)(TS)システム等のリモートアクセスシステム環境において、いくつかのサーバコンピュータは、1つまたは複数のアプリケーションをいくつかのクライアント装置に対してホストし、かつ利用可能にでき、クライアント装置はネットワーク上でアプリケーションにアクセスする。一般に、ユーザは、一端であるサーバコンピュータとユーザ側の一端であるクライアント装置との間の接続を確立することにより、サーバコンピュータがホストするアプリケーションにリモートでアクセス可能である。そのような通信はユーザとサーバのとの間のセッションを作成し、その間、ユーザはインタラクトし、サーバコンピュータ上でホストされるアプリケーションを、アプリケーションがリモートクライアント装置上にローカルに存在するかのように、利用できる。

しかし、リモートアクセスシステム(例えば、TS)環境では、ユーザは、サーバコンピュータ上にロードされたサードパーティのアプリケーションにアクセスできない。サードパーティのアプリケーションは、「プラグイン」アプリケーションでもあり得、独立系ソフトベンダー(ISV)により作成または提供され得る。一般的には、ISVは、サードパーティのアプリケーションにユーザをアクセス可能にするルーティング動作(処理)をユーザに提供し得ない。従って、サードパーティのアプリケーションが、リモートクライアント装置およびユーザによるアクセスのために、リモートサーバコンピュータ上でホストされる要求が存在する。

本要約は、サードパーティのプラグインアプリケーションをサポート可能なリモートアクセスシステムセッションブローカのインフラストラクチャを活用することに関する概念を説明するために提供される。これらの概念は、以下の発明を実施するための形態でさらに説明される。提示される要約は、請求項に記載されている主題事項の重要な特徴を確認することを意図しておらず、請求項に記載されている主題事項の範囲を決定する際に使用されることも意図していない。

一実装において、セッションブローカサーバは、リモートクライアントのステータスおよび接続と、クライアントが利用可能であり得るアプリケーション(プラグインアプリケーション)を有するサーバとを監視する。拡張可能なアプリケーションプログラムインターフェース(API)は、リモートクライアントが利用可能なセッションを識別する。

発明を実施するための形態が、添付の図面を参照して説明される。図面において、参照番号の左端の桁の数字は、参照番号が最初に現れる図面を特定する。同一の番号が図面全体を通して使用されて、同様の特徴および構成要素を参照する。

リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のネットワークアーキテクチャを説明するブロック図である。 リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のアーキテクチャを説明するブロック図である。 リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のサーバシステムを説明するブロック図である。 リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示の方法を説明するフローチャートである。 リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、別の例示の方法説明するフローチャートである。 例示のコンピュータ環境を説明するブロック図である。

本開示は、サードパーティのプラグインアプリケーションをサポートし得るリモートアクセスシステムセッションブローカのインフラストラクチャの技術に向けられる。リモートアクセスシステムの一例としては、本件出願人により提供されるターミナルサービス(商標)システムがある。ターミナルサービス(商標)システムは、以下の例において検討されるが、検討される技術が、他のリモートアクセスシステムに適用可能であることを理解されたい。

セッションブローカは、リモートアクセスシステム環境においてユーザの通信へのセッションの割り当てを制御する。セッションブローカは、セッションブローカに記憶されるセッション状態情報に基づき、ユーザにセッションを割り当てる。セッション状態情報は、例えば、セッションID、ユーザ名、セッションが存在しているサーバの名称、各サーバコンピュータ内のアクティブなセッションの数を含み得る。

リモートアクセスシステム環境において、サーバはユーザの接続要求を受け取り得る。サーバは、最初に接続要求を受け入れ、次にセッションブローカにクエリを行い、どこにユーザをリダイレクできるかを判定し得る。セッションブローカは、その特定の環境のセッション状態情報を分析し、ユーザがリダイレクされ得るサーバを識別する。適切なサーバが、前回ユーザによりアクセスされたが後に切断されたセッションを保有し得、そこにユーザが再度接続され得る。一実装において、ユーザが他の既存のセッションを全く保有していなくても、適切なサーバが、ユーザが接続できる新しいセッションを提供し得る。セッションブローカは、要求を受けたサーバに情報を送り、そのサーバが適切なサーバとの接続を確立することを可能にする。例えば、情報には、マシンID、セッションID、および適切なサーバの場所を含み得る。要求を受けたサーバは、受け取った情報を分析し、ユーザを適切なサーバにリダイレクトする。

ユーザが適切なサーバとの接続を確立すると、ユーザは、適切なサーバに存在するアプリケーションにアクセスできる。これらのアプリケーションは、ターミナルサービス環境から適切なサーバを識別する際に使用されたセッションブローカロジックに準拠し得る。

リモートアクセスシステム環境が直面する課題は、サードパーティのアプリケーション、および、特にプラグインアプリケーションへのアクセスをユーザに提供することである。本明細書に開示される技術は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用してサードパーティのプラグインアプリケーションをサポートするアプリケーションプログラムインターフェース(API)を提供することにより、本課題に対処する。一般的なシナリオにおいて、ユーザがサードパーティのプラグインアプリケーションにアクセスするための接続を要求するとき、APIは、セッションブローカロジックに優先し、セッションブローカ処理とインタラクトしてユーザが接続できるセッションまたは適切なサーバを識別し得る。ユーザは、識別されたセッションまたは適切なサーバを介して、サードパーティのプラグインアプリケーションにアクセスし得る。

一実装において、サードパーティのプラグインアプリケーションは、リモートアクセスシステム環境においてなされる変更、例えば、新しいセッションの作成、セッションの削除、サーバ内の構成変更、セッションの接続および切断情報等から更新され得る。セッションブローカ処理は、リモートアクセスシステム環境における変更を管理し、その変更を、APIからの命令の受け取り時にサードパーティのプラグインアプリケーションに通知できる。

本明細書に説明される技術は、多数の異なる作動環境およびシステムにおいて使用され得る。多数の様々な実装が以下に説明される。種々の実装を実践するのに適切な例示の環境が、以下の章において検討される。

リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のシステムおよび方法論が、パーソナルコンピュータ等のコンピュータデバイスにより実行されるコンピュータ実行可能命令(プログラムモジュール)の一般的なコンテキストに即して説明される。プログラムモジュールは、一般に、特定のタスクを実行し、または、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。システムおよび方法が前述の文脈において説明され、一方、以下に説明される動作および作動は、ハードウェアまたは他の形式のコンピューティングプラットフォームにおいて実装される。

例示のネットワークアーキテクチャ
図1は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のネットワークアーキテクチャ100を示す。この目的を達成するために、ネットワークアーキテクチャ100が説明される。ネットワークアーキテクチャ100は、多数のクライアント装置102−1、102−2、...、102−N(まとめてクライアント装置102と呼ぶ)を含み、これらクライアント装置が、サーバ集合104、外部サーバまたはサーバ106、およびセッションブローカサーバ108と、ネットワーク110を介して接続され得る。一実装において、サーバ集合104、サーバ106およびセッションブローカサーバ108は、ネットワークアーキテクチャ100において世界中に広がる多くのパーソナルコンピュータ(PC)、ウェブサーバ、および他のコンピュータデバイスとインタラクトし得る。あるいは、別の可能な実装において、ネットワークアーキテクチャ100は、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)等を介して単一のサーバと通信する限定される数のPCを含むことが可能である。

ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク、無線ネットワーク、光ネットワーク、メトロポリタンエリアネットワーク(MAN)等であり得る。クライアント装置102は、汎用コンピュータデバイス、ラップトップ、モバイルコンピュータデバイス等であり得る。
サーバ集合104は、多数のサーバ112−1、112−2、...、112−N(まとめてサーバ112と呼ぶ)を含み得る。サーバ112は、クライアント装置102が利用可能なプラグイン114を有し得る。プラグイン114は、例えば、サードパーティのプラグインアプリケーション、および任意の他のソフトウェアアプリケーションを含み得る。上記で検討したように、サーバ112とクライアント装置102との間に作成されるセッションは、クライアント装置102により、サーバ112内でホストされるプラグイン114にアクセス可能になる。サーバ112は、セッションブローカサーバ108から受け取られた命令に基づき、これらのセッションを作成する。

一実装において、クライアント装置102−1は、サーバ集合104に、そこでホストされるプラグイン114にアクセスする要求を送ることができる。サーバ集合104のうちのサーバ112−1が要求を受け入れ、クライアント装置102−1との接続を確立する。サーバ112−1は、セッションブローカサーバ108にクエリを送り、クライアント装置102−1をどこにリダイレクをするかを判定し得る。なお、サーバ集合104のうちの任意のサーバ112が、クライアント装置102−1からの接続要求を受け入れ可能である。別の実装において、サーバ112−1は、専用のリダイレクタとして動作し、クライアント装置102−1からの接続要求を受け入れ得る。そのような実装において、接続を要求しているクライアント装置102−1が、最初にサーバ112−1に接続し得る。

セッションブローカサーバ108は、セッションブローカモジュール116および拡張可能API 118を実装でき、サーバ112−1により送られるクエリを処理し、クライアント装置102−1に提供され得るセッションを識別する。拡張可能API 118は、サーバネットワークコンピュータデバイスを介して分散されるいくつかのソフトウェアコンポーネントが、お互いに通信することを可能にする、分散型コンポーネントオブジェクトモデル(DCOM)ベースのインターフェースであり得る。一実装において、拡張可能API 118は、ネットワーク環境における種々のソフトウェアコンポーネント間の通信を可能にするコンポーネントオブジェクトモデル(COM)ベースのインターフェースであり得る。

一実装において、セッションブローカモジュール116は、クエリを受取り、拡張可能API 118にクエリの受け取りを通知できる。拡張可能API 118は、セッションブローカモジュール116をトリガしてセッションを識別し得るファンクションコールを生成する。識別されたセッションは、以前にクライアント装置102−1と関連づけられた既存のセッションであり得る。

セッションブローカモジュール116は、次に、サーバ112−1に命令して、クライアント装置102−1を既存のセッションを有する任意の1つのサーバ112、例えば、サーバ112−2にリダイレクトさせ得る。この例において、サーバ112−1は、クライアント装置102−1をリダイレクトして、サーバ112−2との接続を確立する。別の実装において、セッションブローカモジュール116は、また、クライアント装置102−1を、既存のセッションを有する、サーバ集合104の外部にあるサーバ108にリダイレクトし得る。

さらに別の実装において、セッションブローカモジュール116は、リモートアクセスシステム環境において既存のセッションを全く有し得ないクライアント装置102−1に提供され得る、新しいセッションを有する任意の適切なサーバ112を識別する。セッションブローカモジュール116は、次に、サーバ112−1に命令して、クライアント装置102−1をサーバ112のうちの適切なサーバにリダイレクトし得る。さらに別の実装において、セッションブローカモジュール116は、サーバ108を、新しいセッションをクライアント装置102−1に提供する能力があるものとして識別できる。

例示のシステムアーキテクチャ
図2は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示のシステムアーキテクチャ200を示す。システムアーキテクチャ200は、サーバ集合104のうちの1つのサーバ、例えば、サーバ112−1と、セッションブローカサーバ108との間のインタラクションを例示する。サーバ112−1は、リモートセッションマネージャ204およびローカルセッションマネージャ206とインタラクトするセッションブローカクライアント202を含み得る。なお、サーバ集合104内のサーバ112は、それらのそれぞれのセッションブローカクライアント、リモートセッションマネージャ、およびローカルセッションマネージャを含み得る。セッションブローカサーバ108は、さらにレジストリ208および拡張可能API 118とインタラクトするセッションブローカモジュール116を含み得る。

サーバ112−1は、最初にクライアント装置102−1に接続し、クライアント装置102−1からのセッションへの接続要求を受け取る。セッションブローカクライアント202は、その要求をクライアント情報と共に収集する。クライアント情報には、例えば、マシンIDおよびリモートアクセスシステム環境における、クライアント装置102の場所が含まれ得る。セッションブローカクライアント202は、その要求とクライアント情報の両方をセッションブローカモジュール116に送る。このセッションブローカモジュール116は、セッションブローカ処理210の一部として示される種々の機能を実行して、サーバ112のうち、クライアント装置102−1がリダイレクトされ得るサーバを識別できる。

作動中、セッションブローカモジュール116は、拡張可能API 118に要求の受け取りについて通知できる。一実装において、セッションブローカモジュール116は、一機能、すなわち初期化212を実行して、プラグイン114を初期化し得る。初期化212の処理中、セッションブローカモジュール116は、レジストリ208からプラグイン114のクラスIDを判定する。レジストリ208には、例えば、種々のプラグインアプリケーションのクラスID、ハードウェアの設定に関する情報、作動中のシステム、非作動中のシステム、クライアント装置、サーバが含まれ得る。プラグイン114のクラスIDの識別に従って、セッションブローカモジュール116は、プラグイン114のインスタンスを作成でき、今度はプラグイン114を初期化する。

インスタンスが作成されると、拡張可能API 118は、セッションブローカモジュール116をトリガして、切断されたセッション214として表わされるファンクションコール「TSSDRpcGetUserDisconnectedSessions」を初期化し、クライアント装置102−1がリダイレクトされ得るセッションを識別できる。一実装において、切断されたセッション214は、クライアント装置102−1が以前に接続されたが、後に切断された既存のセッションを判定し得る。そのようなシナリオにおいて、セッションブローカモジュール116は、ファンクションコール、すなわち「TSSDRpcPingSD」および「TSSDRpcQuerySDVersion」を行い、セッションディレクトリから既存のセッションを識別し、同時に、セッションディレクトリのバージョンを判定し得る。上記のファンクションコールは、それぞれpingセッションディレクトリ216およびセッションディレクトリバージョン218として示され得る。既存のセッションは、サーバ集合104内のサーバ112の任意の1つと関連付けられるセッションであり得る。別の実装において、既存のセッションは、サーバ集合104の外部に置かれるサーバ106と関連付けられ得る。

既存のセッションの識別時、セッションブローカモジュール116は、セッションの詳細、例えば、セッションID、マシンID、および、既存のセッションを提供し得るサーバ(例えば、サーバ112−1)に関連する場所を収集し得る。例えば、セッションブローカモジュール116は、次に、セッションの詳細を、接続を確立するための命令とともにリモートセッションマネージャ204へ送り得る。リモートセッションマネージャ204は、セッションの詳細に基づきサーバ112のうちのサーバ112−2を識別し、クライアント装置102−1をサーバ112−2にリダイレクトして、接続を確立する。クライアント装置102−1をリダイレクトする処理の間、リモートセッションマネージャ204は、サーバ112−2へ接続要求を送り得る。

セッションブローカモジュール116は、継続して接続のステータスを監視し、リモートアクセスシステム環境において起こる拡張可能API 118の任意の変更を更新する。監視処理の間、セッションブローカモジュール116は、サーバ再接続保留220として示されるファンクションコール(すなわち、「TSSDRpcSetServerReconnectPending」)を行い、拡張可能API 118に、サーバ112−2との接続要求が保留中であることを通知できる。

接続が確立されると、セッションブローカモジュール116は、接続のステータスを拡張可能API 118に報告可能となる。例えば、セッションブローカモジュール116は、セッション再接続済222として示されるファンクションコール「TSSDRpcSetSessionReconnected」を行い、拡張可能API 118にクライアント装置102−1が接続されることを確認できる。

拡張可能API 118は、セッションブローカモジュール116を起動して、別のファンクションコール(すなわち、切断されたセッション214)を生成し、クライアント装置102−1に提供できる新しいセッションを識別し得る。そのような場合、セッションブローカモジュール116は、サーバ集合104のうちの、例えば、サーバ112−2で、または外部サーバ106であり得るサーバに関連するサーバの詳細を収集し、そのサーバの詳細をリモートセッションマネージャ204に送る。リモートセッションマネージャ204は、クライアント装置102−1に指示して、サーバ112−2またはサーバ106との新しいセッションを作成させる。一実装において、セッションブローカモジュール116は、新しいセッションが作成されたかどうかを確認し、それに従ってファンクションコール、すなわち、セッション作成224として表わされる「TSSDRpcCreateSession」を起動して、プラグイン114に新しいセッションの作成について通知する。

上記の実装において、拡張可能API 118は、無作為にしかし継続的に、セッションブローカモジュール116を起動して、セッション切断済226として表わされるファンクションコール(すなわち、「TSSDRpcSetSessionDisconnected」)を行い、プラグイン114にクライアント装置102−1とサーバ112−2を接続しているセッションまたはサーバ106との接続が切断されていることを通知できる。そのような状況において、セッションブローカモジュール116は、ローカルセッションマネージャに命令して切断されたセッションを監視させ得る。

上記に加えて、拡張可能API 118は、セッションブローカモジュール116をトリガして、リモートアクセスシステム環境においてなされる構成変更に関する情報を提供し得る。そのようなシナリオにおいて、セッションブローカモジュール116は、構成変更に関する情報を収集し、変更があればその変更をプラグイン114報告する、構成設定228として示されるファンクションコール(すなわち、「TSSDRpcUpdateConfigurationSetting」)を起動し得る。

拡張可能API 118は、セッションブローカモジュール116に命令して、クライアント装置102−1に接続されるサーバ112−2またはサーバ108のステータスを識別させる。セッションブローカモジュール116は、命令を受け取った後、ファンクションコール、すなわち、それぞれサーバオンライン230およびサーバオフライン232として示される「TSSDRpcSeverOnlineEx」および「TSSDRpcSeverOffline」を行い、サーバ112−2またはサーバ108がオフラインであるかどうかをプラグイン114に通知し得る。

拡張可能API 118は、セッションブローカモジュール118とインタラクトして、リモートアクセスシステム環境において、特定の時間に稼働する種々のセッションのステータスを判定し得る。そのような実装において、セッションブローカモジュール118は、ファンクションコール、例えば、セッション削除234として示される「TSSDRpcDeleteSession」を起動し、プラグイン114にセッションが削除されることを通知し得る。セッションブローカモジュール118は、ファンクションコール、すなわち、全セッション再投入236として示される「TSSDRpcRepopulateAllSession」を起動し、セッションブローカモジュール118により管理される全てのセッションのステータスをチェック可能である。

例示のセッションブローカサーバ
図3は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用してサードパーティのプラグインアプリケーションをサポートすることに関連する、セッションブローカサーバ108のある機能的態様について詳細に説明する。サーバ108には、プロセッサ300およびシステムメモリ302が含まれる。サーバ108には、さらにネットワークインターフェース304が含まれ、図1に記載されるネットワーク102等の多種のネットワークへの接続性、ならびに、有線のネットワーク(例えば、LAN、ケーブル)および無線のネットワーク(例えば、WLAN、セルラ方式、衛星)等のプロトコルタイプを提供する。入出力インターフェース306は、サーバ108にデータの入力および出力の能力を提供する。入出力インターフェース306には、例えば、マウスポート、キーボードポートが含まれ得る。

システムメモリ302は、プログラムモジュール308およびプログラムデータ310を記憶する。プログラムモジュール308には、セッションブローカモジュール116、拡張可能API 118、および他のアプリケーションプログラムモジュール312(例えば、ランタイム環境、多数のユーザ間のネットワーク化された通信を提供するオペレーティングシステム(OS))が含まれ得る。

セッションブローカモジュール116は、リモートアクセスシステム環境に対して中央装置として動作すること、接続を要求するクライアント装置102にセッションを割り当てること、および、リモートアクセスシステム環境においてセッションを監視することを含むいくつかの責務を負う。セッションブローカモジュール116には、初期化モジュール314、ファンクション呼び出しモジュール316、監視モジュール320および再結合モジュール318が含まれ得る。

上記で検討したように、セッションブローカモジュール116を採用して、クライアント装置102−1によりサーバ112−1を介して送られるセッションの要求を受け取り得る。受け取った要求に基づき、初期化モジュール314が、拡張可能API 118を初期化する。初期化モジュール314は、レジストリ208からプラグイン114のクラスIDを判定し得る。プラグイン114のクラスIDがレジストリに記憶されるクラスIDと一致すると、初期化モジュール314は、インスタンスを作成して、拡張可能API 118を初期化し得る。

拡張可能API 118は、セッションブローカモジュール116に命令して、以前に検討したような適切なファンクションコールを生成し、クライアント装置102−1がリダイレクトされ得るセッションを識別する。従って、ファンクションコール、例えば、外部セッション集合322として示される「WTSSBX_GetUserExternalSession」を呼び出して、リモートアクセスシステム環境に存在する外部セッションを識別する。外部セッションは、サーバ集合104の外部に置かれるサーバ106により提供されるセッションであり得る。そのような場合、外部セッション集合322は、ファンクション呼び出しモジュール316をトリガして、切断されたセッション214等のファンクションコールを生成し、サーバ106が外部セッションをクライアント装置102−1に対して提供可能であるかどうかを判定し、また、外部接続されている場合にセッションの詳細を収集できる。その後、セッションブローカモジュール116は、セッションの詳細を収集し、クライアント装置102−1を、サーバ112−1を介してサーバ106にダイレクトさせる。

ファンクション呼び出しモジュール316によりなされるファンクションコールは、監視モジュール318により監視されて、ファンクションコールが所定の時間を超えて保留中であるかどうかを判定し得る。所定の時間は、管理者等のユーザによりプリセットされ得る。ファンクションコールが所定の時間を超えて保留のままである場合、監視モジュール318は、セッションブローカモジュール116に命令して、プラグイン114が失敗した場合にエラーメッセージのログをとらせ得る。その後、セッションブローカモジュール116は、拡張可能API 118を再度起動できる。

一実装において、外部セッション集合322は、ファンクション呼び出しモジュール316をトリガして、ファンクションコールを生成し、クライアント装置104に関連する既存のセッションをリモートアクセスシステム環境から判定し得る。ファンクション呼び出しモジュール316は、今度は、pingセッションディレクトリ216およびセッションディレクトリバージョン218等のファンクションコールを生成して、クライアント装置102−1の既存のセッションをセッションディレクトリから識別する。ファンクション呼び出しモジュール316は、サーバ集合104内の任意の1つのサーバ112、例えば、既存のセッションを提供する能力があるサーバ112−2を識別し得る。そのようなシナリオにおいて、ファンクション呼び出しモジュール316は、サーバ112−2のサーバの詳細を収集し、それらのサーバの詳細をセッションブローカモジュール116に提供する。サーバの詳細に基づき、セッションブローカモジュール116は、クライアント装置102−1をサーバ112にダイレクトし得る。別の実装において、既存のセッションは、サーバ集合104の外部に置かれるサーバ106により提供され得る。

拡張可能API 118は、ファンクション呼び出しモジュール316を起動して、ファンクションコール、すなわち適切なサーバ集合324を行い、新しいセッションをクライアント装置102−1に提供可能である適切なサーバを、サーバ集合104または外部サーバ106から識別し得る。例えば、ファンクション呼び出しモジュール316は、ファンクションコール、すなわち「WTSSBX_GetMostSuitableServer」を行い、新しいセッションをクライアント装置102−1に提供可能である適切なサーバを識別し得る。従って、ファンクション呼び出しモジュール316は、接続に適切であると思われる適切なサーバに関連するサーバの詳細を収集し、セッションブローカモジュール116がサーバ112−1に命令してクライアント装置104と適切なサーバとの間の接続を確立させることを可能にする。

ファンクションコールは、上記で検討したように、監視モジュール318により監視されて、ファンクションコールが所定の時間を超えて保留中であるかどうかを判定し得る。ファンクションコールが所定の時間を超えて保留の状態である場合、監視モジュール318は、セッションブローカモジュール116に命令して、プラグイン114が失敗した場合にエラーメッセージのログをとらせ得る。その後、監視モジュール318は、拡張可能API 118をリダイレクトして、セッションブローカモジュール116の負荷分散アルゴリズムとインタラクトする。負荷分散アルゴリズムは、セッションブローカモジュール116が適切なサーバのリストを識別するのを可能にする。セッションブローカモジュール116は、最小数のセッションを有する適切なサーバを識別し、サーバ112−1に命令してクライアント装置102−1を適切なサーバにリダイレクトさせる。

上記の実装において、拡張可能API 118は、セッションブローカモジュール116をトリガして、セッションにおいて起こる変更についてプラグイン114を更新する、セッション変更通知326の呼び出しを行うよう構成され得る。例えば、拡張可能API 118は、ファンクションコール、すなわち「WTSSBX_SessionChangeNotification」を行い、セッションブローカモジュール116が、セッションにおいて起こる任意の変更、例えば、新しいセッションの作成、既存のセッションの切断、セッションの再接続、およびセッションの削除、についての情報を収集するのを可能にする。

一実装において、ファンクションコール、すなわち、WTSSBX_SessionChangeNotification」が、所定の時間より長く保留のままであり、プラグイン114が失敗したとき、エラーイベントのログがとられる。

加えて、拡張可能API 118は、マシン変更通知328として示される「WTSSBX_MachineChangeNotification」の呼び出しを行い、セッションブローカモジュール116を起動して情報を集め、次にリモートアクセスシステム環境においてサーバ112および外部サーバ106内で起こる変更について、プラグイン114に報告し得る。起こる変更には、サーバにおける構成変更、およびサーバのステータスにおける変更(すなわち、サーバのオンラインまたはオフラインステータス)が含まれ得る。一実装において、ファンクションコール「WTSSBX_MachineChangeNotification」が、所定の時間より長い間保留のままでありプラグイン114が失敗したとき、エラーイベントのログがとられる。

例示の方法
リモートアクセスシステムセッションブローカのインフラストラクチャを活用してサードパーティのプラグインアプリケーションをサポートするための例示の処理が、図1から図3を参照して説明される。これらの処理は、コンピュータ実行可能命令の一般的なコンテキストに即して説明され得る。一般に、コンピュータ実行可能命令は、特定のファンクションを実行し、または、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール、ファンクション、等を含むことが可能である。処理は、また、ファンクションが通信ネットワークを介してリンクされるリモート処理装置により実行される、分散型コンピュータ環境において実践され得る。分散型コンピュータ環境において、コンピュータ実行可能命令は、メモリ記憶装置を含む、ローカルおよびリモート両方のコンピュータ記憶媒体に配置され得る。

図4は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示の方法400を説明する。処理400は、論理フロー図のブロックの集合として説明され、ハードウェア、ソフトウェア、またはその組み合わせにおいて実装可能である一連の作動を表わす。ソフトウェアのコンテキストに即して、ブロックは、1つまたは複数のプロセッサにより実行されるとき記載の作動を実行する、コンピュータ命令を表わす。

方法が記載される順番は、限定として解釈されることを意図しておらず、任意の数の記載される方法のブロックが任意の順番で組み合わせられて、方法または代替の方法を実装することが可能である。加えて、個々のブロックは、本明細書に記載される主題事項の精神および範囲から逸脱することなく、本方法から削除されても良い。さらに、本方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはその組み合わせにおいて、本発明の精神から逸脱することなく実装され得る。

ブロック402において、ユーザはセッションへの接続を要求する。一実装において、クライアント装置102−1のユーザは、サーバ上でホストされるプラグイン114または任意の他のアプリケーションにアクセスするために、サーバ112−1に対してセッションの要求を行う。セッションブローカモジュール116は、最初はクライアント装置102−1に接続されるサーバ112−1からセッションの要求を受け取る。その後、セッションブローカモジュール116は、プラグイン114に関連する拡張可能API 118を初期化する。

ブロック404において、ファンクションコール、すなわち「GetUserDisconnectedSession」を呼び出して、セッションを取得する。一実装において、クライアント装置102−1のリダイレクタとして動作するサーバ112−1が、セッションブローカサーバ108に対してファンクションコールを行う。セッションブローカサーバ108のセッションブローカモジュール116は、ファンクションコールを受け取り、拡張可能APIにファンクションコールを通知する。

ブロック406において、ファンクションコール、すなわち「GetUserExternalSession」が、「GetUserDisconnectedSession」の呼び出しに応答して行われる。セッションブローカモジュール116は、サーバ112−1によりなされるサーバファンクションコールを拡張可能API 118に送り得る。この拡張可能API 118は、このサーバファンクションコールの受け取り時に、ファンクションコール「GetUserExternalSession」を行い、クライアント装置102−1のためのセッションを識別できる。

ブロック408において、クライアント装置のユーザのための外部セッションが検索される。拡張可能API 118により起動されるファンクションコール「GetUserExternalSession」は、セッションブローカモジュール116をトリガして、リモートアクセスシステム環境において存在するユーザ外部セッションを識別できる。

ブロック410において、外部セッションが存在するかどうか、判定がなされる。外部セッションが存在する場合(すなわち、ブロック410からの「はい」の経路)、クライアント装置102−1がサーバ106にリダイレクトされて、外部セッションを確立する。外部セッションがリモートアクセスシステム環境において存在しない場合(すなわち、ブロック410からの「いいえ」の経路)、クライアント装置102−1に関連する既存のセッションが、ブロック414において識別される。

ブロック416において、既存のセッションが識別された後、その既存のセッションの、セッションの詳細が、収集される。そのようなセッションの詳細は、セッションブローカサーバ108に記憶されるセッションディレクトリに記憶できる。

ブロック418において、既存のセッションを有するサーバとの接続が確立される。セッションブローカモジュール116は、命令を、既存のセッションを有する適切なサーバのセッションの詳細とともに、クライアント装置102−1をリダイレクトするよう構成されるサーバ112−1に送る。サーバ112−1は、セッションの詳細に基づき適切なサーバを識別し、クライアント装置102−1を適切なサーバにリダイレクトして、接続を確立する。

図5は、リモートアクセスシステムセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、別の例示の方法500を説明する。ブロック502において、セッションへの接続要求がなされる。セッションブローカモジュール116は、サーバ、例えば、最初にクライアント装置102−1に接続されるサーバ112−1を介して、セッションの要求を受け取り得る。その後、セッションブローカモジュール116は、プラグイン114に関連する拡張可能API 118を初期化する。

ブロック504において、ファンクションコール「GetUserDisconnectedSession」を呼び出し、セッションを取得する。一実装において、クライアント装置102−1のリダイレクタとして動作するサーバ112−1は、セッションブローカサーバ108に対してファンクションコールを行い得る。セッションブローカサーバ108のセッションブローカモジュール116は、ファンクションコールを受け取り、拡張可能API 118にファンクションコールを通知する。

ブロック506において、「GetMostSuitableServer」の呼び出しに応答して、ファンクションコール「GetUserExternalSession」が行われる。セッションブローカモジュール116は、サーバ112−1を拡張可能API 118にリダイレクトすることによりなされる、サーバファンクションコールを送り得る。拡張可能API 118は、このサーバファンクションコールの受け取り時に、セッションブローカモジュール116を起動して、適切なサーバ、例えば、サーバ112または外部サーバ106のうちの、クライアント装置102−1がリダイレクトされ得る任意のサーバを識別する、ファンクションコール「GetMostSuitableServer」を呼び出し得る。

ブロック508において、適切なサーバに関連するサーバIDが収集される。セッションブローカモジュール116は、リモートアクセスシステム環境における適切なサーバのサーバIDを集める。

ブロック510において、適切なサーバのサーバIDが有効にされる。一実装において、セッションブローカモジュール116は、レジストリ208をチェックして、サーバIDがレジストリ208に存在するかどうかを識別し、または、サーバIDが適切なサーバに関連するかどうかをチェックする。

別の実装において、セッションブローカモジュール116は、サーバIDを有する適切なサーバがドレインモードであるかどうかを判定し得る。適切なサーバがドレイン(drain)モードの場合、適切なサーバは、他のユーザからの任意の新しいリモートログオンを拒否できる。さらに、そのような条件において、既存のセッションをサーバとともに有するリモートアクセスシステム環境におけるユーザが、再接続され得る。さらに別の実装において、セッションブローカモジュール116は、所望のサーバIDを有する適切なサーバが、適切なサーバに割り当てられる最大数のセッションを越えたかどうかをチェックできる。

ブロック512において、サーバIDが有効かどうかについて、判定がなされる。サーバIDが有効の場合(すなわち、ブロック512からの「はい」の経路)、クライアント装置102−1はリダイレクトされて、ブロック514において、適切なサーバとの接続を確立する。サーバIDが有効でない場合(すなわち、ブロック512からの「いいえ」の経路)、プラグインのエラーイベントのログがとられる。例えば、拡張可能API 118により呼び出されるファンクションコール「WTSSBX_GetMostSuitableSever」が無効なサーバIDを戻すとき、警告のログがとられる。

別のシナリオにおいて、ファンクションコール「WTSSBX_GetMostSuitableServer」が、クライアント装置102−1をドレインモードの適切なサーバにリダイレクトする場合、プラグインエラーイベントは警告としてログがとられる。同様に、さらに別のシナリオにおいて、ファンクションコール「WTSSBX_GetMostSuitableSever」が、所定のセッション制限に違反した適切なサーバを提供するとき、プラグインエラーイベントはログがとられる。

ブロック518において、適切なサーバが、対応する重みを有するサーバのリストから識別される。セッションブローカモジュール116は、負荷分散アルゴリズムを採用して、各サーバにより扱われるセッションの数に基づき、リモートアクセスシステム環境における各サーバに重みを割り当て得る。セッションブローカモジュール116は、サーバのリストを生成し、リストから適切なサーバを識別する。識別されたサーバは、より少ない数のセッションを保有し得、従って、セッションをクライアント装置102−1に提供する能力を示す。

ブロック520において、クライアント装置102−1がリダイレクトされて、識別されたサーバとの接続を確立する。

例示のコンピュータ環境
図6は、例示の一般的コンピュータ環境600を説明し、コンピュータ環境600を使用して、本明細書に記載される技術を実装可能であり、また、コンピュータ環境600は、本明細書に記載される構成要素の全体または一部として、代表的なものであり得る。コンピュータ環境600は、コンピュータ環境の単なる一例であり、コンピュータおよびネットワークアーキテクチャの使用または機能性の範囲について任意の制限を示唆することを意図していない。コンピュータ環境600は、例示のコンピュータ環境600に説明されるコンポーネントのうちの任意の1つまたは組み合わせに関して、何の依存性も要求も有しないと解釈されるべきである。

コンピュータ環境600には、汎用コンピュータベースのデバイスがコンピュータ602の形式で含まれる。コンピュータ602は、例えば、デスクトップコンピュータ、ハンドヘルド、ノートブックまたはラップトップ型のコンピュータ、サーバコンピュータ、ゲーム機等であり得る。コンピュータ602のコンポーネントは、1つまたは複数のプロセッサまたはプロセシングユニット604、システムメモリ606、および、プロセッサ604を含む種々のシステムコンポーネントをシステムメモリ606に連結させるシステムバス608を含み得るが、これらに限定されない。

システムバス608は、メモリバスまたはメモリコントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかとすることができる。そのようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスが含まれ得る。

コンピュータ602には、一般的には、様々なコンピュータ可読媒体が含まれる。そのような媒体は、コンピュータ602によりアクセス可能な任意の利用可能な媒体であり得、揮発性媒体および不揮発性媒体、ならびに、取り外し可能媒体および取り外し不可能媒体が含まれる。

システムメモリ606には、コンピュータ可読媒体が、RAM(Random Access Memory)610等の揮発性メモリの形式、および/または、ROM(Read Only Memory)612等の不揮発性メモリの形式で含まれる。BIOS(Basic Input/Output System)614は、コンピュータ602内の要素間で起動中等における情報の転送を支援する基本ルーチンを含有し、例示されるように、ROM 612に記憶される。RAM 610は、一般的には、プロセシングユニット604により、直接アクセス可能な、および/または現在作動されているデータおよび/または、プログラムモジュールを含有する。

コンピュータ602には、また、他の取り外し可能/取り外し不可能、揮発性/不揮発性コンピュータ記憶媒体が含まれ得る。例として、図6は、取り外し不可能、不揮発性磁気媒体(図示せず)を読み書きするためのハードディスクドライブ616を説明する。さらに、図6は、取り外し可能、不揮発性磁気ディスク620(例えば、「フロッピーディスク」)を読み書きするための磁気ディスクドライブ618を説明する。また、図6は、CD−ROM、DVD−ROM、または他の光媒体等の取り外し可能、不揮発性光ディスク624を読み出しおよび/または書き込みするための光ディスクドライブ622を説明する。ハードディスクドライブ616、磁気ディスクドライブ618、および光ディスクドライブ622は、全て、1つまたは複数のデータ媒体インターフェース626により、システムバス608に接続される。あるいは、ハードディスクドライブ616、磁気ディスクドライブ618、および光ディスクドライブ622は、1つまたは複数のインターフェース(図示せず)によりシステムバス608に接続され得る。

ディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ602の他のデータのための不揮発性記憶装置を提供する。例では、ハードディスク616、取り外し可能磁気ディスク620、および取り外し可能光ディスク624が説明されるが、コンピュータによりアクセス可能なデータを記憶可能な他のタイプのコンピュータ可読媒体、例えば、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、DVD(Digital Versatile Disk)または他の光記憶装置、RAM(Random Access Memory)、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)等を利用して、例示のコンピュータシステムおよび環境を実装可能であることを理解されたい。

任意の数のプログラムモジュールを、ハードディスク616、磁気ディスク620、光ディスク624、ROM 612および/またはRAM 610上に記憶可能であり、それには、例として、オペレーティングシステム626、1つまたは複数のアプリケーション628、他のプログラムモジュール630、およびプログラムデータ632が含まれる。そのようなオペレーティングシステム626、1つまたは複数のアプリケーション628、他のプログラムモジュール630、およびプログラムデータ632(またはそれらのいくつかの組み合わせ)のそれぞれは、分散ファイルシステムをサポートする、存在するコンポーネントのすべてまたは一部を実装し得る。

ユーザは、キーボード634およびポインティングデバイス636(例えば、「マウス」)等の入力装置を介して、コマンドおよび情報をコンピュータ602内に入力可能である。他の入力デバイス638(具体的には図示せず)には、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナおよび/または同等のものが含まれ得る。これらおよび他の入力デバイスは、システムバス608に連結される入出力インターフェース640を介してプロセシングユニット604に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)等の他のインターフェースおよびバス構造によっても接続され得る。

モニタ642または他のタイプの表示装置を、ビデオアダプタ644等のインターフェースを介してシステムバス608に接続することも可能である。モニタ642の他に、他の出力周辺機器には、スピーカ(図示せず)およびプリンタ646等のコンポーネントが含まれ得、それらのコンポーネントは入出力インターフェース640を介してコンピュータ602に接続可能である。

コンピュータ602は、ネットワーク化された環境において、リモートコンピュータベースデバイス648等の1つまたは複数のリモートコンピュータに接続する論理接続を使用して、作動可能である。例として、リモートコンピュータベースデバイス648は、パーソナルコンピュータ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の共通ネットワークノードであり得る。リモートコンピュータベースデバイス648は、コンピュータ602に関して本明細書において記載される、多数または全ての要素および特徴を含むことが可能な携帯型コンピュータとして説明される。

コンピュータ602とリモートコンピュータ648との間の論理接続は、ローカルエリアネットワーク(LAN)650として、また、一般的なワイドエリアネットワーク(WAN)652を介するものとして示される。そのようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいては一般的なものである。

コンピュータ602は、LANネットワーク環境において実装されるとき、ネットワークインターフェースまたはアダプタ654を介してローカルネットワーク650に接続される。コンピュータ602はWANネットワーク環境において実装されるとき、一般的にはモデム656またはワイドネットワーク652上で通信を確立するための同様の手段を含む。モデム656は、コンピュータ602に外付けまたは内蔵のものが可能であり、入出力インターフェース640または他の適切な機構を介してシステムバス608に接続可能である。説明されるネットワーク接続は例示のものであり、コンピュータ602と648の間の通信リンクを確立するための他の手段も使用可能であることを理解されたい。

コンピュータ環境600と共に説明されるような、ネットワーク化された環境において、コンピュータ602に関して示されるプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶され得る。例として、リモートアプリケーション658は、リモートコンピュータ648のメモリ装置上に存在する。説明目的のため、オペレーティングシステム等のアプリケーションおよび他の実行可能プログラムコンポーネントが、本明細書において個別のブロックとして説明されるが、そのようなプログラムおよびコンポーネントが、種々の時間において、コンピュータベースデバイス602の異なる記憶コンポーネントに存在し、コンピュータ602のデータプロセッサにより実行されることが分かる。

種々のモジュールおよび技術が、1つまたは複数のコンピュータまたは他のデバイスにより実行される、プログラムモジュール等のコンピュータ実行可能命令の一般的なコンテキストに即して、本明細書において記載され得る。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。一般的には、プログラムモジュールの機能性は、種々の実施形態において所望されるように組み合わせまたは分散され得る。

これらのモジュールおよび技術の実装は、何らかの形式のコンピュータ可読媒体に記憶または転送され得る。コンピュータ可読媒体は、コンピュータによりアクセス可能な任意の利用可能な媒体で可能である。限定ではなく例として、コンピュータ可読媒体には、「コンピュータ記憶媒体」および「通信媒体」を含まれ得る。

「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不可能媒体が含まれる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、DVD(Digital Versatile Disk)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用できる、かつ、コンピュータによりアクセス可能な任意の他の媒体が含まれるが、これに限定されない。

あるいは、フレームワークの一部分を、ハードウェア、または、ハードウェア、ソフトウェア、および/またはファームウェアの組み合わせにおいて実装してもよい。例えば、1つまたは複数の特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)またはプログラマブルロジックデバイス(Programmable Logic Device:PLD)を、設計またはプログラムして、フレームワークの1つまたは複数の部分を実装することが可能である。

結論
ターミナルサービスセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための実施形態を構造的特徴および/または方法論的動作に固有の言語で説明したが、添付の特許請求の範囲で定義される本発明の主題事項は、説明した特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、特定の特徴はおよび方法は、ターミナルサービスセッションブローカのインフラストラクチャを活用して、サードパーティのプラグインアプリケーションをサポートするための、例示の実装として開示される。

Claims (24)

  1. メモリと、
    前記メモリに作動可能に接続される1つまたは複数のプロセッサと、
    リモートクライアントのステータスおよび接続を監視するよう構成される、前記メモリ内のセッションブローカモジュールと、
    前記リモートクライアントが利用可能なセッションを識別する、前記メモリ内の拡張可能なアプリケーションプログラムインターフェース(API)であって、
    ソフトウェア・プラグインの追加による拡張性用に構成され、
    前記ソフトウェア・プラグインに従って、前記セッションブローカモジュール内のロジックをオーバーライドするように構成され、
    前記セッションブローカモジュールと対話して、前記セッションブローカモジュールが、前記リモートクライアントが接続し得るセッションまたは適切なサーバの検索および識別を行うことを可能とするように構成される
    アプリケーションプログラムインターフェース(API)と
    を備えることを特徴とするサーバ。
  2. 前記セッションブローカモジュールが、クエリを前記リモートクライアントから受け取り、APIに通知することを特徴とする請求項1に記載のサーバ。
  3. 前記セッションブローカモジュールが、前記リモートクライアントを多数のサーバのうちの1つにダイレクトさせることを特徴とする請求項1に記載のサーバ。
  4. 前記セッションブローカモジュールが、前記リモートクライアントが接続し得る1つまたは複数のサーバに存在するプラグインアプリケーションを初期化することを特徴とする請求項1に記載のサーバ。
  5. 前記セッションブローカモジュールが、前記サーバ、前記リモートクライアント、および1つまたは複数のサーバを含むリモートアクセスシステム環境について、前記APIの構成の変更を収集および提供することを特徴とする請求項1に記載のサーバ。
  6. 前記セッションブローカモジュールが、前記APIを初期化し、レジストリ内のプラグインアプリケーションの識別を判定する、初期化モジュールを含むことを特徴とする請求項1に記載のサーバ。
  7. 前記セッションブローカモジュールが、ファンクションコールを生成して前記リモートクライアントのためのセッション情報を判定し収集する、ファンクション呼び出しモジュールを含むことを特徴とする請求項1に記載のサーバ。
  8. 前記セッションブローカモジュールが、前記ファンクションコールが所定の時間を超えて保留中であるかどうかを判定する、監視モジュールを含むことを特徴とする請求項7に記載のサーバ。
  9. ファンクションコールが所定の時間を超えて保留中であるというエラーメッセージが生成されることを特徴とする請求項8に記載のサーバ。
  10. APIが、前記ファンクション呼び出しモジュールを起動して、前記リモートクライアントうちの1つに対して、多数のサーバのうちの1つを識別し、前記1つのリモートクライアントにセッションを提供することを特徴とする請求項7に記載のサーバ。
  11. 前記APIは、前記リモートクライアントとサーバを接続するネットワークにわたる多数のソフトウェアコンポーネントが、お互いに通信することを可能にするコンポーネントオブジェクトモデルであることを特徴とする請求項1に記載のサーバ。
  12. 前記APIが、前記セッションブローカモジュールを起動して、1つまたは複数のサーバ上に存在するプラグインアプリケーションを更新する、セッション変更通知を行うことを特徴とする請求項1に記載のサーバ。
  13. 前記APIが、マシン変更通知について呼び出しを行い、セッションブローカモジュールを起動して情報を集め、リモートクライアントが接続する前記サーバおよび他のサーバにおける変更を報告することを特徴とする請求項1に記載のサーバ。
  14. 記憶装置に記憶されたコンピュータ実行可能命令を処理装置が実行することによって実施される方法であって、
    サーバのセッションブローカモジュールにおいて、セッションまたは適切なサーバにアクセスするための要求を、リモートクライアントから受け取るステップであって、前記セッションブローカモジュールは、前記リモートクライアントのステータスおよび接続を監視する、ステップと、
    前記サーバが、前記セッションブローカモジュールに対して前記セッションを取得するファンクションコールを行うステップであって、前記セッションブローカモジュールは、前記ファンクションコールに応答して、アプリケーションプログラムインターフェース(API)に前記ファンクションコールを通知し、前記APIは、
    サードパーティのソフトウェア・プラグインの動作による拡張性用に構成され、
    前記ソフトウェア・プラグインにより示されるように、前記セッションブローカモジュール内のロジックをオーバーライドするように構成され、
    前記セッションブローカモジュールと対話して、前記セッションブローカモジュールが、前記リモートクライアントが接続し得るセッションまたは適切なサーバの検索および識別を行うことを可能とするように構成される、
    ステップと、
    前記リモートクライアントの任意の既存のセッションを識別するステップと、
    前記リモートクライアントのユーザのための外部セッションを検索するステップと、
    前記リモートクライアントのためにサーバとの接続を確立するステップと
    を含むことを特徴とする方法。
  15. 前記外部セッションまたは別の外部セッションが存在するかどうかを判定するステップをさらに含むことを特徴とする請求項14に記載の方法。
  16. 識別された外部セッションの、セッションの詳細を収集するステップをさらに含むことを特徴とする請求項15に記載の方法。
  17. 既存のセッションに接続するステップをさらに含むことを特徴とする請求項15に記載の方法。
  18. ユーザのための適切なサーバを識別するステップをさらに含むことを特徴とする請求項14に記載の方法。
  19. 前記適切なサーバの識別を収集するステップをさらに含むことを特徴とする請求項18に記載の方法。
  20. 前記識別を有効にするステップをさらに含むことを特徴とする請求項19に記載の方法。
  21. 前記識別が有効にされない場合、プラグインアプリケーションに対するエラーイベントが記録されることを特徴とする請求項20に記載の方法。
  22. 前記適切なサーバがドレインモードである場合、プラグインエラーイベントのログをとるステップをさらに含むことを特徴とする請求項18に記載の方法。
  23. 負荷分散の重みを有するサーバのリストから、前記適切なサーバを識別するステップをさらに含むことを特徴とする請求項18に記載の方法。
  24. 前記適切なサーバのためのサーバリストを生成するステップをさらに含むことを特徴とする請求項18に記載の方法。
JP2010524090A 2007-09-06 2008-08-21 セッションブローカ拡張性アプリケーションプログラムインターフェース Active JP4990399B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US97044107 true 2007-09-06 2007-09-06
US60/970,441 2007-09-06
US12/114,582 2008-05-02
US12114582 US8090847B2 (en) 2008-05-02 2008-05-02 Session broker extensibility application program interface
PCT/US2008/073903 WO2009032548A3 (en) 2007-09-06 2008-08-21 Session broker extensibility application program iinterface

Publications (2)

Publication Number Publication Date
JP2010538392A true JP2010538392A (ja) 2010-12-09
JP4990399B2 true JP4990399B2 (ja) 2012-08-01

Family

ID=40429635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010524090A Active JP4990399B2 (ja) 2007-09-06 2008-08-21 セッションブローカ拡張性アプリケーションプログラムインターフェース

Country Status (4)

Country Link
EP (1) EP2195745B1 (ja)
JP (1) JP4990399B2 (ja)
CN (1) CN101796504B (ja)
WO (1) WO2009032548A3 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949408B2 (en) 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
CA2810541A1 (en) * 2010-09-22 2012-03-29 Mainak Mazumdar Methods and apparatus to determine impressions using distributed demographic information
JP6252016B2 (ja) * 2013-07-30 2017-12-27 富士通株式会社 セッション管理プログラム、セッション管理方法およびセッション管理装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446116B1 (en) * 1997-06-30 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic loading of a transport mechanism in a multipoint data delivery system
EP1233590A1 (en) * 2001-02-19 2002-08-21 Sun Microsystems, Inc. Content provider for a computer system
US7631318B2 (en) * 2002-06-28 2009-12-08 Microsoft Corporation Secure server plug-in architecture for digital rights management systems
US7334018B2 (en) * 2003-03-11 2008-02-19 Sap Aktiengesellschaft Unified network resources
US7536695B2 (en) * 2003-03-28 2009-05-19 Microsoft Corporation Architecture and system for location awareness
JP2005063169A (ja) * 2003-08-13 2005-03-10 Ricoh Co Ltd 情報処理装置、画像処理装置、サーバ装置、セッション接続方法、セッション接続プログラム及び記録媒体
GB0413060D0 (en) * 2004-06-09 2004-07-14 Symbian Software Ltd A method for selecting plug-in code modules in a computing device
US7509406B2 (en) * 2004-09-30 2009-03-24 Microsoft Corporation Managing terminal services accounts and sessions for online utilization of a hosted application
US7954152B2 (en) * 2005-12-30 2011-05-31 Microsoft Corporation Session management by analysis of requests and responses

Also Published As

Publication number Publication date Type
CN101796504B (zh) 2014-07-16 grant
CN101796504A (zh) 2010-08-04 application
JP2010538392A (ja) 2010-12-09 application
EP2195745A2 (en) 2010-06-16 application
EP2195745A4 (en) 2013-12-04 application
EP2195745B1 (en) 2017-06-28 grant
WO2009032548A3 (en) 2009-04-30 application
WO2009032548A2 (en) 2009-03-12 application

Similar Documents

Publication Publication Date Title
US6243825B1 (en) Method and system for transparently failing over a computer name in a server cluster
US7246174B2 (en) Method and system for accessing and managing virtual machines
US7260599B2 (en) Supporting the exchange of data by distributed applications
US20030135613A1 (en) Network system, information management server, and information management method
US20030108018A1 (en) Server module and a distributed server-based internet access scheme and method of operating the same
US20110276695A1 (en) Continuous upgrading of computers in a load balanced environment
US20160205062A1 (en) Managing network computing components utilizing request routing
US20060253848A1 (en) Method and apparatus for solutions deployment in a heterogeneous systems management environment
US20070198710A1 (en) Scalable distributed storage and delivery
US20080235361A1 (en) Management layer method and apparatus for dynamic assignment of users to computer resources
US20060259612A1 (en) Smart switch management module system and method
US20120233315A1 (en) Systems and methods for sizing resources in a cloud-based environment
US6904458B1 (en) System and method for remote management
US6799202B1 (en) Federated operating system for a server
US20080275962A1 (en) Remote access providing computer system and method for managing same
US20070050768A1 (en) Incremental web container growth to control startup request flooding
US20090055465A1 (en) Remote Health Monitoring and Control
US7996525B2 (en) Systems and methods for dynamically provisioning cloud computing resources
US20050265317A1 (en) Managing the flow of data traffic
US20060080568A1 (en) Failover scopes for nodes of a computer cluster
US20100011111A1 (en) Method for offering a call center service in a peer-to-peer network
US20090300180A1 (en) Systems and methods for remote management of networked systems using secure modular platform
US20080244068A1 (en) Computer product, operation management method, and operation management apparatus
US20050027784A1 (en) Methods and apparatus for performing context management in a networked environment
US7971045B1 (en) System and method for selecting a network boot device using a hardware class identifier

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110812

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110812

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120329

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120330

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120501

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250