(57)【要約】【課題】  第２の通信プロトコルを用いるアプリケーションに向けられた、第１の通信を用いることによって伝送される要求を処理するための方法を提供すること。【解決手段】  伝送される要求は、第１の通信プロトコルでネットワークを介してクライアントから受け取られる。要求が、データ構造内に示されたアプリケーションの識別子を含んでいるかどうかの判定がなされる。要求内に含まれる識別子がデータ構造内で示されているという判定に応答して、識別子によって識別されたアプリケーションとの間の通信を可能にするソケットが作成される。ソケットは、要求されたリソースに関連するアプリケーションに対して提供され、そのアプリケーションがネットワークを介して第２の通信プロトコルを用いてクライアントと通信することを可能にする。【選択図】      図１
2008533784.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信プロトコルでネットワークを介してクライアントから要求を受け取るステップと、
前記要求が、データ構造内に示されたアプリケーションの識別子を含むかどうかを判定するステップと、
前記要求内に含まれる前記識別子が前記データ構造内に示されているという判定に応答して、該識別子によって識別された前記アプリケーションとの通信を可能にするソケットを作成するステップと、
前記アプリケーションが前記ネットワークを介して第２の通信プロトコルを用いて前記クライアントと通信することを可能にするために、要求されたリソースに関連する前記アプリケーションに対して前記ソケットを提供するステップと、
を含む、方法。
【請求項２】
前記第２の通信プロトコル及び前記提供されたソケットを用いて、前記要求に対する応答を前記アプリケーションによって伝送するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記要求が前記データ構造内に示される１つのアプリケーションの識別子を含まないという判定に応答して、前記クライアントからの前記要求を第１の通信プロトコル・サーバに渡すステップをさらに含む、請求項１に記載の方法。
【請求項４】
前記第１の通信プロトコルがハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコルを含み、前記サーバがＨＴＴＰサーバを含み、前記識別子が統一資源識別子（ＵＲＩ）を含み、前記第２の通信プロトコルがＨＴＴＰ以外のアプリケーション層プロトコルを含む、請求項３に記載の方法。
【請求項５】
前記要求が、ＨＴＴＰのＧＥＴ又はＰＯＳＴ要求を含む、請求項４に記載の方法。
【請求項６】
各々が１つのアプリケーションを識別する複数の識別子が前記データ構造内に示され、前記第１の通信プロトコルを用いて、該データ構造内にその識別子が示されている前記アプリケーションによって通信を開始することができる請求項３に記載の方法であって、
前記アプリケーション及び前記第１の通信プロトコル・サーバに対する要求についてポートを監視するステップをさらに含む、
方法。
【請求項７】
前記要求内に含まれる前記識別子が前記データ構造内に示されているかどうかを判定する前記ステップが、該要求内に含まれる該識別子に対する登録された関数があるかどうかを判定するステップを含み、且つ前記アプリケーションに対して前記ソケットを提供する前記ステップが、前記生成されたソケットによって前記登録された関数を呼び出すステップを含む、請求項１に記載の方法。
【請求項８】
前記クライアントから前記アプリケーションへのさらなる通信が、前記第２の通信プロトコルを用いて前記ソケットを通じて生じる、請求項１に記載の方法。
【請求項９】
監視スレッド上で前記第１の通信プロトコルでの要求についてポートを監視するステップと、
１つのアプリケーションが前記要求されたリソースと関連するという判定に応答して前記ソケットを生成し、前記アプリケーションに該ソケットを提供するために、付加的なスレッドを生み出すステップと、
をさらに含む、請求項１に記載の方法。
【請求項１０】
アプリケーションについてのコールバック関数及び識別子の登録を受け取るステップと、
前記データ構造内に、前記アプリケーションと、前記受け取ったコールバック関数と、前記受け取った識別子との関連付けを示すステップとをさらに含み、
前記要求内に含まれる前記識別子が前記データ構造内に示されているかどうかを判定する前記ステップが、前記データ構造が前記要求内の前記識別子に対応する１つのコールバック関数を示しているかどうかを判定するステップを含み、
前記識別子によって識別された前記アプリケーションに対して前記ソケットを提供する前記ステップが、前記生成されたソケットをパラメータとして前記コールバック関数を呼び出すステップを含む、
請求項１に記載の方法。
【請求項１１】
前記要求がさらに認証情報を含む請求項１に記載の方法であって、
前記要求内の前記認証情報を処理することによって前記要求を認証しようとするステップをさらに含み、１つのアプリケーションが前記リソースに関係するかどうかを判定し、前記ソケットを生成し、前記ソケットを提供する前記ステップが、前記要求内の前記認証情報を認証する前記ステップに応答して行われる、
請求項１に記載の方法。
【請求項１２】
前記要求されたリソースに関連する前記アプリケーションが、レガシー・アプリケーションを含む、請求項１に記載の方法。
【請求項１３】
前記第１及び第２の通信プロトコルが、異なるアプリケーション層プロトコルを含む、
請求項１に記載の方法。
【請求項１４】
前記要求がウェブサービス・アプリケーションに向けられており、前記ウェブサービス・アプリケーションは前記データ構造内に示されており、前記ウェブサービス要求を受け取る前記ソケットが前記ウェブサービス・アプリケーションに対して提供されて該ウェブサービス要求を開始した前記クライアントと前記第２の通信プロトコルを用いて通信することを可能にする、請求項１に記載の方法。
【請求項１５】
第１の通信プロトコルで要求を生成し、ネットワークを介してサーバ内のアプリケーションとの通信を開始するステップであって、前記要求が前記サーバ内のアプリケーションの識別子を含む、ステップと、
前記第１の通信プロトコルを用いて前記ネットワークを介して前記サーバに前記要求を伝送するステップと、
前記サーバから、第２の通信プロトコルで前記サーバ内の前記アプリケーションからの応答を受け取るステップであって、前記第２の通信プロトコルが、前記サーバ内の前記アプリケーションとのさらなる通信のために使われる、ステップと、
を含む、方法。
【請求項１６】
前記第１の通信プロトコルがハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコルを含み、前記サーバがＨＴＴＰサーバを含み、前記識別子が統一資源識別子（ＵＲＩ）を含み、前記第２の通信プロトコルがＨＴＴＰ以外のアプリケーション層プロトコルを含む、請求項１５に記載の方法。
【請求項１７】
ネットワークを介してクライアントと通信するシステムであって、
プロセッサと、
前記プロセッサと通信し、且つデータ構造を含むメモリと、
前記プロセッサによって実行されて動作を行うコードを含むコンピュータ可読媒体とを含み、前記動作が、
（ｉ）第１の通信プロトコルで前記ネットワークを介して前記クライアントから要求を受け取るステップと、
（ｉｉ）前記要求が、前記データ構造内に示されたアプリケーションの識別子を含むかどうかを判定するステップと、
（ｉｉｉ）前記要求内に含まれる前記識別子が前記データ構造内に示されているという判定に応答して、該識別子によって識別された前記アプリケーションとの通信を可能にするソケットをメモリ内で作成するステップと、
（ｉｖ）前記アプリケーションが前記ネットワークを介して第２の通信プロトコルを用いて前記クライアントと通信することを可能にするために、前記要求されたリソースに関連する前記アプリケーションに対して前記ソケットを提供するステップと、
を含む、システム。
【請求項１８】
第１の通信プロトコル・サーバをさらに含み、前記動作が、
前記要求が、前記データ構造内に示される１つのアプリケーションの識別子を含まないという判定に応答して、前記クライアントからの前記要求を前記第１の通信プロトコルに渡すステップをさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記動作が、
アプリケーションについてのコールバック関数及び識別子の登録を受け取るステップと、
前記データ構造内に、前記アプリケーションと、前記受け取ったコールバック関数と、前記受け取った識別子との関連付けを示すステップとをさらに含み、
前記要求内に含まれる前記識別子が前記データ構造内に示されているかどうかを判定する前記ステップが、前記データ構造が前記要求内の前記識別子に対応する１つのコールバック関数を示しているかどうかを判定するステップを含み、
前記識別子によって識別された前記アプリケーションに対して前記ソケットを提供する前記ステップが、前記生成されたソケットをパラメータとして前記コールバック関数を呼び出すステップを含む、
請求項１７に記載のシステム。
【請求項２０】
前記第１及び第２の通信プロトコルが異なるアプリケーション層プロトコルを含む、請求項１７に記載のシステム。
【請求項２１】
ネットワークを介してサーバと通信するシステムであって、
プロセッサと、
前記プロセッサと通信し、且つデータ構造を含むメモリと、
前記プロセッサによって実行されて動作を行うコードを含むコンピュータ可読媒体とを含み、前記動作は、
（ｉ）第１の通信プロトコルで要求を生成し、前記ネットワークを介して前記サーバ内のアプリケーションとの通信を開始するステップであって、前記要求が前記サーバ内のアプリケーションの識別子を含む、ステップと、
（ｉｉ）前記第１の通信プロトコルを用いて前記ネットワークを介して前記サーバに前記要求を伝送するステップと、
（ｉｉｉ）前記サーバから、第２通信プロトコルで前記サーバ内の前記アプリケーションからの応答を受け取るステップであって、前記第２の通信プロトコルが、前記サーバ内の前記アプリケーションとのさらなる通信のために使われる、ステップと
を含む、システム。
【請求項２２】
前記第１の通信プロトコルがハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコルを含み、前記サーバがＨＴＴＰサーバを含み、前記識別子が統一資源識別子（ＵＲＩ）を含み、前記第２の通信プロトコルがＨＴＴＰ以外のアプリケーション層プロトコルを含む、請求項２１に記載のシステム。
【請求項２３】
ネットワークを介してクライアントと通信し、データ構造にアクセスし、且つ動作を実行させるためのコードを含む製品であって、前記動作が、
第１の通信プロトコルで前記ネットワークを介して前記クライアントから要求を受け取るステップと、
前記要求が、前記データ構造内に示されたアプリケーションの識別子を含むかどうかを判定するステップと、
前記要求内に含まれる前記識別子が前記データ構造内に示されているという判定に応答して、該識別子によって識別された前記アプリケーションとの通信を可能にするソケットを作成するステップと、
前記アプリケーションが前記ネットワークを介して第２の通信プロトコルを用いて前記クライアントと通信することを可能にするために、前記要求されたリソースに関連する前記アプリケーションに対して前記ソケットを提供するステップと、
を含む、製品。
【請求項２４】
前記動作が、
前記第２の通信プロトコル及び前記提供されたソケットを用いて、前記要求に対する応答を前記アプリケーションによって伝送するステップ、
をさらに含む、請求項２３に記載の製品。
【請求項２５】
さらに第１の通信プロトコル・サーバと通信し、前記動作が、
前記要求が前記データ構造内に示される１つのアプリケーションの識別子を含まないという判定に応答して、前記クライアントからの前記要求を前記第１通信プロトコル・サーバに渡すステップ、
をさらに含む、請求項２３に記載の製品。
【請求項２６】
前記第１の通信プロトコルがハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコルを含み、前記サーバがＨＴＴＰサーバを含み、前記識別子が統一資源識別子（ＵＲＩ）を含み、前記第２の通信プロトコルがＨＴＴＰ以外のアプリケーション層プロトコルを含む、請求項２５に記載の製品。
【請求項２７】
前記要求が、ＨＴＴＰのＧＥＴ又はＰＯＳＴ要求を含む、請求項２６に記載の製品。
【請求項２８】
各々が１つのアプリケーションを識別する複数の識別子が前記データ構造内に示され、前記第１の通信プロトコルを用いて、該データ構造内にその識別子が示されている前記アプリケーションによって通信を開始することができ、
前記動作が、
前記アプリケーション及び前記第１の通信プロトコル・サーバに対する要求についてポートを監視するステップ、
をさらに含む、請求項２５に記載の製品。
【請求項２９】
前記要求内に含まれる前記識別子が前記データ構造内に示されているかどうかを判定する前記ステップが、該要求内に含まれる該識別子に対する登録された関数があるかどうかを判定するステップを含み、且つ前記アプリケーションに対して前記ソケットを提供する前記ステップが、前記生成されたソケットによって前記登録された関数を呼び出すステップを含む、請求項２３に記載の製品。
【請求項３０】
前記クライアントから前記アプリケーションへのさらなる通信が、前記第２の通信プロトコルを用いて前記ソケットを通して生じる、請求項２３に記載の製品。
【請求項３１】
さらにポートと通信し、前記動作が、
監視スレッド上で前記第１の通信プロトコルでの要求についてポートを監視するステップと、
１つのアプリケーションが前記要求されたリソースと関連するという判定に応答して前記ソケットを生成し、前記アプリケーションに対して該ソケットを提供するために、付加的なスレッドを生み出すステップと、
をさらに含む、請求項２３に記載の製品。
【請求項３２】
前記動作が、
アプリケーションについてのコールバック関数及び識別子の登録を受け取るステップと、
前記データ構造内に、前記アプリケーションと、前記受け取ったコールバック関数と、前記受け取った識別子との関連付けを示すステップとをさらに含み、
前記要求に含まれる前記識別子が前記データ構造内に示されているかどうかを判定する前記ステップが、前記データ構造が前記要求内の前記識別子に対応する１つのコールバック関数を示しているかどうかを判定するステップを含み、
前記識別子によって識別された前記アプリケーションに対して前記ソケットを提供する前記ステップが、前記生成されたソケットをパラメータとして前記コールバック関数を呼び出すステップを含む、
請求項２３に記載の製品。
【請求項３３】
前記要求がさらに認証情報を含み、前記動作が、
前記要求内の前記認証情報を処理することによって前記要求を認証しようとするステップをさらに含み、１つのアプリケーションが前記リソースに関係するかどうかを判定し、前記ソケットを生成し、前記ソケットを提供する前記ステップが、前記要求内の前記認証情報を認証する前記ステップに応答して行われる、
請求項２３に記載の製品。
【請求項３４】
前記要求されたリソースに関連する前記アプリケーションが、レガシー・アプリケーションを含む、請求項２３に記載の製品。
【請求項３５】
第１及び第２の通信プロトコルが、異なるアプリケーション層プロトコルを含む、請求項２３に記載の製品。
【請求項３６】
前記要求がウェブサービス・アプリケーションに向けられており、前記ウェブサービス・アプリケーションは前記データ構造内に示されており、前記ウェブサービス要求を受け取る前記ソケットが前記ウェブサービス・アプリケーションに対して提供されて該ウェブサービス要求を開始した前記クライアントと前記第２の通信プロトコルを用いて通信することを可能にする、請求項２３に記載の製品。
【請求項３７】
製品が、ネットワークを介してサーバと通信し、動作を実行させるためのコードを含む製品であって、前記動作が、
第１の通信プロトコルで要求を生成し、ネットワークを介してサーバ内のアプリケーションとの通信を開始するステップであって、前記要求がサーバ内のアプリケーションの識別子を含む、ステップと、
前記第１の通信プロトコルを用いて前記ネットワークを介して前記サーバに前記要求を伝送するステップと、
前記サーバから、第２通信プロトコルで前記サーバ内の前記アプリケーションからの応答を受け取るステップであって、前記第２の通信プロトコルが、前記サーバ内の前記アプリケーションとのさらなる通信のために使われる、ステップと
を含む、製品。
【請求項３８】
前記第１の通信プロトコルがハイパーテキスト転送プロトコル（ＨＴＴＰ）プロトコルを含み、前記サーバがＨＴＴＰサーバを含み、前記識別子が統一資源識別子（ＵＲＩ）を含み、前記第２の通信プロトコルがＨＴＴＰ以外のアプリケーション層プロトコルを含む、請求項３７に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第２の通信プロトコルを用いるアプリケーションに向けられた、第１の通信を用いることによって伝送される要求を処理するための方法、システム、及びプログラムに関する。
【背景技術】
【０００２】
サーバ・マシンは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）サーバ・アプリケーションのホストとして、ポート上のＨＴＴＰクライアントからのＨＴＴＰ要求を処理することができる。サーバ・マシンは、また、ＨＴＴＰ要求に用いられるポート以外のポート上で非ＨＴＴＰアプリケーション及びサービスへのアクセスを提供することもできる。複数のポートを有するファイアウォールを管理する複雑さは、ポートの数が増すにつれて増大する。さらに、サーバ・マシン上で複数のポートを開けたままにしておくことは、ハッカー及び他のセキュリティ上の脅威がサーバ・マシンにアクセスする更なるポイントを与えることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、第２の通信プロトコルを用いるアプリケーションに向けられた、第１の通信を用いることによって伝送される要求を処理するための方法、システム、及びプログラムを提供することである。
【課題を解決するための手段】
【０００４】
第２の通信プロトコルを用いるアプリケーションに向けられた、第１の通信を用いることによって伝送される要求を処理するための方法、システム、及びプログラムが提供される。要求は、第１の通信プロトコルでネットワークを介してクライアントから受け取られる。要求が、データ構造内に示されたアプリケーションの識別子を含んでいるかどうかの判定がなされる。要求内に含まれる識別子がデータ構造内で示されているという判定に応答して、識別子によって識別されたアプリケーションとの間の通信を可能にするソケットが作成（processed)される。ソケットは、要求されたリソースに関連するアプリケーションに対して提供され、そのアプリケーションがネットワークを介して第２の通信プロトコルを用いてクライアントと通信することを可能にする。
【発明を実施するための最良の形態】
【０００５】
ここで、以下の図面を参照して、本発明の好ましい実施形態を例示のみの目的で説明する。
以下の説明において、本明細書の一部を成し、本発明のいくつかの実施形態を例証する添付の図面を参照する。他の実施形態を利用することができること、並びに構造上及び操作上の変更を成すことができることが理解される。
【０００６】
図１は、ネットワーク６を介して通信するサーバ・マシン２及びクライアント・マシン４を含むネットワーク・コンピュータ環境を示す。ネットワーク６を介してサーバ・マシンと通信するクライアント・マシン４は複数の場合もある。クライアント・マシン４は、サーバ・アプリケーション１０との通信を意図したクライアント・アプリケーション８を含む。クライアント−サーバ・アプリケーションは、データベース・アプリケーション、バックアップ・ストレージ管理プログラム、又は当業者には公知の他のクライアント−サーバ・アプリケーションを含むことができる。サーバ・アプリケーションとの通信を開始するために、クライアント・アプリケーション８は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求１２を生成し、ＨＴＴＰプロトコルを用いてこの要求を伝達する。しかしながら、この初期ＨＴＴＰ要求１２に続いて、その後のクライアント・アプリケーション８とサーバ・アプリケーション１０との間の通信は、簡易ネットワーク管理プロトコル（Simple Network Management Protocol）（ＳＮＭＰ）、簡易メール転送プロトコル（Simple Mail Transfer Protocol）（ＳＭＴＰ）、ファイル転送プロトコル（File Transfer Protocol）（ＦＴＰ）、テルネット（Telnet）、及び任意のＴＣＰ／ＩＰをベースとするクライアント・アプリケーション８とサーバ・アプリケーション１０との間の対話といった、当業者には公知のＨＴＴＰ以外のアプリケーション層通信プロトコルの使用を伴う。サーバ・マシン２及びクライアント・マシン４はまた、ネットワークを介して通信するために、トランスポート層プロトコル、ネットワーク層プロトコル、及びデータリンク層プロトコルも用いる。アプリケーション層は、アプリケーション１０、８プロセスについてアプリケーション・サービスの共通の通信を可能にし、関連アプリケーション・プロセス間での意味変換を提供する。
【０００７】
サーバ・マシン２は、１つ又は複数のポート１４ａ、１４ｎ及びメモリ１４を含み、ポート１４ａ、１４ｂは、１つ又は複数のネットワーク・アダプタ（図示せず）との物理的接続を表す。メモリ１４は、アプリケーション１０、待ち受けポート(listener port）１６、ＨＴＴＰサーバ１８、通信ソケット２０、及びアプリケーション・レジストリ２２を含む。待ち受けポート１６は、ＨＴＴＰサーバ１８に向けられたＨＴＴＰプロトコルでの着信（inbound communications）について、１つのポート、例えば１４ａを監視するプログラムを含む。ＨＴＴＰサーバ１８は、ＨＴＴＰ要求を処理して要求に対する応答を提供する。通信ソケット２０は、ネットワーク接続、例えば６を介して情報を送受信するために使われるプログラム構成を含む。ポート上で待ち受けている場合、アプリケーション１０は、着信接続（inbound connection）がなされたときに待ち受けポート１６からソケットを受け取ることによって接続を受け入れる。同様に、クライアント・アプリケーション８がリモートプログラム、例えばアプリケーション１０への接続を確立したい場合、クライアント・アプリケーション８は、宛て先アドレス及びポートナンバーを指定するソケットを生成し、そのソケットを開いて接続を確立する。クライアント・アプリケーション又はサーバ・アプリケーションが接続を閉じると、ソケットは破棄され、ポート上の次の着信接続が、接続に使う新しいソケットをプログラムに返すことになる。ネットワーク６を介して１つのクライアント・マシン４内の１つのクライアント・アプリケーション８とのアクティブな通信リンクを有する各サーバ・アプリケーション１０ごとに、１つのソケット２０が存在し得る。ソケット２０は、クライアント・マシン４のネットワーク・アドレス、例えばインターネット・プロトコル（ＩＰ）アドレス、トランスポート層プロトコル、例えばＴＣＰ、及びポート１４ａ、１４ｎナンバーなどの情報を維持することができる。このように、サーバ・アプリケーション１０は、ソケット２０を用いてクライアント・アプリケーション８に対する通信を指示する。ソケット２０は、ＨＴＴＰ、すなわち最初の通信に使われたアプリケーション層プロトコル以外のアプリケーション層プロトコルを用いた、サーバ・アプリケーション１０とクライアント・アプリケーション８との間のネットワーク６を介した通信を可能にする。
【０００８】
クライアント・マシン４は、ネットワーク６を介してサーバ・マシン２と通信することができる、当業者には公知のサーバ、デスクトップ・コンピュータ、ワークステーション、メインフレーム、携帯端末、電話機などを含むことができる。サーバ・マシン２は、複数のシステムからのバックアップ・メッセージを管理するための、当業者には公知の適切なサーバシステムを含むことができる。ネットワーク６は、広域ネットワーク（Wide Area Network）（ＷＡＮ）、ローカル・エリア・ネットワーク（LocalArea Network）（ＬＡＮ）、ストレージ・エリア・ネットワーク（Storage AreaNetwork）（ＳＡＮ）、無線ネットワーク、インターネット、及びイントラネットなどのような、当業者には公知の１つ又はそれ以上のネットワークを含むことができる。
【０００９】
１つの実施形態において、アプリケーション１０は、ＨＴＴＰサーバ１８では処理されない、より古いレガシー・アプリケーション層プロトコルを利用する、レガシー・アプリケーションを含むことができる。
【００１０】
図２は、ＨＴＴＰ以外のアプリケーション層プロトコルを用いて通信する各アプリケーション１０ごとに維持される、アプリケーション・レジストリ２２におけるエントリ５０を示す。エントリ５０は、アプリケーション１０の統一資源識別子（Uniform resource Identifier）（ＵＲＩ）５２、すなわちアプリケーション１０の名前と、ソケット２０で呼び出されてクライアント・アプリケーション８からの要求を引き渡し、サーバ・アプリケーション１０との通信を開始することができるコールバック関数１２とを含む。
【００１１】
図３は、サーバ・アプリケーション１０との通信を開始するためにクライアント・アプリケーション８によって行われる動作を説明している。（ブロック１００において）サーバ・アプリケーション１０と通信するための動作を開始するために、（ブロック１０２において）クライアント・アプリケーション８は、第１の通信プロトコル（例えば、ＨＴＴＰ）で要求１２（ＧＥＴ又はＰＯＳＴ）を生成し、ネットワーク６を介してサーバ・アプリケーション１０との通信を開始する。ＨＴＴＰ要求１２は、目標とするサーバ・アプリケーション１０を識別する識別子（例えばＵＲＩ）を含む。既に述べたように、クライアント・アプリケーション８及びサーバ・アプリケーション１０は、レガシー・アプリケーション層プロトコルのようなＨＴＴＰ以外のアプリケーション層プロトコルを用いて通信することができるが、初期通信要求１２は、ＨＴＴＰ要求１２を含む。初期ＨＴＴＰ要求１２がサーバ・マシン２でうまく処理されると、クライアント・アプリケーション８は(ブロック１０４において)、第２の通信プロトコル、すなわちＨＴＴＰ以外のアプリケーション層プロトコルでサーバ・アプリケーション１０から応答を受け取る。この非ＨＴＴＰアプリケーション層プロトコルは、ＨＴＴＰ要求１２で初期化されたセッションの期間を通じて、クライアント・アプリケーション８とサーバ・アプリケーション１０との間のその後の通信の間中、使用される。
【００１２】
図４は、１つのサーバ・アプリケーション１０とクライアント・アプリケーション８との間のＨＴＴＰ（すなわち、初期リンクを確立するために使われたアプリケーション層プロトコル）以外の通信プロトコル、すなわちアプリケーション層プロトコルを使用する接続を確立するために、サーバ・マシン２内で行われる動作の実施形態を示す。ブロック１５０において、待ち受けポート１６は、アプリケーション１０及びＨＴＴＰサーバ１８に対する要求について、監視スレッド上で１つのポート、例えば１４ａを監視する。(ブロック１５２で)クライアント要求、例えばＨＴＴＰ要求１２を第１の通信(アプリケーション層)プロトコルで受け取ると、待ちうけポート１６は、（ブロック１５４で）データ構造、すなわちアプリケーション・レジストリ２２内に、要求内で識別されたアプリケーションに対応する登録された関数５０（図２）があるかどうかを判定する。ない場合は、この要求は通常のＨＴＴＰ要求として、第１の通信プロトコル（例えばＨＴＴＰ）サーバによって処理される。このような要求は、アプリケーション１０のうちの１つに対する要求であることが意図されていない。（ブロック１５４で）ＨＴＴＰ要求１２がアプリケーション・レジストリ２２内に登録されたアプリケーション識別子を含む場合は、(ブロック１５８で)、ＨＴＴＰ要求１２を開始したクライアント・アプリケーション８からの要求を処理するための付加的なスレッドが生み出される（spawn）。付加的なスレッドを生み出すことによって、待ち受けポート１６が実行するメインスレッドは、更なる接続のためにポート１４ａ、１４ｂの待ち受けに戻ることができる。代替的な実施形態においては、スレッドの生み出し（threading）は用いられない場合があり、サーバ・アプリケーション１０は一度に１つの接続に対処することしかできない。生み出されたスレッドはさらに、(ブロック１６０で)、要求内で識別されたサーバ・アプリケーション１０に生成されたソケット２０を提供する。１つの実施形態において、生成されたソケット２０はアプリケーション１０に提供され、登録されたコールバック関数５６をソケットで呼び出すことによってアプリケーションが要求に応答することを可能にし、レジストリ・エントリ５０において(フィールド１５４で）識別されたアプリケーション１０が、ネットワーク６を介して第１の通信プロトコル、例えばＨＴＴＰとは異なる、第２の通信（アプリケーション層プロトコル）を用いてクライアント・マシン４と通信することを可能にすることができる。
【００１３】
クライアント・アプリケーション８及びサーバ・アプリケーション１０は通信のためにＨＴＴＰプロトコルを使わず、ＨＴＴＰサーバ１８を迂回しようとするにもかかわらず、このソケットは、クライアント・アプリケーション８及びサーバ・アプリケーション１０がＨＴＴＰサーバ１８に向けられたＨＴＴＰ要求によって使われたのと同じポート１４ａを通じて通信することを可能にする。新しいスレッドを生み出すことによって、１つの実施形態においては、待ち受けポート１６にポート１４ａの監視を実行させる監視スレッドは、要求するクライアント・アプリケーション８との通信を処理するためにスレッドを生成し、アプリケーション１０を呼び出すという動作を行わなければならないという責務を負わない。コールバック関数による呼び出しに応えて、サーバ・アプリケーション１０は、（ブロック１６２において）ＨＴＴＰ要求に対する応答をＨＴＴＰ以外のアプリケーション層プロトコルのような第２の通信プロトコルを用いて発信することができる。この応答の後に、クライアント・アプリケーション８及びサーバ・アプリケーション１０は、アプリケーションの通信のために確立されたソケットを通じて通信し、これはサーバ側ではソケット２０である。
【００１４】
図５は、待ち受けポート１６によって、アプリケーション・レジストリ２２にアプリケーション１０についてのエントリ５０（図２）を登録するために行われる動作を示す。待ち受けポート１６が（ブロック２００で）アプリケーション１０についてのコールバックアドレス及び識別子（例えばＵＲＩ)の登録を受け取ると、待ち受けポート１６は（ブロック２０２で）、アプリケーション１０の識別子、例えばＵＲＩとコールバック関数とを有するアプリケーション・レジストリ・エントリ５０をアプリケーション・レジストリ２２に加えるが、これは、待ち受けポート１６が、要求を開始したクライアント・アプリケーション８と任意の他のＴＣＰ／ＩＰベースのアプリケーション層プロトコルを用いて通信するために用いられるソケット２０をアプリケーション１０に渡すために、用いられることができる。
【００１５】
１つの実施形態において、初期プロトコルとしてＨＴＴＰを使うことは、初期ＨＴＴＰ要求の下を「トンネル（tunnel)する」ので、ウェブサービス拡張子が既存のＴＣＰ／ＩＰプロトコルに適用されることを可能にする。例えば、ウェブサービス（ＷＳ）セキュリティ規格拡張子は、呼び出し元又はＷＳポリシーを認証して、サービスの品質又はその他の基準に基づいて、適当なウエブ・サーバ・アプリケーション・サーバへと要求をルーティングするために使われる。ＷＳセキュリティ拡張子のようなウェブサービス拡張子要求は、ＨＴＴＰプロトコルを用いて伝達されることができ、ウェブサービス要求を開始したアプリケーションとの通信を処理するソケットがウェブサービス・アプリケーションに渡され、サーバ上のウェブサービス・アプリケーションが、Simple Object Access Protocol(ＳＯＡＰ）メッセージングのような異なる通信プロトコルを用いて、ウェブサービス要求を開始したクライアントと直接通信することを可能にする。
【００１６】
前述の実施形態は、レガシー・アプリケーションと、もっと最近のアプリケーションに対する要求を処理するＨＴＴＰサーバのようなプロトコル・サーバとを有するサーバが、レガシー（非ＨＴＴＰ）アプリケーション要求及び非レガシー(ＨＴＴＰ）アプリケーション要求の双方に対して同じポートを使うことを可能にする技術を提供する。
【００１７】
前述の動作は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのいずれかの組み合わせを製造するための標準的なプログラミング及び／又はエンジニアリング技術を用いて、方法、装置又は製品として実施されることができる。ここで用いられる「製品」という用語は、ハードウエア論理（例えば、集積回路チップ、プログラム可能ゲートアレイ（Programmable Gate Array）（ＰＧＡ）、特定用途向け集積回路（ApplicationSpecific Integrated Circuit）（ＡＳＩＣ）等）、又は磁気記憶媒体(例えば、ハードディスク・ドライブ、フロッピー（登録商標）ディスク、テープ等)、光ストレージ（ＣＤ−ＲＯＭ、光ディスク等）、揮発性及び不揮発性記憶装置（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウエア、プログラム可能論理など）のようなコンピュータ可読媒体に実装されるコード又は論理を意味する。コンピュータ可読媒体内のコードは、プロセッサによってアクセスされ、実行される。好ましい実施形態を実施するコードは、さらに、伝送媒体を通じて、又はネットワーク上のファイル・サーバからもアクセス可能である。このような場合、コードが実装された製品は、ネットワーク伝送ラインのような伝送媒体、無線伝送媒体、空間を通して伝搬する信号、電波、赤外線信号等を含むことができる。従って、「製品」は、コードを具体化する媒体を含むことができる。さらに、「製品」は、コードを具体化し、処理し、及び実行するハードウエア及びソフトウエア・コンポーネントの組み合わせを含むことができる。当然のことながら、当業者であれば、この構成に対して多くの改変をなし得ること、及び、製品は当該技術分野において公知のいずれの情報伝達媒体をも含み得ることを理解するであろう。
【００１８】
前述の実施形態において、第１の通信プロトコルはＨＴＴＰを含み、第２の通信プロトコルはＨＴＴＰ以外のアプリケーション層プロトコルを含んでいた。代替的な実施形態においては、第１の通信プロトコルはＨＴＴＰ以外の通信プロトコルを含むことができ、第２の通信プロトコルはＨＴＴＰを含むことができる。
【００１９】
前述の実施形態では、第１及び第２の通信プロトコルは、アプリケーション層プロトコルを含んでいた。代替的な実施形態においては、第１及び第２の通信プロトコルは、プレゼンテーション層、セッション層、トランスポート層、ネットワーク層、データリンク層、及び物理層の１つのような、アプリケーション層以外の開放型システム間相互接続参照モデル（ＯＳＩモデル）層を含むことができる。
【００２０】
図３〜図５で示された動作は、特定の順序で起こる特定のイベントを示している。代替的な実施形態において、特定の動作は、異なる順序で実行され、改変され、又は除去されることができる。さらに、前述の論理にステップが追加されてもよく、それでもなお前述の実施形態に従うことができる。さらに、本明細書に記載されている動作は、逐次的に起こることができ、又は特定の動作が並列処理されることができる。さらにまた、これらの動作は、単一の処理装置によって又は分散型処理装置によって実行されることができる。
【００２１】
本発明の様々な実施形態についてのこれまでの記述は、例示及び説明の目的で提示されている。多くの変更及び変形が前述の教示に照らして可能である。
【図面の簡単な説明】
【００２２】
【図１】ネットワーク・コンピュータ環境の１つの実施形態を示す。
【図２】登録されたアプリケーションのためのエントリについての１つの実施形態を示す。
【図３】サーバ内でクライアント要求を処理する操作についての１つの実施形態を示す。
【図４】サーバ内でクライアント要求を処理する操作についての１つの実施形態を示す。
【図５】サーバ内でクライアント要求を処理する操作についての１つの実施形態を示す。
【符号の説明】
【００２３】
２：サーバ・マシン
４：クライアント・マシン
６：ネットワーク
８：クライアント・アプリケーション
１０：アプリケーション
１２：ＨＴＴＰ要求
１４ａ、１４ｎ：ポート
１６：待ち受けポート
１８：ＨＴＴＰサーバ
２０：ソケット
２２：アプリケーション・レジストリ
５０：アプリケーション・レジストリ・エントリ
５２：ＵＲＩ
５６：コールバック関数
【図１】
2008533784.tif 000003
【図２】
2008533784.tif 000004
【図３】
2008533784.tif 000005
【図４】
2008533784.tif 000006
【図５】
2008533784.tif 000007
【国際調査報告】
2008533784.tif 000008
2008533784.tif 000009
2008533784.tif 000010
2008533784.tif 000011
2008533784.tif 000012