(57)【要約】  クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供システム及び方法。非管理サービスはリモートアクセスサーバに登録され、両者間の通信接続を開き、リモートアクセスサーバは、クライアントによる非管理サービスへのリモートアクセスを提供するよう構成されてもよい。リモートアクセスサーバは、非管理サービスから通信接続を介して、非管理サービスが動作可能であることを示すことができるキープアライブメッセージを受信する。リモートアクセスサーバはクライアントの非管理サービスへの接続要求を、その後、キープアライブ終了メッセージが非管理サービスに送信され、クライアントの非管理サービスへの接続要求に応答して非管理サービスからのキープアライブメッセージ送信を終了する。
2017505473.tif 000002
【特許請求の範囲】
【請求項１】
クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法であって、
クライアントによる前記非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに前記非管理サービスを登録し、両者間の通信接続を確立すること、
前記リモートアクセスサーバで前記非管理サービスから前記通信接続を介してキープアライブメッセージを受信すること、
前記非管理サービスへのクライアント接続の要求を前記リモートアクセスサーバで受信すること、
前記リモートアクセスサーバから前記非管理サービスへのキープアライブ終了メッセージを送信し、前記非管理サービスへの前記クライアント接続の前記要求に応答して前記非管理サービスからの前記キープアライブメッセージ送信を終了することを、備える方法。
【請求項２】
請求項1に記載の方法であって、前記リモートアクセスサーバでモニタスレッドを実行し、前記キープアライブメッセージを受信し、前記クライアント接続の前記要求を監視することをさらに備える、前記方法。
【請求項３】
請求項１または２に記載の方法であって、
前記キープアライブメッセージが前記非管理サービスにより送信されているかを判断すること、
所定期間タイマを始動させること、
キープアライブメッセージが前記所定期間内に受信されたかを判断すること、及び、
前記キープアライブメッセージが受信されなければ、前記非管理サービスの登録を解除し、前記キープアライブメッセージが受信されれば、前記タイマをキャンセルし前記判断ステップに戻ることをさらに備える、前記方法。
【請求項４】
請求項１乃至３のいずれかに記載の方法であって、前記通信接続を閉じることをさらに備える、前記方法。
【請求項５】
請求項２乃至４のいずれかに記載の方法であって、通知確認を前記リモートアクセスサーバから、前記モニタスレッドが終了した前記非管理サービスに送信することをさらに備える、前記方法。
【請求項６】
請求項１乃至５のいずれかに記載の方法であって、前記非管理サービスが前記リモートアクセスサーバとは異なるコンピューティングデバイス上で実行される、前記方法。
【請求項７】
請求項１乃至６のいずれかに記載の方法であって、前記非管理サービスが前記リモートアクセスサーバ上で実行される、前記方法。
【請求項８】
クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法であって、
第一アプリケーションサーバで前記非管理サービスを実行すること、
前記非管理サービスとリモートアクセスサーバとの間の通信接続を開くこと、
クライアントによる前記非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに情報を提供し、前記非管理サービスを前記リモートアクセスサーバに登録すること、
前記非管理サービスから前記リモートアクセスサーバに前記通信接続を介してキープアライブメッセージを送信すること、及び、
命令の受信に応答して前記非管理サービスから前記キープアライブメッセージを終了することを備える方法。
【請求項９】
請求項８に記載の方法であって、所定時間間隔で、前記非管理サービスから前記リモートアクセスに前記キープアライブメッセージを送信することをさらに備える、前記方法。
【請求項１０】
請求項８または９に記載の方法であって、前記非管理サービスでアウトプットスレッド及びインプットスレッドを実行することをさらに備え、前記アウトプットスレッドが前記リモートアクセスサーバに前記キープアライブメッセージを送信し、前記インプットスレッドが前記キープアライブメッセージの送信を終了させる命令を受信する、前記方法。
【請求項１１】
請求項１０に記載の方法であって、前記キープアライブメッセージを終了した後、前記インプットスレッド及び前記アウトプットスレッドにより前記クライアント接続を提供することをさらに備える、前記方法。
【請求項１２】
請求項８乃至１１のいずれかに記載の方法であって、前記第一アプリケーションサーバ及び前記リモートアクセスサーバは同一のコンピューティングデバイスである、前記方法。
【請求項１３】
請求項８乃至１２のいずれかに記載の方法であって、前記第一アプリケーションサーバが、前記リモートアクセスサーバと関連するコンピューティングデバイスとは異なるコンピューティングデバイスである、前記方法。
【請求項１４】
請求項８乃至１３のいずれかに記載の方法であって、前記命令がリモートアクセスサーバから受信される、前記方法。
【請求項１５】
請求項８乃至１４のいずれかに記載の方法であって、前記命令が、前記リモートアクセスサーバでクライアント接続要求に応答して受信される、前記方法。
【請求項１６】
請求項８乃至１５のいずれかに記載の方法であって、
少なくとも第二非管理サービスを少なくとも第二アプリケーションサーバで実行すること、
第二通信接続を前記少なくとも第二非管理サービスと前記リモートアクセスサーバとの間で確立すること、
クライアントによる前記少なくとも第二非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに情報を提供し、前記少なくとも第二非管理サービスを前記リモートアクセスサーバに登録すること、
前記少なくとも第二非管理サービスから前記リモートアクセスサーバに前記第二通信接続を介してキープアライブメッセージを送信すること、及び、
命令の受信に応答して、前記少なくとも第二非管理サービスからの前記キープアライブメッセージを終了させることをさらに備える、前記方法。
【請求項１７】
クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供装置であって、
前記クライアントと前記非管理サービスとの間で送信されるメッセージ用の通信プロキシであるサーバレイヤを有するリモートアクセスサーバ、及び
前記非管理サービスに関連するサービスレイヤを実行するアプリケーションサーバをさらに備え、
前記リモートアクセスサーバがキープアライブメッセージを前記非管理サービスから通信接続を介して受信し、前記リモートアクセスサーバが前記非管理サービスへのクライアント接続の要求を受信し、前記リモートアクセスサーバが前記非管理サービスにキープアライブ終了メッセージを送信し、前記非管理サービスへの前記クライアント接続の前記要求に応答して前記非管理サービスからの前記キープアライブメッセージ送信を終了する、装置。
【請求項１８】
請求項１７に記載の装置であって、前記リモートアクセスサーバがモニタスレッドを実行し、前記キープアライブメッセージを受信し前記クライアント接続の前記要求を監視する、前記装置。
【請求項１９】
請求項１７または１８に記載の装置であって、前記リモートアクセスサーバが、所定期間タイマを始動させて前記キープアライブメッセージが前記非管理サービスにより送信されているかを判断し、前記所定期間内に前記キープアライブメッセージが受信されなければ前記リモートアクセスサーバが前記非管理サービスの登録を消去する、前記装置。
【請求項２０】
請求項１７乃至１９のいずれかに記載の装置であって、前記リモートアクセスサーバ及び前記アプリケーションサーバが前記非管理サービスに関連するメッセージキューを保存し、前記クライアント接続の確立後メッセージを送信する、前記装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、２０１３年１１月２９日に出願された「クライアントサーバリモートアクセス環境におけるエンドツエンドフロー制御を用いたサーバサービス分離方法」と題する米国仮特許出願第６１／９１０,１８９号、及び、２０１４年２月２６日に出願された「クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法」と題する米国仮特許出願第６１／９４４，７２０号に対する優先権を主張するものであり、当該特許出願の開示は、それらの全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
サービスに対するユビキタスリモートアクセスは、広帯域無線ネットワークアクセスが発展し、利用が可能になった結果として、ありふれたものとなった。そのため、ユーザは増え続けている様々なクライアントデバイス（例えば、モバイルデバイス、タブレットコンピューティングデバイス、ラップトップ／ノートブック／デスクトップコンピュータなど）を使用してサービスにアクセスしている。リモートサーバは、３Ｇや４Ｇのモバイルデータネットワーク、ＷｉＦｉ及びＷｉＭａｘのような無線ネットワーク、有線ネットワークなどを含む多様なネットワーク上でサービスとクライアントデバイスとの間のデータやその他の情報を含んでいるメッセージを伝送することができる。
【０００３】
サービスは、同一のシステムノードまたはコンピューティングデバイス上に、統合されたリモートアクセス及びアプリケーションサーバとして展開され得るが、このサーバはクライアントデバイスが通信するサーバリモートアクセスプログラムも提供する。また、サービスは、サーバリモートアクセスプログラムを実行するリモートアクセスサーバとは異なるシステムノードに提供されたサーバ上で展開され得る。そのような環境は、インストール及び構成が軽量なプロセス、及び、多数のサービスを展開するが、リモートアクセスサーバではそのようなサービスの運用状態の維持に関する問題を抱えている。
【発明の概要】
【０００４】
本明細書では、管理されていない（非管理）サービスが動作可能であるかの判断にキープアライブ技法を使った非管理サービスの提供システム及び方法を開示する。本開示の態様に従って、クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法を提供する。当該方法は、クライアントによる非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに非管理サービスを登録し、両者間の通信接続を確立すること、リモートアクセスサーバで非管理サービスから通信接続を介してキープアライブメッセージを受信すること、非管理サービスへのクライアント接続の要求をリモートアクセスサーバで受信すること、及び、リモートアクセスサーバから非管理サービスへキープアライブ終了メッセージを送信し、非管理サービスへのクライアントの接続要求に応答して非管理サービスからのキープアライブメッセージ送信を終了することを備えることができる。
【０００５】
本開示の他の態様に従って、クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の別の提供方法を開示する。当該方法は、第一アプリケーションサーバで非管理サービスを実行すること、非管理サービスとリモートアクセスサーバとの間の通信接続を開くこと、クライアントによる非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに情報を提供し、非管理サービスをリモートアクセスサーバに登録すること、非管理サービスからリモートアクセスサーバに通信接続を介してキープアライブメッセージを送信すること、及び、命令の受信に応答して非管理サービスからのキープアライブメッセージを終了することを備えることができる。
【０００６】
本開示の更に他の態様に従って、クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供装置を開示する。当該装置は、クライアントと非管理サービスとの間で送信されるメッセージ用の通信プロキシであるサーバレイヤを有するリモートアクセスサーバ、及び、非管理サービスに関連するサービスレイヤを実行するアプリケーションサーバを備えることができる。リモートアクセスサーバは、キープアライブメッセージを非管理サービスから通信接続を介して受信し、ここで、リモートアクセスサーバは非管理サービスへのクライアント接続の要求を受信する。また、リモートアクセスサーバは、非管理サービスにキープアライブ終了メッセージを送信し、非管理サービスへのクライアント接続の要求に応答して非管理サービスからのキープアライブメッセージ送信を終了することもできる。
【０００７】
本開示の他の態様に従って、クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法を提供する。当該方法は、第一アプリケーションサーバで非管理サービスを実行すること、非管理サービスとリモートアクセスサーバとの間の通信接続を開くこと、クライアントによる第一非管理サービスへのリモートアクセスを提供するよう構成されたリモートアクセスサーバに初期ヘッダ情報を提供し、非管理サービスをリモートアクセスサーバに登録すること、非管理サービスからリモートアクセスサーバに通信接続を介してキープアライブメッセージを送信すること、及び、リモートアクセスサーバでのクライアントの接続要求命令の受信に応答して、非管理サービスからのキープアライブメッセージを終了することを備えることができる。
【０００８】
その他のシステム、方法、特徴及び／または利益は、次の図面と発明の詳細な説明を精査すると、この分野の通常の知識を有する者にとって明らかとなるであろう、または明らかとなり得る。そのような追加のシステム、方法、特徴及び／または利益の全ては、この記述のうちに含まれ、添付の請求項によって保護されることを意図している。
【図面の簡単な説明】
【０００９】
図面のコンポーネントは、必ずしも互いに相対的なスケールになっていない。同様な参照数字は、幾つかの表示を通して対応する部分を表わしている。
【図１Ａ】階層化アーキテクチャにおけるサービスへのクライアントリモートアクセスの例示的なサーバーサービスモデルを示す。
【図１Ｂ】階層化アーキテクチャにおけるサービスへのクライアントリモートアクセスの例示的なサーバーサービスモデルを示す。
【図２】本開示のキープアライブ通信を実施するよう、非管理サービスとリモートアクセスサーバにおいて実行されるスレッド間で送信される一連のメッセージを示すコールフローダイアグラムを示す。
【図３】図２に示すようなキープアライブ通信を実施するよう、非管理サービスにより実施されるプロセスの動作フローダイアグラムを示す。
【図４】図２で示すようなキープアライブ通信を実施するよう、リモートアクセスサーバにより実施されるプロセスの動作フローダイアグラムを示す。
【図５】例示的なコンピューティングデバイスを示す。
【発明を実施するための形態】
【００１０】
特に定義しない限り、本明細書で使用される全ての技術用語及び科学用語は、この分野の通常の知識を有する者が共通に理解しているものと同じ意味を有している。本明細書に記述されている方法及び材料と同様または均等なものは、本開示の実施や試験で使用することができる。実装についてはリモートアクセスするサービスについて記述されるが、この分野の通常の知識を有する者にとって、実装は当該実装に限定されず、リモートデバイスを介した任意のタイプのデータまたはサービスにリモートアクセスすることに適用できることは明らかであろう。
【００１１】
上述の概要を前置きとして、ここでは、階層化アーキテクチャにおけるサービスへのクライアントリモートアクセスを行う管理サーバーサービスモデル及び非管理サーバーサービスモデルの実施例を例示する図１Ａ及び１Ｂを参照する。図１Ａ（管理サービスモデル）に示されているように、クライアントレイヤ１１２を有するクライアント１０２は、サーバレイヤ１１４及びサービスレイヤ１１６を含むリモートアクセス及びアプリケーションサーバ１０３と通信できる。このように、サーバレイヤ１１４及びサービスレイヤ１１６は同じシステムノード上で実行される。クライアントレイヤ１１２は、接続されたサービスからの情報を表示するクライアント１０２でユーザインターフェースを提供するために使用される、例えば、ウエブブラウザ、専用アプリケーションなどのクライアントアプリケーションを含み得る。クライアントアプリケーションは、アプリケーションＩＤまたはアプリケーション名を使ってサービスに接続し得る。クライアント１０２は、リモートアクセス及びアプリケーションサーバ１０３に通信ネットワーク１２５によって接続される、例えば、ＩＰＨＯＮＥ（登録商標）、ＡＮＤＲＯＩＤ（登録商標）ベースデバイス、タブレットデバイスまたはデスクトップ／ノートブックパーソナルコンピュータなどの無線携帯デバイスであってもよい。
【００１２】
リモートアクセス及びアプリケーションサーバ１０３は、サーバレイヤ１１４において実行されるサーバリモートアクセスプログラムを含むことができる。サーバリモートアクセスプログラムは、サービスレイヤ１１６において実行される管理サービス１１５（例えばアプリケーション）にクライアント１０２を接続するために使用される。「管理（管理された）サービス」とは、クライアントが接続や切断する時、リモートアクセス及びアプリケーションサーバ１０３が管理サービス１１５の開始や終了を行うことでアプリケーション／プロセスライフサイクルを制御することを意味する。例えば、管理サービス１１５は医療画像アプリケーションであってもよい。リモートアクセス及びアプリケーションサーバ１０３内で、サーバレイヤ１１４のサーバリモートアクセスプログラムは、ＴＣＰソケット接続を使用し、例えば、リモートアクセス及びアプリケーションサーバ１０３のシステムバスによって、サービスレイヤ１１６のサービスに接続され得る。このため、サーバリモートアクセスプログラムとサービスの間の帯域幅は極めて高い。図１Ａの環境においてサービスまたはアプリケーションを追加するには、追加のサービスレイヤ１１６をリモートアクセス及びアプリケーションサーバ１０３上で展開する。あるいは、追加のサーバレイヤ１１４及びサービスレイヤ１１６を有する追加のリモートアクセス及びアプリケーションサーバ１０３を追加してもよい。クライアント１０２並びにリモートアクセス及びアプリケーションサーバ１０３の実施例は、図５に示されている。
【００１３】
図１Ｂ（非管理サービスモデル）を参照すると、サーバリモートアクセスプログラムが実行されるサーバレイヤ１１４を含むリモートアクセスサーバ１０４を含むサービスサーバモデルの実施例が示されている。アプリケーションサーバ１０６は、サービスまたはアプリケーションが実行されるサービスレイヤ１１６を含んでいる。図１Ｂの環境では、サービス（非管理サービス１１７として示されている）が、サーバリモートアクセスプログラムが実行されるシステムノードまたはコンピューティングデバイスと異なるシステムノードまたはコンピューティングデバイス上に提供される。非管理サービス１１７は、通信接続１２６によってリモートアクセスサーバ１０４と通信する。このように、サービスはサーバとは分離したノード上にある。ここでの「非管理（管理されていない）サービス」とは、リモートアクセスサーバ１０４と同じか異なるノード（例えばサーバ）上にあるが、アプリケーション／プロセスライフサイクルがリモートアクセスサーバ１０４により管理されていないアプリケーションのことである。むしろ、外部のエンティティ（エンドユーザまたは別のプロセスもしくはアプリケーション）がリモートアクセスサーバ外部のサービスを開始する。
【００１４】
通信接続１２６は、例えば、ＴＣＰ／ＩＰ通信ネットワーク、ＶＰＮ接続、専用接続などでよい。そのような環境では、図１Ａのリモートアクセス及びアプリケーションサーバ１０３の能力によってサービス展開が制限されることがないので、多数のサービスが展開される。そのため、ニーズに従ったサービスの作成及び削除が可能であり、スケーラビリティを提供できる。リモートアクセスサーバ１０４とアプリケーションサーバ１０６の実施例が図５に示されている。
【００１５】
図１Ｂでは、クライアント１０２は、通信接続１２５によって、リモートアクセスサーバ１０４に接続している。アプリケーションサーバ１０６は、所定のインターネットプロトコル（ＩＰ）アドレス及び／またはソケットで、あるいはリモートアクセスサーバ１０４に関連付けられたユニフォームリソースロケータ（ＵＲＬ）を使用して、リモートアクセスサーバ１０４に接続することができ、リモートアクセスサーバ１０４上で実行されるサーバリモートアクセスプログラムにサービスあるいはアプリケーションを登録する。サービスは、スタートアップすると、サーバサービスソケット接続（以下で詳述する）を使用してサーバに接続し、クライアントが接続できるキュー内非管理アプリケーションとしてセッションを確立する。
【００１６】
図１Ｂの環境において、非管理サービス１１７は、クライアント１０２を非管理サービス１１７に接続する前に、リモートアクセスサーバ１０４に登録してもよい。まず、リモートアクセスが可能なアプリケーション（すなわち、非管理サービス１１７）をアプリケーションサーバ１０６上で開始する。ここでの「リモートアクセスが可能」とは、サービスレイヤ１１６に実装されるソフトウエア開発キット（ＳＤＫ）の一部として提供される遠隔アクセスツールキットを使って実行するよう設計されたアプリケーションに対する定義であるとしてもよい。次に、非管理サービス１１７は、リモートアクセスサーバ１０４に接続し、リモートアクセスサーバ１０４に登録して両者間の通信を確立する。リモートアクセスが可能なアプリケーションは、１つまたは複数のクライアント１０２により接続可能な状態にあるので、「キュー内サービス」となる。キュー内サービスは、固有のアプリケーション名（リモートアクセスが可能なアプリケーションタイプごとの名前）、及び／またはキュー内サービスの接続に特有な固有のアプリケーションインスタンスＩＤでわかる。
【００１７】
クライアント１０２は、上記のように、リモートアクセスサーバ１０４に接続することで非管理サービス１１７に接続できる。リモートアクセスサーバ１０４に接続する際、クライアント１０２は、アプリケーションインスタンスＩＤを使ってキュー内サービスの所定インスタンスに接続してもよく、アプリケーション名を使って特定タイプのキューの先頭にある使用可能なサービスに接続してもよい。次に、リモートアクセスサーバ１０４は、クライアント１０２をキュー内サービスに容易に接続できるようにする。クライアントが接続されれば、当該キュー内サービスは「アクティブサービス」に移行される。別のクライアントが、固有のアプリケーションインスタンスＩＤを使って当該アクティブサービスに接続することもでき、これにより、接続した複数のクライアントが当該アクティブサービスと協働できる。サービスの追加は、それぞれが各通信接続１２６を介してリモートアクセスサーバ１０４と通信する追加アプリケーションサーバ１０６を追加することにより行ってもよい。例えば、第二（またはそれ以上の）アプリケーションサーバ１０６を追加し、第二（またはそれ以上）非管理サービス１１７を提供してもよい。
【００１８】
図１Ａ及び１Ｂの双方において、サーバリモートアクセスプログラムは、接続配列やアプリケーションマネジメントを提供する。サーバリモートアクセスプログラムの実施例は、ＰＵＲＥＷＥＢであり、カナダ国アルバータ州カルガリー市のカルガリーサイエンティフィック社から上市されている。
【００１９】
本開示の態様に従って、非管理サービスを図１Ｂに示すように展開する場合、リモートアクセスサーバ１０４で、非管理サービス１１７が切断されているか、クライアント接続プロセスでハングアップされているかを認識する必要性があるかもしれない。その場合キープアライブ技法を提供してもよい。当該技法では、非管理サービス１１７がキューの先頭にある場合、クライアント１０２が接続するまで、非管理サービス１１７がキープアライブメッセージをリモートアクセスサーバ１０４に送信する。
【００２０】
図２には、本開示のキープアライブ技法を実施するよう、非管理サービス１１７及びリモートアクセスサーバ１０４において実行されるスレッド間で送信される一連のメッセージを示すコールフローダイアグラムを示す。リモートアクセスサーバ１０４は、非管理サービス１１７からのキープアライブメッセージを監視するモニタスレッド２０６を開始し、キープアライブメッセージが設定可能時間内に受信されなかったとの判断により非管理サービス１１７が消去されたか、リモートアクセスサーバ１０４と非管理サービス１１７との間のサーバサービスソケット接続が予期せず閉じられたかを検出する。サーバサービスソケット接続が無ければ、クライアント１０２は当該サーバセッションを切断し、その後リモートアクセスサーバ１０４はサーバサービスソケットを閉じ、非管理サービス１１７をシステムからパージする。
【００２１】
しかし、キープアライブ通信が実行されている間、クライアント１０２が非管理サービス１１７に接続すれば、サーバサービスソケットに同時に書き込むスレッドが２つあることになり、キープアライブ通信により問題が起きるかもしれない。特に、クライアント１０２が接続されると、リモートアクセスサーバ１０４は、サーバサービスソケットからのサービス応答を読み出し、クライアント１０２に返信するスレッドを開始する。当該スレッドを開始する前に、リモートアクセスサーバ１０４は、確実に、モニタスレッド２０６がシャットダウンされサーバサービスソケットから一度に読み出すスレッドが１つしかないようにする必要がある。さもなければ、クライアント１２０に対して意図された応答がモニタスレッドによって取られてしまいクライアントサービス要求／応答プロトコルを切断するかもしれないリスクを負う。また、リモートアクセスサーバ１０４は、非管理サービス１１７がキープアライブメッセージの送信をストップしたことを確認する必要があり、そうしなければこれらメッセージはクライアント１１２に送信される可能性がある。ここで、クライアント１０２にはキープアライブメッセージをどうしたらよいかわからないであろう。
【００２２】
このように本開示に従って、クライアント１０２が非管理サービス１１７に接続する直前にキープアライブ通信をシャットダウンする。リモートアクセスサーバ１０４と非管理サービス１１７との間でハンドシェイクプロセスを実施し、クライアント１０２が接続している場合には規則的にキープアライブメッセージをシャットダウンし、通常プロセスを進める、すなわち、サービスインプット／アウトプットスレッドをキープアライブメッセージの送信からクライアントインプットの受信及びサービス応答の送信に移行させる。当該方法では、ソケットで１つのスレッドから別のスレッドにハンドオフが行われる。
【００２３】
図２は、本開示のキープアライブ通信を行うよう、非管理サービス及びリモートアクセスサーバで実行されるスレッド間で送信される一連のメッセージを示すコールフローダイアグラムを示す。図３は、図２に示すキープアライブ通信を行うよう、リモートアクセスサーバ１０４により実施されるプロセスの動作フローダイアグラム３００を示す。図４は、図２に示すキープアライブ通信を行うよう、非管理サービス１１７により実施されるプロセスの動作フローダイアグラム４００及び４２０を示す。動作フロー３００、４００及び４２０は、リモートアクセスサーバ１０４及び非管理サービス１１７により同時に実行され、上述したようにキープアライブ通信を行うことができる。
【００２４】
図２及び図４に示すように、非管理サービス１１７がリモートアクセスサーバ１０４に接続すると、インプットスレッド２０２及びアウトプットスレッド２０４が開始され、各動作フロー４００及び４２０がそれぞれ実行される。４２２において、アプリケーションＩＤ、プロセス名、及びプロセスＩＤ（すなわち、非管理サービス１１７に関する情報）が、初期ヘッダとしてリモートアクセスサーバ１０４に送信される（４２４において）。図３に示すように、３０４において、当該情報（４２２からの）はリモートアクセスサーバ１０４により受信される。３０６において、リモートアクセスサーバ１０４は、非管理サービス１１７を登録する。次に、モニタスレッド２０６が開始され、３００に示すようにモニタスレッド２０６の動作フローが開始される。
【００２５】
アウトプットスレッド２０４は、４２６においてループを開始し、当該ループでは、キープアライブメッセージが送信され、アウトプットスレッド２０４は、構成可能な時間（例えば、４２８において５００ｍｓ）待機し、キープアライブ送信終了が（４３０において、下で記述するようにリモートアクセスサーバ１０４から）受信されたかを判断する。キープアライブ送信終了が受信されていなければ、ループは４２６に戻る。キープアライブ送信終了を受信していれば、４３２においてアウトプットスレッド２０４はキープアライブメッセージの送信を終了する。４２８での待機時間は構成可能な時間であり、５００ｍｓ以外の時間であってもよいことに留意する。
【００２６】
上記と同時に、モニタスレッド２０６は３１２においてループ動作を開始し、３１４においてタイマをスタートし、アウトプットスレッド２０４からのキープアライブメッセージを読み出し（３１８において）、３２０においてタイマをキャンセルする。当該ループは、非管理サービス１１７がリモートアクセスサーバ１０４に接続されている間を通して、クライアント接続が受信されるまで実施される。３１４でスタートしたタイマがキープアライブメッセージを受信する前に時間切れになった場合、非管理サービス１１７が消去されたものとして、３１６において、非管理サービス１１７に関連するソケットが閉じられ、当該サービスの登録が解除される。
【００２７】
３１２でのループ動作と同時に、３０８において、クライアントが遠隔で非管理サーバ１１７にアクセス（例えば、リモートアクセスサーバ１０４のＵＲＬでのクライアント１０２からの接続）するようリモートアクセスサーバ１０４に接続操作中であることを、リモートアクセスサーバ１０４が判断してもよい。３０８での判断は、図２に示すように非管理サービス１１７がリモートアクセスサーバ１０４に接続した後、随時行ってもよい。３１０において、リモートアクセスサーバ１０４は、キープアライブメッセージ送信を終了するメッセージをインプットスレッド２０２に送信する。当該メッセージがインプットスレッドにより４０２において受信されると、４０４においてキープアライブ送信終了（ｓｔｏｐＳｅｎｄｉｎｇＫｅｅｐＡｌｉｖｅｓ）値を「ｔｒｕｅ」に設定する。４０６において、インプットスレッド２０２は、アウトプットスレッド２０４にキープアライブメッセージ送信を終了するよう通知する。
【００２８】
アウトプットスレッド２０４は、４３０においてインプットスレッド２０２からの通知がキープアライブメッセージ送信の終了を示しているか判断する。アウトプットスレッド２０４は、キープアライブメッセージ送信の終了通知を受信すると、４３２において終了し、「ｋｅｅｐ−ａｌｉｖｅ＝ｆａｌｓｅ」をモニタスレッド２０６に送信する。アウトプットスレッドは待機し、その後、クライアントが切断するまでクライアントの要求の処理（４３４において）をループする。リモートアクセスサーバ１０４は、モニタスレッドを終了し、３２２においてインプットスレッド２０２に通知確認を送信し、当該通知確認は４０８において受信される。リモートアクセスサーバ１０４は、３２４においてクライアント１０２との接続を完了する。インプットスレッド２０２は、クライアントが切断するまでクライアント要求の処理（４１０において）をループする。
【００２９】
このように、上記した技法の実施例により、キープアライブメッセージがソケットに送信され、非管理サービス１１７が応答可能で、クライアントが同一ソケットに、キーアライブ通信とクライアント接続プロセスとが混乱することなく接続可能であると判断できる。
【００３０】
図５は、例示的実施形態と態様が実装される例示のコンピューティング環境を示している。コンピューティングシステム環境は、適切なコンピューティング環境の一実施例であり、使用や機能性の範囲についてなんらの限定をも示唆することを意図していない。
【００３１】
多くの他の汎用または特定用途のコンピューティングシステム環境あるいは構成が使用できる。周知のコンピューティングシステム、環境及び／または使用に適切な構成の実施例は、パーソナルコンピュータ、サーバ、ハンドヘルドあるいはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、ネットワークパーソナルコンピュータ（ＰＣ）、マイクロコンピュータ、メインフレームコンピュータ、組み込みシステム、それらのシステムまたはデバイスのいずれかを備える分散コンピューティング環境などを含むが、それらに限定されない。
【００３２】
コンピュータによって実行されるプログラムモジュールなどのコンピュータが実行可能な命令を使用することができる。一般に、プログラムモジュールは、特定のタスクを実行するまたは特定のアブストラクトデータタイプを実装するルーティン、プログラム、オブジェクト、コンポーネント、データストラクチャなどを含む。分散コンピューティング環境は、タスクが通信ネットワークまたは他のデータ送信媒体を通して結合されるリモート処理デバイスによって実行される場合に、使用することができる。分散コンピューティング環境において、プログラムモジュールや他のデータは、メモリストレージデバイスを含むローカル及びリモートコンピュータストレージ媒体の両方にあってもよい。
【００３３】
図５について、以下に記述する態様を実装する例示のシステムは、コンピューティングデバイス５００などのコンピューティングデバイスを備えている。その最も基本的な構成においては、コンピューティングデバイス５００は、典型的には、少なくとも１つの処理ユニット５０２とメモリ５０４を含んでいる。正確な構成及びコンピューティングデバイスのタイプによるが、メモリ５０４は揮発性（ランダムアクセスメモリ（ＲＡＭ）など）、不揮発性（読み出し専用メモリ（ＲＯＭ）、フラッシュメモリなど）またはその２つのなんらかの組み合わせであってもよい。この最も基本的な構成が点線５０６によって図５に例示されている。
【００３４】
コンピューティングデバイス５００は、追加の特徴／機能性を持つことができる。例えば、コンピューティングデバイス５００は、磁気または光学ディスクあるいはテープを含むが、これらに限定されない追加のストレージ（取り外し可能及び／または取り外し不能）を含んでもよい。そのような追加のストレージが、図５において、取り外し可能ストレージ５０８及び取り外し不能ストレージ５１０によって例示されている。
【００３５】
コンピューティングデバイス５００は、典型的には、様々な有体的なコンピュータ可読媒体を含む。コンピュータ可読媒体は、デバイス５００によってアクセスできる任意の利用可能な有体的媒体であってよく、揮発性及び不揮発性、取り外し可能及び／または取り外し不能媒体の両方を含んでいる。
【００３６】
有体的コンピュータストレージ媒体は、コンピュータ可読命令、データストラクチャ、プログラムモジュールまたは他のデータなどの情報の保存の任意の方法または技術で実装される揮発性及び不揮発性、取り外し可能及び／または取り外し不能媒体を含むものである。メモリ５０４、取り外し可能ストレージ５０８及び取り外し不能ストレージ５１０は、全てコンピュータストレージ媒体の実施例である。有体的コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、電気的に消去可能なプログラム読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多様性ディスク（ＤＶＤ）または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージあるいは他の磁気ストレージデバイス、もしくは所望の情報を保存するために使用でき、かつ、コンピューティングデバイス５００によってアクセスできる任意の他の媒体を含むが、これらに限定されない。任意のその種のコンピュータストレージ媒体は、コンピューティングデバイス５００の一部であり得る。
【００３７】
コンピューティングデバイス５００は、デバイスが他のデバイスと通信可能になる通信接続５１２を含んでいる。コンピューティングデバイス５００は、また、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス５１４を有する。ディスプレイ、スピーカ、プリンタなどの出力デバイス５１６も含むことができる。全てのこれらのデバイスはこの分野で周知であって、ここで長々と考察する必要はない。
【００３８】
ここで記述されているいろいろな手法は、ハードウエアまたはソフトウエア、適切であればそれらの両方の組み合わせに関連付けて、実装することができる。従って、ここで開示されている主題の方法と装置、あるいはそれらのある特定の態様または部分は、フロッピーディスケット、ＣＤ−ＲＯＭ、ハードドライブ、あるいは任意の他のマシーン可読ストレージ媒体などの有体的媒体に実施されたプログラムコード（すなわち、命令）の形態を取ることができ、プログラムコードがコンピュータなどのマシーンに読み込まれ、実行されるとき、当該マシーンは現在開示している主題を実施する装置となる。プログラマブルコンピュータ上でプログラムコードを実行する場合、コンピューティングデバイスは、一般的には、プロセッサ、プロセッサによって可読のストレージ媒体（揮発性及び不揮発性メモリ及び／またはストレージエレメントを含む）、少なくとも１つの入力デバイスと少なくとも１つの出力デバイスを含んでいる。1つまたは複数のプログラムは、例えば、アプリケーションプログラミングインターフェース（ＡＰＩ）、再使用可能なコントロールなどの使用を介して、現在開示されている主題に関連して記述されているプロセスを実装し、または使用することができる。そのようなプログラムは、コンピュータシステムと通信するために、高いレベルの手続型またはオブジェクト指向プログラミング言語で実装できる。しかし、プログラムは、所望により、アッセンブリまたはマシーン言語で実装することができる。いずれにしても、その言語は、コンパイルされるか解釈される言語でよく、ハードウエア実装と組み合わせることができる。
【００３９】
主題は構造的特徴及び／または方法論的行動に特化している言葉で記述されているが、添付の特許請求範囲で定義されている主題は、上述の特定の特徴や行動に必ずしも限定される訳ではない。むしろ、上述の特定の特徴と行動は、特許請求の範囲を実施する例示の形態として開示されている。
【符号の説明】
【００４０】
１０２  クライアント
１０３  リモートアクセス及びアプリケーションサーバ
１０４  リモートアクセスサーバ
１０６  アプリケーションサーバ
１１２  クライアントレイヤ
１１４  サーバレイヤ
１１５  管理サービス
１１６  サービスレイヤ
１１７  非管理サービス
２０２  インプットスレッド
２０４  アウトプットスレッド
２０６  モニタスレッド
５００  コンピューティングデバイス
５０４  メモリ
５０８  取り外し可能ストレージ
５１０  取り外し不能ストレージ
５１４  入力デバイス
５１６  出力デバイス
【図１Ａ】
2017505473.tif 000003
【図１Ｂ】
2017505473.tif 000004
【図２】
2017505473.tif 000005
【図３】
2017505473.tif 000006
【図４】
2017505473.tif 000007
【図５】
2017505473.tif 000008
【国際調査報告】
2017505473.tif 000009
2017505473.tif 000010