(57)【特許請求の範囲】
【請求項１】
少なくとも１つのＣＰＵと、
前記ＣＰＵに結合されたメモリと、
前記メモリ内に常駐し、前記ＣＰＵによって実行される持続インタフェース・プログラムであって、ブラウザと前記持続インタフェース・プログラムとの間に確立された非連続通信接続を介して前記ブラウザとの間でデータを送受信することができ、前記ブラウザから受信した要求を処理した後、同じブラウザによる一連の関連トランザクションの間、活動状態を維持する持続インタフェース・プログラムと、
前記メモリ内に常駐する識別メカニズムであって、前記持続インタフェース・プログラムによって受け入れられる少なくとも１つのブラウザからの少なくとも１つのＵＲＩによって、同じブラウザによる後続要求を前記持続インターフェース・プログラムが処理するか否かを識別する識別メカニズムとを含む持続インタフェース装置であって、
前記一連の関連トランザクションが完了したらプロセスが返される前記メモリ内に常駐するプロセス・プールをさらに含み、前記持続インタフェース・プログラムが前記プロセス・プールの一部である
持続インタフェース装置。
【請求項２】
前記メモリ内に常駐するタイムアウト・メカニズムであって、所定の期間後に前記持続インタフェース・プログラムを終了するタイムアウト・メカニズムをさらに含む、請求項１に記載の装置。
【請求項３】
前記持続インタフェース・プログラムがＣＧＩプログラムである、請求項１に記載の装置。
【請求項４】
少なくとも１つのＣＰＵと、
前記ＣＰＵに結合されたメモリと、
前記メモリ内に常駐し、前記ＣＰＵによって実行される持続ＣＧＩプログラムであって、ウェブ・ブラウザと前記持続ＣＧＩプログラムとの間に確立された非連続通信接続を介して前記ウェブ・ブラウザとの間でデータを送受信することができ、前記ウェブ・ブラウザから受信した要求を処理した後、同じブラウザによる一連の関連トランザクションの間、活動状態を、維持する持続ＣＧＩプログラムと、
前記メモリ内に常駐する識別メカニズムであって、前記持続ＣＧＩプログラムによって受け入れられる少なくとも１つのウェブ・ブラウザからの少なくとも１つのＵＲＩによって、同じブラウザによる後続要求を前記持続ＣＧＩプログラムによって処理するか否かを識別する識別メカニズムとを含む、持続ＣＧＩ装置。
【請求項５】
ブラウザと通信するための方法において、
前記ブラウザから持続インタフェース・プログラムに第１のブラウザ要求を送信するステップと、
前記第１のブラウザ要求を処理して結果を生成するステップと、
前記持続インタフェース・プログラムによって受け入れられる前記ブラウザからの第１のＵＲＩをメモリ位置内に格納するステップと、
前記結果を前記ブラウザに送信するステップと、
前記ブラウザと前記持続インタフェース・プログラムとの間に非連続通信リンクを確立するステップと、
前記結果を前記ブラウザに送信した後、前記ブラウザによる一連の関連トランザクションの間、前記持続インタフェース・プログラムを活動状態に維持し、前記ブラウザからの後続要求を処理するステップと、
前記ブラウザから前記持続インタフェース・プログラムに第２の要求を送信するステップであって、前記第２の要求が第２のＵＲＩに関連するステップと、
前記ブラウザによって送信された前記第２のＵＲＩを前記メモリ位置内に格納された前記第１のＵＲＩと比較するステップと、
前記第２のＵＲＩが前記第１のＵＲＩと一致する場合に前記第２の要求を処理するステップと、
前記一連の関連トランザクションが完了したらプロセス・プールにプロセスを返すステップと
を含む方法。
【請求項６】
所定の時間待った後で前記持続インタフェース・プログラムを終了するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記持続インタフェース・プログラムに第１のブラウザ要求を送信する前記ステップが、前記第１のブラウザ要求をプロセス・プールに送信するステップであって、前記第１のブラウザ要求が前記持続インタフェース・プログラムに割り当てられるステップを含む、請求項５に記載の方法。
【請求項８】
前記持続インタフェース・プログラムを含むすべてのステップが持続ＣＧＩプログラムによって実行される、請求項５に記載の方法。
【請求項９】
ウェブ・ブラウザと通信するための方法において、
ウェブ・サーバを介して前記ウェブ・ブラウザから持続ＣＧＩプログラムに第１のウェブ・ブラウザ要求を送信するステップと、
前記第１のウェブ・ブラウザ要求を処理して結果を生成するステップと、
前記ウェブ・ブラウザから前記持続ＣＧＩプログラムに よって受け入れられる第１のＵＲＩをメモリ位置内に格納するステップと、
前記ウェブ・サーバを介して前記結果を前記ウェブ・ブラウザに送信するステップと、
前記ウェブ・ブラウザと前記持続ＣＧＩプログラムとの間に非連続通信リンクを確立するステップと、
前記結果を前記ウェブ・ブラウザに送信した後、前記ウェブ・ブラウザによる一連の関連トランザクションの間、前記持続ＣＧＩプログラムを活動状態に維持し、前記ウェブ・ブラウザからの後続要求を処理するステップと、
識別メカニズムを使用し、前記持続ＣＧＩプログラムによって受け入れられる前記ウェブ・ブラウザからの少なくとも１つのＵＲＩにより、前記ウェブ・ブラウザの後続要求かを識別するステップと、
前記一連の関連トランザクションが完了したらプロセス・プールにプロセスを返すステップと
を含む方法。
【請求項１０】
ブラウザと持続インタフェース・プログラムとの間で通信するためのコンピュータ実施方法において、
前記持続インタフェース・プログラムをインスタンス化するステップと、
前記ブラウザと前記持続インタフェース・プログラムとの間に非連続接続を確立するステップと、
前記ブラウザから前記持続インタフェース・プログラムに第１のブラウザ要求を送信するステップと、
前記持続インタフェース・プログラムを使用して、前記ブラウザ要求から結果を生成するステップと、
前記ブラウザから前記持続インタフェース・プログラムによって受け入れられる第１のＵＲＩをメモリ位置内に格納するステップと、
前記結果を前記ブラウザに送信するステップと、
前記第1のブラウザによる一連の関連トランザクションの間、前記持続インタフェース・プログラムを活動状態に維持するステップと、
前記ブラウザから前記持続インタフェース・プログラムに第２の要求を送信するステップであって、前記第２の要求が第２のＵＲＩに関連するステップと、
前記ブラウザによって送信された前記第２のＵＲＩを前記第１のＵＲＩと比較するステップと、
前記持続インタフェース・プログラムを使用し、前記第２のＵＲＩが前記第１のＵＲＩと一致する場合に前記第２の要求を処理するステップと、
前記一連の関連トランザクションが完了したらプロセス・プールにプロセスを返すステップと
を含むコンピュータ実施方法。
【請求項１１】
所定の時間後に前記持続インタフェース・プログラムを終了するステップをさらに含む、請求項１０に記載のコンピュータ実施方法。
【請求項１２】
前記持続インタフェース・プログラムに第１のブラウザ要求を送信する前記ステップが、前記第１のブラウザ要求をプロセス・プールに送信するステップであって、前記第１のブラウザ要求が前記プロセス・プール内の前記持続インタフェース・プログラムに割り当てられるステップを含む、請求項１０に記載のコンピュータ実施方法。
【請求項１３】
前記持続インタフェース・プログラムが持続ＣＧＩプログラムを含む、請求項１０に記載のコンピュータ実施方法。
【請求項１４】
コンピュータに請求項５乃至１３のいずれかの方法に記載のステップを実行させるためのプログラムを記録したコンピュータ読取可能記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にネットワーク化したコンピュータ・システム用のプログラミング・インタフェースに関し、より具体的にはクライアント／サーバ環境でのトランザクションに関する。
【０００２】
【従来の技術】
コンピュータ時代の始まりとして、１９４８年のＥＤＶＡＣコンピュータ・システムの開発が挙げられる場合が多い。そのとき以来、コンピュータ・システムは非常に高性能な装置へと発展し、多種多様な設定で見ることができる。通常、コンピュータ・システムは、ハードウェア（たとえば、半導体、回路板など）とソフトウェア（たとえば、コンピュータ・プログラム）の組合せを含む。半導体処理とコンピュータ・アーキテクチャの進歩によってコンピュータ・ハードウェアのパフォーマンスがより高いものになるにつれ、ハードウェアのより高いパフォーマンスを利用するようにより高性能のコンピュータ・システムが発展し、その結果、現在のコンピュータ・システムは数年前のものよりかなり強力なものになっている。
【０００３】
通常、コンピュータ・システムは、コンピュータの基本機能を制御するオペレーティング・システム・ソフトウェアと、所望のタスクを実行するためにオペレーティング・システムの制御下で動作する１つまたは複数のソフトウェア・アプリケーションとを含む。たとえば、典型的なＩＢＭパーソナル・コンピュータはＯＳ／２オペレーティング・システムを実行することができ、ＯＳ／２オペレーティング・システムの制御下でユーザはワード・プロセッサなどのアプリケーション・プログラムを実行することができる。コンピュータ・システムの機能が増加するにつれて、ハイ・パフォーマンス・コンピュータ・システム用に設計されたソフトウェア・アプリケーションは非常に強力なものになった。
【０００４】
その他の技術上の変化も、コンピュータの使い方に大いに影響している。たとえば、コンピュータが広範囲にわたって急増したため、コンピュータ同士が互いに通信できるようにするコンピュータ・ネットワークの開発が促進された。また、パーソナル・コンピュータ（ＰＣ）の導入により、コンピュータの能力や機能は多数の人が利用しやすいものになった。パーソナル・コンピュータ用のネットワークは、個々のユーザが互いに通信できるようにするために開発されたものである。このようにして、１企業内の多数の人がコンピュータ・システム上で動作するソフトウェア・アプリケーションと同時に通信することができる。
【０００５】
近年、非常に人気が高くなったコンピュータ・ネットワークの１つは、インターネットである。インターネットは、最近のコンピュータおよびネットワークの急増に起因し、コンピュータ・システムからなる高性能の世界的なネットワークへと発展した。インターネットの重要な部分は、ひとまとめにして「ワールドワイド・ウェブ」（ＷＷＷ）を構成するウェブ・ページによって表示され、一緒にリンクされる所与の情報である。個々のＰＣ（すなわち、ワークステーション）に向かっているユーザがＷＷＷへのアクセスを希望する場合、通常、ウェブ・ブラウザと呼ばれるソフトウェア・アプリケーションを使用して、それを実行する（クライアントとも呼ぶ）。ウェブ・ブラウザは、ＷＷＷを介してウェブ・サーバと呼ばれるコンピュータへの接続を行い、ユーザのワークステーション上に表示するためにウェブ・サーバから情報を受信する。ユーザに対して表示される情報は、ＨＴＭＬ（Hypertext Markup Language）という特殊言語によって構築されたページ単位に構成される。
【０００６】
インターネットの人気の拡大とともに、インターネットが売上げと効率を上昇させる新しい方法をもたらすことを企業は認識している。潜在的な顧客が企業のアプリケーション・ソフトウェアと直接対話して、製品を購入し、他の同様の活動を完了することができれば、取引は簡略化されるだろう。このため、顧客が受け入れる見込みが高くなり、販売機会が増加する。ＷＷＷは事業機会の創造には非常に成功したが、ネットワーク上で事業を行う手段としてＷＷＷを使用することは容易ではない。
【０００７】
一般に、ＷＷＷ上で様々なソフトウェア・アプリケーションを使用して正常に取引を行うには、様々なアプリケーションとそのアプリケーションをサポートするプラットフォームに必要なインタフェース要件に関するかなり広範囲の知識が必要である。他の２つのプログラム間またはプロセス環境間の媒介として機能しうるインタフェース・プログラムを作成することが必要になる場合も多い。クライアント／サーバ環境で使用し、広く採用されているインタフェース規格の１つは、ＣＧＩ（Common Gateway Interface）プログラミング・モデルである。ＣＧＩプログラミング・モデルとは、ＷＷＷ上での通信およびトランザクション・サポートのインタフェースを提供するために使用する特定のプロトコルまたは１組の規則である。ＣＧＩプログラムは、当業者には周知の実行可能プログラムである。通常、異なる各ソフトウェア・アプリケーションにアクセスするために、異なるアクセス手順とプログラミングインタフェースを備えた各種ＣＧＩプログラムが用意されている。１つのＣＧＩプログラムは、ウェブ・サーバ・アプリケーションの機能性を拡張し、そうすることによって、ウェブ・ブラウザを使用するクライアントがＣＧＩによりＷＷＷを介して様々なソフトウェア・アプリケーションにアクセスできるようになる。
【０００８】
【発明が解決しようとする課題】
現在知られているＣＧＩプログラミング・モデルは非常によくできているが、現行のＣＧＩプログラムによってトランザクションを行うことがいくらか煩わしく望ましくないものになるような、いくつかの重大な制限やある程度の処理上の制約事項が存在する。たとえば、ブラウザが特定のＣＧＩプログラムに対する要求を行うたびに、その要求に対応するためにウェブ・サーバによって新しいＣＧＩプロセスが開始される。ウェブ・ブラウザからの要求はデータ・ストリームとしてＣＧＩプロセスに送信され、ＣＧＩプロセスはそのデータ・ストリームを読み取って、その要求を処理する。ＣＧＩプロセスがウェブ・ブラウザの要求を処理し、要求された情報をウェブ・ブラウザに返した後、ＣＧＩプロセスは終了する。次に、ウェブ・ブラウザが他の要求を行うと、ＣＧＩプロセスの他のインスタンスが開始される。この反復開始停止プロセスは相当な量のシステム・オーバヘッドを必要とし、ウェブ・ブラウザとＣＧＩとの通信プロセスの効率がかなり悪くなる傾向がある。
【０００９】
さらに、各ウェブ・ブラウザ要求の結果、ＣＧＩプログラムの新しいインスタンスがインスタンス化されるので、あるウェブ・ブラウザ要求から別の要求に使用可能にする必要がある情報は、プロセス環境の外部で管理または格納しなければならない。通常、これは、ディスクにデータを書き込んだり、ウェブ・サーバからのデータ・ストリームとしてウェブ・ブラウザにデータを返すなどの比較的高率の悪い手段を使用することによって行われる。しかし、ウェブ・ブラウザが早い時期に保留トランザクションを終了しなければならない場合、ディスクにデータを書き込むことは問題である。決して発生しそうもない今後の使用のために所与のデータを格納する場合がある。同じＣＧＩプログラムによって処理される複数の要求を所与のウェブ・ブラウザが繰り返し提示する場合に特にこの点が当てはまる。しかも、データベース更新トランザクションなど、ウェブ・ブラウザが資源に何度もアクセスする必要がある所与のトランザクションは、複数のブラウザ要求にわたって維持することができない。
【００１０】
最後に、ウェブ・ユーザ、プロバイダ、ウェブ・サーバの数は急速に拡大し続けているので、ウェブ・ブラウザがシステム・オーバヘッドを低減し、より効率よくＣＧＩプログラムと対話できることがますます重要になる。ＷＷＷ上のネットワーク・トラフィックの急増が予測されることを考慮すると、現在知られているＣＧＩプログラム・モデルをサポートするソフトウェア・アプリケーションは、大量のウェブ・ブラウザ要求をサポートするために十分なシステム資源を備えていない可能性がある。
【００１１】
ワールドワイド・ウェブ上でソフトウェア・アプリケーションとウェブ・ブラウザとのトランザクション・サポートの方法を改良できるＣＧＩメカニズムがなければ、ＣＧＩによりインターネット・ユーザとソフトウェア・アプリケーションとの間で行われるトランザクションは、非常に時間がかかり、過度に高価なものになる。さらに、貴重なシステム資源は時間がかかるオーバヘッド・タスクで不必要に消費され、それにより、システム全体の効率が低下する可能性がある。
【００１２】
【課題を解決するための手段】
本発明の好ましい実施例によれば、現在知られているＣＧＩモデルの利点を取り入れるが、関連する欠点の多くを克服するようなＣＧＩプログラム拡張を提供するために、持続ＣＧＩモデルを使用する。持続ＣＧＩプログラムはウェブ・サーバのサブプロセスとして実行される。持続ＣＧＩプログラムは、標準入力および環境変数によってウェブ・ブラウザから入力を受信し、既存のＣＧＩプログラムと同様に標準出力によって出力を提供する。しかし、既存のＣＧＩプログラムとは異なり、持続ＣＧＩプログラムは、ウェブ・サーバ・アプリケーションによってウェブ・ブラウザに出力が送信された後で自動的に終了することはない。むしろ、持続ＣＧＩプログラムは、活動状態のままになり、同じウェブ・ブラウザからの追加入力を待つ。このため、トランザクションは開いたままになり、したがって、ウェブ・ブラウザ要求同士の間に進行中のトランザクションに関する状態データを維持することができる。さらに、ＣＧＩプロセスは持続性であり、複数の要求のために同じウェブ・ブラウザとの通信を維持するので、同じトランザクションのために同じウェブ・ブラウザからの後続要求ごとに別々のＣＧＩプロセスをインスタンス化する必要がない。
【００１３】
【発明の実施の形態】
本発明は、ＷＷＷを介して通信し、トランザクションを実行するためのＣＧＩの使用に関する。ＷＷＷトランザクション、ＣＧＩ、そのアプリケーションにあまり慣れていない人のために、以下の概要の項では、本発明の好ましい実施例を理解するのに役立つ多くの概念について説明する。ＷＷＷトランザクションおよびＣＧＩプログラミング技法に精通した人は、概要の項を飛ばし、詳細な説明の項に直接移行しても構わない。
【００１４】
１．概要
ウェブ・トランザクション
ウェブ・ブラウザとウェブ・サーバ・アプリケーションとの対話により、トランザクションを実行するためのクライアント／サーバ環境が作られる。様々なコンピュータ・システム、プログラム、資源がＷＷＷ上に存在し、ウェブ・ブラウザによってアクセスすることができる。このような様々な資源によってトランザクションを実行するために、ウェブ・ブラウザは、資源固有のアドレスまたは識別子を使用することによって所望の資源を指定することができる。このような資源固有のアドレスまたは識別子は、多くの異なる実施態様を有する場合がある。ＷＷＷ環境で使用する一般的な識別子の１つは、Uniform Resource Identifier（ＵＲＩ）である。ＵＲＩは、Universal Document Identifier（ＵＤＩ）、Universal Resource Identifier、Uniform Resource Locator（ＵＲＬ）とも呼ばれている。ほとんどのサーバに関する限り、ＵＲＩまたはＵＲＬは、ＷＷＷ資源の位置を識別するための単純にフォーマットされたテキスト・ストリングである。
【００１５】
次に図２を参照すると、クライアント・ワークステーション２１０上で動作する標準のウェブ・ブラウザ２１２と、ウェブ・サーバ・コンピュータ・システム２２０上で動作するウェブ・サーバ・アプリケーション２２２との典型的なトランザクションは、接続部（通信リンクまたは通信メカニズム）２１６上で行われれる。当然のことながら、クライアント・ワークステーション２１０は、ローカル・エリア・ネットワーク（ＬＡＮ）を介してあるいは他のタイプのコンピュータ・ネットワークまたは他の相互接続を介して、他のコンピュータ・システムに結合することができる。同様に、ウェブ・サーバ・コンピュータ・システム２２０も他のコンピュータ・システムに結合することができる。クライアント・ワークステーション２１０は、ウェブ・ブラウザ２１２を使用することによりＷＷＷへのアクセスを可能にすることができるコンピュータであれば、どのコンピュータでもよい。これは、ハンドヘルド、ポータブル、またはラップトップ・コンピュータ、標準のデスクトップ・コンピュータ・システム、メインフレームに接続された非プログラム式ターミナルを含むだろう。
【００１６】
ウェブ・ブラウザ２１２は、クライアント・ワークステーション２１０側のユーザが接続部２１６により他のコンピュータと通信できるようにするための、クライアント・ワークステーション２１０上で動作するソフトウェア・プログラムである。ウェブ・ブラウザ２１２は、ＷＷＷによりデータの送受信が可能なものであれば、どのようなウェブ・ブラウザも含む。これは、ＩＢＭのWebExplorer、ネットスケープ・ナビゲータ、マイクロソフト・インターネット・エクスプローラ、その他の現在存在するソフトウェア・アプリケーション、またはＷＷＷにより情報にアクセスしたり情報を処理するために今後開発される可能性のあるソフトウェア・アプリケーションなどの市販のソフトウェア・アプリケーションを含む。接続部２１６の好ましい実施例は、インターネットまたはイントラネットへの接続をサポートできる適当な通信リンクまたは通信メカニズムであり、現在知られているかまたは今後開発されるかにかかわらず、配線による接続部、モデムまたは高速Ｔ１回線による電話アクセス、赤外線その他のワイヤレス通信、コンピュータ・ネットワーク通信（ワイヤによるかワイヤレスかに関わらない）、コンピュータ間のその他の適当な接続部を含む。
【００１７】
クライアント・ワークステーション２１０とウェブ・サーバ・コンピュータ・システム２２０は、物理的または論理的に同じコンピュータ・システムにすることができることに留意されたい。通常、ウェブ・ブラウザ２１２は、クライアント・ワークステーション２１０上でＨＴＭＬデータのページを表示する。テキスト・データ、グラフィカル・データ（たとえば、Graphic Image Format（ＧＩＦ）ファイル）、オーディオ・データ、サウンド・ファイル（たとえば、ＷＡＶファイル）、Ｊａｖａアプレット（実行可能コード）、Multipurpose Internet Mail Extensions（ＭＩＭＥ）データと呼ばれる専門データ形式（上記その他のデータ・タイプの組合せを含む可能性がある）を含む、他のタイプのデータもウェブ・ブラウザ２１２に送信することができる。
【００１８】
ウェブ・サーバ・アプリケーション２２２は、クライアント・ワークステーション２１０側のユーザがウェブ・サーバ２２０によって制御される情報にアクセスできるようにするための、ウェブ・サーバ・コンピュータ・システム２２０上で動作するソフトウェア・プログラムである。本発明によるウェブ・サーバ・アプリケーション２２２の好ましい一実施例は、ＩＢＭのInternet Connection Serverなどの市販のウェブ・サーバ・アプリケーションである。他のウェブ・サーバ・アプリケーションも本発明と互換性のあるものである。通常、ウェブ・サーバ・コンピュータ・システム２２０は、クライアント・ワークステーション２１０側のユーザによって取られるアクションを反映するウェブ・ブラウザ２１２による要求に応答して、ＨＴＭＬデータのページをウェブ・ブラウザ２１２に出力する。さらに、上記のように、ウェブ・サーバ・コンピュータ・システム２２０は、他のタイプのデータもウェブ・ブラウザ２１２に出力することができる。出力データは、静的ＨＴＭＬページ（ページの内容が変化しないことを意味する）を含む場合もあれば、動的に決定し、出力データに挿入しなければならないようなデータを含む場合もある。ウェブ・サーバ・アプリケーション２２２は、それがウェブ・サーバ・コンピュータ・システム２２０内のメモリからまたは他のコンピュータ・システムから取り出した部分から出力データ（たとえば、ＨＴＭＬページ）を動的に構築する場合もあれば、以前構築したかまたは他のコンピュータが構築したページを通過するだけの場合もある。
【００１９】
通常、ウェブ・ブラウザ２１２は、接続部２１６によりウェブ・サーバ・コンピュータ・システム２２０に入力（たとえば、ＵＲＩ、ＵＲＬ、ＨＴＭＬページ）を送信することにより、ウェブ・サーバ・アプリケーション２２２と対話する。この入力は、通常、ＨＴＴＰを使用して送信される。ウェブ・サーバ・アプリケーション２２２を実行するウェブ・サーバ・コンピュータ・システム２２０は、ウェブ・ブラウザ２１２から入力を受信し、それに応答して、ブラウザ２１２にデータ（たとえば、ＨＴＭＬページ）を出力する。ウェブ・サーバ・コンピュータ・システム２２０は、所望の機能を実行するためにＣＧＩプログラムまたはモジュールを含む、他の多数のソフトウェア構成要素を有する場合もある。上記のプロセスはインターネットによる基本トランザクションを示すものであり、本発明の概念を理解するために単純な状況を示すため、本発明の範囲内にある多くの詳細および変形についてはここに開示しないことが分かるだろう。
【００２０】
ウェブ・ページ
ウェブ・ページは、主に、クライアント・ワークステーション２１０のモニタ上に表示する予定の視覚データである。一般にウェブ・ページはＨＴＭＬで作成される。ウェブ・サーバ・コンピュータ・システム２２０上で動作するウェブ・サーバ・アプリケーション２２２がウェブ・ページ要求を受信すると、そのアプリケーションは、ＨＴＭＬでウェブ・ページを構築するかまたは事前構築したウェブ・ページを含むファイルを取り出して、それを接続部２１６により要求側のウェブ・ブラウザ２１２に送出することになる。ウェブ・ブラウザ２１２は、ＨＴＭＬを理解し、それを解釈して、クライアント・ワークステーション２１０のモニタ上にウェブ・ページを出力する。このウェブ・ページは、ユーザの画面上に表示されるが、テキスト、グラフィック、リンク（他のウェブ・ページのＵＲＩまたはＵＲＬアドレスである）を含む場合がある。このような他のウェブ・ページ（すなわち、リンクによって表されるもの）は同じウェブ・サーバ上にある場合もあれば、他のウェブ・サーバ上にある場合もある。ユーザは、マウスまたは他のポインティング・デバイスを使用してこのようなリンクをクリックすることにより、このような他のウェブ・ページを取り出すことができる。ウェブ・ページからなるこのようなシステム全体が、世界中の他のウェブ・サーバ上の他のウェブ・ページへのリンクとともに、ひとまとめになって「ワールドワイド・ウェブ」（ＷＷＷ）を構成する。
【００２１】
マルチスレッド環境
アプリケーション・ソフトウェア・プログラムのパフォーマンスを改善した方法の１つは、「マルチスレッド」プログラミング概念を使用することである。マルチスレッド・コンピュータ・プログラミング環境では、通常、単一のアプリケーション・プログラムまたはプロセスが複数のサブプロセスを有することになり、そのそれぞれを別々の「スレッド」として実行することができる。これは、アプリケーション・プログラムがいくつかのより小さいサブプロセス・タスクを有し、そのそれぞれを完了まで個別に処理できることを意味する。プロセスが複数のスレッドを有する場合、そのプロセスはマルチスレッド・プロセスであるという。一般に、同じタスクを実施するために複数のプロセスを管理する場合とは対照的に、１つのマルチスレッド・プロセスを管理する方がシステムレベルのオーバヘッドは小さくなる。これは、独立プロセスとは異なり、同じプロセスからの複数のスレッドは同じメモリ空間内に共存し、それにより、メモリ管理タスクを低減するからである。したがって、マルチスレッド・オペレーティング・システム環境でスレッドを使用することにより、所与の程度の処理効率を得ることができる。また、１つのプロセスの様々な機能を並列処理可能な複数のプロセスに区分することにより、より迅速に独立タスクを完了できる場合が多い。
【００２２】
マルチスレッド・オペレーティング・システムは、マルチスレッド・プロセスのマルチスレッド機能をサポートし、指定のシーケンスで、またはすべてのスレッドが同じアドレス空間を共用する場合に優先順位方式に従って、複数の異なるスレッド間で実際の処理活動を交互に行う。通常、このような様々なマルチスレッド・プロセスは、「サーバ」の指示の下で実行される。「サーバ」という用語は、一般に、適切なプロセッサ・システムまたはサーバ・ホスト上で実行され、同じかまたは他のコンピュータ・システム上で実行することができる他のコンピュータ・プログラムによって行われるサービス要求を実行するようなコンピュータ・プログラムを指す場合に使用する。
【００２３】
多くの実施態様では、サーバは指定のコンピュータ上で実行され、通信ネットワークにより他のコンピュータ上で実行される他のプロセスからサービス要求を受信する。このような他のコンピュータ・プロセスは、通常、「クライアント」と呼ばれる。典型的なクライアントは、保険会社データベース・レコード管理プログラムなどのアプリケーション・ソフトウェア・プログラムを含むことができる。クライアントとサーバが同じコンピュータ・システム上または地理的に遠隔の複数のコンピュータ・システム上で動作可能であることは、重要なことである。同様に、単一コンピュータ・システムは、サーバおよびクライアントの様々な組合せをサポートすることができる。
【００２４】
マルチスレッド・サーバ・プロセスを初期設定すると、通常、サーバ・プロセスで使用するために「スレッド・プール」が割り振られる。この割振りプロセスは、クライアント・プログラムまたはプロセスによって使用可能になる所与の数のスレッドを確立する。次に、クライアント・プロセスがサーバ・プロセスに対して要求を行うと、その要求を処理するために必要な数のスレッドがスレッド・プールから割り振られる。スレッド・プール内のスレッドの割振り、割当て、制御は、スレッド・マネージャによって管理される。通常、スレッド・マネージャは、無作為にスレッドを割り当てるが、所与の状況では、様々なクライアント・プロセスの要求に応じて、特定のクライアントに特別な専用スレッドを提供する場合もある。
【００２５】
クライアント要求が完了まで実行された後、通常、その要求が処理されたスレッドは、他のクライアント・プロセスによって使用される可能性に備えて、スレッド・プールに返される。このようなスレッドは「再使用可能」スレッドと呼ばれる。というのは、異なる時期に異なるクライアント・プロセスによって同じスレッドを使用できるからである。再使用可能スレッドの目的は、スレッドの作成、削除、その他の管理の際に発生するシステム・オーバヘッドを低減することである。これは、限定されたコンピュータ・システム資源のより効率のよい使用を促進する。任意の時点でスレッドに対する要求がスレッドの可用性を上回る場合、所与の限度内で、スレッド・マネージャは追加のスレッドを必要なだけ動的に割り振ることができる。
【００２６】
しかも、ほとんどのサーバ・プロセスは、オペレーティング・システム・スレッドとスレッド・プール・スレッドの両方を利用する。オペレーティング・システム・スレッドとスレッド・プールからのスレッドとの主な違いの１つは、オペレーティング・システム・スレッドは一度しか使わないスレッドであり、したがって、オペレーティング・システム・スレッド上で実行されるサブタスクが完了すると、オペレーティング・システム・スレッドが終了することである。しかし、上記のように、スレッド・プール・スレッドは、スレッド・マネージャによって保管し、他のクライアント・プロセスのために再使用することができる。
【００２７】
標準ＣＧＩ
次に図３を参照すると、ＷＷＷトランザクションを実行するための典型的なＣＧＩベースのコンピュータ・システム３００は、クライアント・ワークステーション２１０と、ウェブ・サーバ・コンピュータ・システム２２０と、接続部２１６と、ＣＧＩインタフェース２１７と、ウェブ・サーバ・アプリケーション２２２と、ウェブ・サーバ・プロセス３４０と、ＣＧＩプロセス３５０および３６０と、ＣＧＩプログラム３５２および３６２とを含む。
【００２８】
上記のように標準のＣＧＩプログラミング・モデルは、ＷＷＷなどのネットワークによって通信し、トランザクションを実行するための方法を提供する。ＣＧＩプログラム３５２または３６２の目的は、所望の目的を達成するためにユーザが要求する可能性のある資源に対する能力をウェブ・ブラウザ・ユーザに提供することである。しかも、ユーザは、処理のためにＣＧＩプログラム３５２または３６２に可変情報を渡すためにウェブ・ブラウザ２１２を使用することができる。
【００２９】
サーバ側のＣＧＩプログラム３５２および３６２用のＣＧＩインタフェース２１７は、ウェブ・サーバ・アプリケーション２２２によってＣＧＩプログラム３５２および３６２を開始する方法、ならびに標準入力および環境変数の組合せを使用してＣＧＩプログラム３５２および３６２用のパラメータを渡す方法を記述するものである。環境変数は、プロセスによって設定し、アクセスすることができる情報項目である。環境変数の例としては、ライブラリ・ファイル、デフォルト、その他のシステム・レベル・パラメータのリストを含む。ほとんどのウェブ・サーバ・アプリケーション・プログラムでは、ウェブ・ブラウザおよびウェブ・サーバ情報を含むように、ＣＧＩプログラミング・モデルで使用する環境変数のリストが拡張されている。また、ＣＧＩインタフェース２１７は、標準出力手順を使用してウェブ・サーバ２２２に通常はＨＴＭＬ要素である出力情報を渡す方法も記述する。
【００３０】
ＣＧＩプログラム３５２および３６２は、ＣＧＩヘッダを介してウェブ・サーバ・アプリケーション２２２と通信する。ＣＧＩヘッダの使用は当業者には周知のものである。通常、ウェブ・ブラウザ２１２は、要求を生成し、それをウェブ・サーバ・アプリケーション２２２に送信する。ウェブ・サーバ・アプリケーション２２２は、ブラウザ要求がＣＧＩプロセスを必要とすることを認識し、ＣＧＩプログラム３５２または３６２にブラウザ要求を転送することになる。ＣＧＩプログラム３５２または３６２は、ヘッダを介してウェブ・サーバ・アプリケーション２２２に応答する。標準のＣＧＩヘッダは、「位置」ヘッダと、「状況」ヘッダと、「内容タイプ」ヘッダの３つである。位置ヘッダは、ウェブ・ブラウザ要求を他のいくつかの資源にリダイレクトするＣＧＩプログラムからのメッセージである。状況ヘッダは、ウェブ・ブラウザ要求を処理する際に例外またはエラーが発生したことを示すためにＣＧＩが使用する。内容タイプ・ヘッダは、ウェブ・ブラウザ要求に応答して返されるデータのタイプを識別するため、ならびに実際に要求された情報を送信するためにＣＧＩプログラム３５２または３６２が使用する。このような３つのヘッダ・ファイルは、ＣＧＩモデルに適合するすべてのウェブ・サーバによってサポートされている。
【００３１】
ＣＧＩプログラミング・モデルは、ほとんどのＷＷＷ通信およびトランザクションの場合にそれが人気のある選択肢になるような、いくつかの利点を提供する。第１に、ＣＧＩプログラミング・モデルは比較的単純であり、したがって、理解しやすく、使いやすい。第２に、ＣＧＩプログラミング・モデルはプログラミング言語非依存である。これは、標準のプログラミング言語を使用してＣＧＩインタフェースを作成できることを意味する。さらに、ＣＧＩプログラミング・モデルはプロセス分離を行う。というのは、ＨＴＴＰサーバ・プロセスから分離されたプロセス内でＣＧＩプログラムが実行されるからである。エラーによってプロセスの１つが打ち切られる場合、他のプロセスは中断せずに続行可能である。プロセス同士は分離されているので、各プロセスの安定性が高まる。
【００３２】
マイナス面としては、ＣＧＩプログラムは、ウェブ・ブラウザ２１２から受信した各要求ごとに新しいプロセスをインスタンス化する。これは、ウェブ・サーバ・アプリケーション２２２にとって非常に要求の厳しいものになる可能性があり、十分なウェブ・ブラウザ要求を受信した場合、ウェブ・サーバ・コンピュータ・システム２２０のパフォーマンスは容認できないものになりうる。しかも、ＣＧＩプロセスへの単一要求によってほとんどのタスクを実施することは非常に困難であり、いかなる情報もブラウザ要求間にＣＧＩプロセスによって保持されることはない。ウェブ・ブラウザとＣＧＩプロセスとの間で確立された通信リンクは「連続リンク」と呼ばれる。予期せず打ち切られない限り、ウェブ・ブラウザがウェブ・サーバを介してＣＧＩプロセスから何らかの通知または情報を受信するまで、通信リンクは絶えず存在するからである。しかし、前述のように、ＣＧＩプロセスが要求を満足した後、ＣＧＩプロセスは終了する。この制限に対応するためにいくつかの方法が採用されているが、現在既知の方法はいずれも煩わしいもので、より多くの資源を消費するオーバヘッドをプロセスに追加し、さらにパフォーマンスを低下させる。
【００３３】
サーバＡＰＩ
次に図４を参照すると、ＷＷＷトランザクションを実行するためのサーバＡＰＩベースのコンピュータ・システム４００は、クライアント・ワークステーション２１０と、ウェブ・サーバ・コンピュータ・システム２２０と、接続部２１６と、サーバＡＰＩ２１７と、ウェブ・サーバ・アプリケーション２２２と、ウェブ・サーバ・プロセス３４０と、サーバＡＰＩプログラム４４４とを含む。
【００３４】
サーバ・アプリケーション・プログラミング・インタフェース（ＡＰＩ）を使用すると、ＷＷＷなどのネットワークにより通信するためのもう１つの方法が得られる。一般に、ＡＰＩは、２つまたはそれ以上の異なるプログラム間で通信するための通信プロトコルを定義する。サーバＡＰＩは、ウェブ・サーバで使用するために開発されたものであり、ＣＧＩプログラミング・モデルのパフォーマンス上の制限に対処するために具体的に設計されている。サーバＡＰＩプログラムの例としては、ＩＢＭのＩＣＡＰＩ、ネットスケープのＮＳＡＰＩ、マイクロソフトのＩＳＡＰＩを含む。このような製品のすべてが交換可能であるわけではなく、異なるＡＰＩ命令セットが異なる機能をサポートする。このような様々な製品はいずれも、ＷＷＷクライアント／ブラウザ環境で使用するためにそれぞれのベンダが採用した各種実施態様である。
【００３５】
このようなサーバＡＰＩプログラムは、ウェブ・サーバ・アプリケーション２２２の機能性を拡張し、ＣＧＩプログラミング・モデルに代わるものを提供する。ウェブ・サーバ・アプリケーション２２２とサーバＡＰＩプログラム４４４は、互いに通信するためにサーバＡＰＩ２１７を使用する。サーバＡＰＩプログラム４４４は、ウェブ・サーバ・プロセス３４０の拡張部分として実施され、ウェブ・サーバ・プロセス３４０とともにインスタンス化される。サーバＡＰＩプログラム４４４は、ウェブ・サーバ・プロセス３４０が活動状態にある限り、活動状態のままになる。サーバＡＰＩプログラム４４４はサーバ・プロセス３４０の一部として実行されるので、サーバＡＰＩプログラム４４４は、サーバ環境へアクセスすることができ、認証、許可、出力生成などのサーバ論理の様々な態様に関与することができる。サーバＡＰＩプログラム４４４は持続性であり、したがって、クライアント・ワークステーション２１０から受信した後続要求間で状態情報を維持することができる。
【００３６】
ウェブ・ブラウザ環境でのサーバＡＰＩプログラム４４４の実施にとってのマイナス面は重大なものになる場合もある。まず第１に、ウェブ・サーバ・プログラム２２２とサーバＡＰＩプログラム４４４はどちらも同じプログラム環境を共用するので、どちらのプログラムもある程度の安全保護と完全性を失ってしまう。また、どちらのプログラムも同じプログラム環境の一部なので、一方のプログラムが使用不能になると、両方のプログラムが動作不能になる可能性がある。第２に、サーバＡＰＩプログラム４４４は「Ｃ」プログラミング言語で作成しなければならず、通常、サーバＡＰＩプログラム４４４を従来のＣＧＩプログラムより複雑なものにするような複数の入口点を有することになる。さらに、この環境のトランザクション機能は依然として制限されており、そのためにサーバＡＰＩプログラム４４４は、ウェブ・サーバ・アプリケーション２２２によりサーバＡＰＩ４４４に要求を行う各ウェブ・ブラウザ２１２ごとに複数のウェブ・ブラウザ・セッションを作成し管理せざるを得なくなる。もう１つの問題は、現在すべてのウェブ・サーバ２２２がＡＰＩをサポートしているわけではないことであり、したがって、一部の実施環境のオプションにはならない。最後に、サーバＡＰＩ４４４は、個別の各ウェブ・ブラウザ・セッションの持続期間を決定するための単純な方法を一切備えていない。このため、決して到着しそうにないウェブ・ブラウザ２１２からの入力を待つことにより、サーバＡＰＩプログラム４４４がシステム資源を浪費することになる可能性がある。
【００３７】
高速ＣＧＩ
ＷＷＷトランザクション用のもう１つのシステム構成は「高速ＣＧＩ」と呼ばれるものである。次に図５を参照すると、ＷＷＷトランザクションを実行するための高速ＣＧＩベースのコンピュータ・システム５００は、クライアント・ワークステーション２１０と、ウェブ・サーバ・コンピュータ・システム５３０と、接続部２１６と、高速ＣＧＩインタフェース２１７と、ウェブ・サーバ・アプリケーション２２２と、ウェブ・サーバプロセス３４０と、ソケット５６０と、高速ＣＧＩプログラム５７２とを含む。
【００３８】
いわゆる高速ＣＧＩモデルは、ＷＷＷなどのネットワークにより様々な資源と通信するためのもう１つの方法を提供するプロプラエタリ・モデルである。高速ＣＧＩプロセス・モデルは、標準ＣＧＩモデル（図３）とサーバＡＰＩモデル（図４）の両方からの特徴を結合する。高速ＣＧＩモデルは、標準ＣＧＩプログラム・モデルで説明したようにプロセス分離を特徴とするが、サーバＡＰＩモデルに関連して説明したように、１つのプログラムが複数のウェブ・ブラウザ２１２からの複数の要求に対応する。これは、様々なブラウザ要求のそれぞれに関する状態データを高速ＣＧＩプログラム５７２によって追跡し、高速ＣＧＩプログラム５７２内の正しいウェブ・ブラウザ２１２に関連付けなければならないことを意味する。この要件は、より一層の複雑さとオーバヘッドをシステムに追加する。
【００３９】
ソケット５６０は、高速ＣＧＩプログラム５７２とウェブ・サーバ・アプリケーション２２２との間の全２重プロセス間通信を表す。高速ＣＧＩプログラム５７２は、ウェブ・ブラウザ２１２とプロセス５７０との間で通信するために標準の入出力変数を使用しない。高速ＣＧＩプログラム５７２は、むしろ、ウェブ・サーバ・アプリケーション２２２との間で情報をやりとりするために上記のものと同様のＡＰＩ呼出しを使用する。高速ＣＧＩモデルでは、プロセス５７０はプロセス３４０から独立しており、どちらのプロセスも異なる物理コンピュータ・システム上で実行することができる。
【００４０】
高速ＣＧＩモデルの実施に関連するマイナス面は数多い。まず第１に、このモデルは、標準ＣＧＩモデルより大幅に複雑である。このモデルを実施するには、高速ＣＧＩ通信モデルおよびプロトコルをサポートするようにウェブ・サーバ・アプリケーション２２２を変更し構成することが必要である。さらに、高速ＣＧＩモデルはプロプラエタリなので、いまだに広く採用されておらず、多くのウェブ・サーバ・アプリケーション２２２は高速ＣＧＩモデルとの互換性がない。最後に、上記のサーバＡＰＩの場合と同様、高速ＣＧＩプログラム５７２は「Ｃ」プログラミング言語で作成され、したがって、一部のプログラマの能力を上回る。
【００４１】
２．詳細な説明
次に図１を参照すると、同図には本発明の好ましい実施例によるコンピュータ・システム１００が示されている。しかし、当業者であれば、コンピュータ・システムが複雑なマルチユーザ・コンピューティング装置であるか、パーソナル・コンピュータまたはワークステーションなどの単一ユーザ装置であるかにかかわらず、本発明の方法および装置がどのようなコンピュータ・システムにも同じように適用されることが分かるだろう。コンピュータ・システム１００は、中央演算処理装置（ＣＰＵ）またはプロセッサ１１０と、メイン・メモリ１２０と、メモリ・コントローラ１３０と、補助記憶インタフェース１４０と、ターミナル・インタフェース１５０とを適当に含み、そのいずれもシステム・バス１６０を介して相互接続されている。ただし、キャッシュ・メモリまたはその他の周辺装置の追加など、本発明の範囲内で図１に示すコンピュータ・システム１００に対して、様々な変更、追加、または削除を行うことができることに留意されたい。図１は、コンピュータ・システム１００の顕著な特徴の一部を単純に示すように提示されている。
【００４２】
プロセッサ１１０は、コンピュータ・システム１００の計算および制御機能を実行し、適当な中央演算処理装置（ＣＰＵ）を含む。プロセッサ１１０は、マイクロプロセッサなどの単一集積回路を含む場合もあれば、プロセッサの諸機能を実施するために協同で作業する適当な数の集積回路装置または回路板を含む場合もある。プロセッサ１１０は、メイン・メモリ１２０内のオブジェクト指向コンピュータ・プログラム１２２を適当に実行する。
【００４３】
補助記憶インタフェース１４０により、コンピュータ・システム１００は、磁気ディスク（たとえば、ハード・ディスクまたはフロッピー・ディスク）または光学記憶装置（たとえば、ＣＤ−ＲＯＭ）などの補助記憶装置からの情報を格納し取り出すことができる。適当な記憶装置の１つは、直接アクセス記憶装置（ＤＡＳＤ）１７０である。図１に示すように、ＤＡＳＤ１７０は、フロッピー・ディスク１８０からプログラムおよびデータを読み取ることができるフロッピー・ディスク・ドライブにすることができる。重要なことに、完全機能コンピュータ・システムに関して本発明を説明してきた（今後も説明し続ける）が、当業者であれば、本発明のメカニズムは様々な形式のプログラム製品として配布することができ、実際にその配布を実行するための特定タイプの信号伝達媒体にかかわらず、本発明は同様に適用されることが分かるだろう。信号伝達媒体の例としては、フロッピー・ディスク（たとえば、ディスク１８０）およびＣＤ−ＲＯＭなどの記録可能タイプの媒体と、ワイヤレス通信リンクを含む、ディジタルおよびアナログ通信リンクなどの伝送タイプの媒体とを含む。
【００４４】
メモリ・コントローラ１３０は、要求された情報をメイン・メモリ１２０からまたは補助記憶インタフェース１４０を介してプロセッサ１１０へ移動する作業を担当する。説明のために、メモリ・コントローラ１３０を個別のエンティティとして示すが、当業者であれば、メモリ・コントローラ１３０によって提供される機能の各部分は実際にはプロセッサ１１０、メイン・メモリ１２０、または補助記憶インタフェース１４０に関連する回路内に常駐可能であることが分かるだろう。
【００４５】
ターミナル・インタフェース１５０により、システム・アドミニストレータおよびコンピュータ・プログラマは、通常、プログラム式ワークステーションによりコンピュータ・システム１００と通信することができる。図１に示すシステム１００は単一メイン・プロセッサ１１０と単一システム・バス１６０のみを含んでいるが、本発明は複数のプロセッサと複数のシステム・バスとを有するコンピュータ・システムにも同様に適用されることが分かるだろう。同様に、好ましい実施例のシステム・バス１６０は典型的な配線式マルチドロップ・バスであるが、コンピュータ関連環境で双方向通信をサポートする接続手段であれば、どのような接続手段でも使用可能である。
【００４６】
メイン・メモリ１２０は、１つまたは複数のコンピュータ・プログラム１２２と、持続ＣＧＩプロセス１２３と、プロセス・プール１２４と、オペレーティング・システム１２５と、受諾ＵＲＬ  ＣＧＩヘッダ１２６と、タイムアウトＣＧＩヘッダ１２７と、ウェブ・ブラウザＵＲＬ１２８とを適当に含んでいる。メモリ１２０内のコンピュータ・プログラム１２２はその最も広い意味で使用され、ソース・コード、中間コード、マシン・コード、その他の表現のコンピュータ・プログラムを含む、あらゆる形式のコンピュータ・プログラムを含む。持続ＣＧＩ１２３は、ここに記載した特徴および機能をサポートする本発明の好ましい実施例によるプログラムである。オペレーティング・システム１２５は、一般にコンピュータ・システムで使用するオペレーティング・システムを代表するシステム管理タスクを実行できるオペレーティング・システムである。プロセス・プール１２４は、ウェブ・ブラウザ要求に関するジョブの流れを制御するために持続ＣＧＩ１２３とともに使用する。ＣＧＩヘッダ１２６および１２７は、既存のＣＧＩプログラミング・モデルの拡張部分である。
【００４７】
メイン・メモリ１２０は必ずしも図示のすべてのメカニズムのすべての部分を含むわけではないことが分かるだろう。たとえば、コンピュータ・プログラム１２２とオペレーティング・システム１２５の各部分はプロセッサ１１０用の命令キャッシュ（図示せず）にロードして実行することができるが、他のファイルは磁気または光ディスク記憶装置（図示せず）に格納することができる。さらに、コンピュータ・プログラム１２２はオペレーティング・システム１２５およびオブジェクト１２３と同じメモリ位置に常駐するように示されているが、メイン・メモリ１２０は異なるメモリ位置からなる可能性もあることが分かるだろう。ここで使用する「メモリ」という用語は、システム１００の仮想メモリ空間内の任意の記憶位置を意味する。
【００４８】
次に図６を参照すると、本発明の好ましい実施例によりＷＷＷトランザクションを実行するための持続ＣＧＩベースのコンピュータ・システム６００は、クライアント・ワークステーション２１０と、ウェブ・サーバ・コンピュータ・システム６３０と、接続部２１６と、持続ＣＧＩインタフェース２１７と、ウェブ・サーバ・アプリケーション２２２と、ウェブ・サーバ・プロセス３４０と、ウェブ・サーバ・コンピュータ６３０と、プロセス・プール６８０と、プロセス６８２および６８４と、ＣＧＩプログラム６８３および６８５とを含む。
【００４９】
持続ＣＧＩモデルを実施するため、２つの新しいＣＧＩヘッダ拡張部が実施されている。この２つの新しいヘッダは「受諾ＵＲＬ」ヘッダと「タイムアウト」ヘッダである。この新しいヘッダ・ファイルを標準のＣＧＩプログラミング・モデルに追加すると、ＣＧＩプロセスは、単一ウェブ・ブラウザ要求を超えて持続し、様々なウェブ・ブラウザ要求に及ぶ延長期間にわたって同じウェブ・ブラウザ２１２によって単一トランザクションまたは一連の関連トランザクションを維持することができる。
【００５０】
受諾ＵＲＬ  ＣＧＩヘッダは、ＣＧＩプログラム６８３および６８５が持続することをウェブ・サーバ・アプリケーション２２２に警告するために使用し、ウェブ・ブラウザ２１２による後続要求で持続ＣＧＩプログラム６８３および６８５によってどのウェブ・ブラウザＵＲＬ１２８が受諾されるかも指定する。受諾ＵＲＬ  ＣＧＩヘッダは、持続ＣＧＩプログラム６８３および６８５によってどの後続ブラウザ要求が処理されるかを識別するための識別メカニズムとして機能する。ウェブ・サーバ・アプリケーション２２２は、ウェブ・ブラウザ要求が満足された後でＣＧＩプログラム６８３および６８５を自動的に終了するわけではないが、ＣＧＩプログラム６８３および６８５が活動状態にままになり、ウェブ・ブラウザ２１２からの後続要求を待つことができるようにする。指定のウェブ・ブラウザＵＲＬ１２８は絶対ＵＲＬとして提供されない。というのは、サーバは、各後続アクセスごとに新しい通信ポートにウェブ・ブラウザ２１２をリダイレクトする可能性があるからである。ウェブ・サーバ・アプリケーション２２２がウェブ・ブラウザＵＲＬ１２８を適切な持続ＣＧＩプログラムと付き合わせることができるように、ＵＲＬは固有のものでなければならない。
【００５１】
ウェブ・サーバ・アプリケーション２２２が受諾ＵＲＬ  ＣＧＩヘッダを受信すると、持続ＣＧＩプログラム６８３または６８５によって受諾または認識されるウェブ・ブラウザＵＲＬ１２８は、メモリ１２０内に（すなわち、テーブルまたは連係リストとして）格納され、持続ＣＧＩプログラム６８３または６８５の特定インスタンスに割り当てられるものとして識別される。次に、メモリ１２０内に格納されたウェブ・ブラウザＵＲＬ１２８と一致する、ウェブ・ブラウザからの後続ウェブ・ブラウザ要求は、ウェブ・サーバ・アプリケーション２２２によって適切な持続ＣＧＩプログラム６８３または６８５に転送される。この手順は、ウェブ・ブラウザ２１２が実行を希望する１つまたは複数のトランザクションの期間中に、ＣＧＩプログラム６８３または６８５の特定のインスタンスを効果的に特定のウェブ・ブラウザ２１２専用にする。
【００５２】
タイムアウトＣＧＩヘッダは、受諾ＵＲＬヘッダとともに使用し、ＣＧＩプログラムが現行ジョブに関して所与のウェブ・ブラウザからの後続要求を待つ時間の長さ（分単位）を指定し制御するためのタイムアウト・メカニズムとして機能する。タイムアウトＣＧＩヘッダが指定されていない場合、ジョブは無限にまたはPersistentThreadTimeoutウェブ・サーバ指示が指定する時間の長さを超過するまで待つことになる。これに対して、タイムアウトＣＧＩヘッダが指定されている場合、このヘッダはPersistentThreadTimeout値より優先される。このオプションにより、個々のＣＧＩプログラムは、サーバがデフォルト値を見込むために必要とする長い形式または拡張部分に対してユーザが応答するための時間を延長することができる。タイムアウトＣＧＩ拡張ヘッダの使用を示す例は、以下の通りである。
Timeout = "Timeout"":"minutes"."min-fragment
minutes = 1*DIGIT
min-fragment = 1*DIGIT
【００５３】
タイムアウト値は、分単位で時間を表す、負以外の１０進整数である。タイムアウトＣＧＩ拡張ヘッダは、受諾ＵＲＬ  ＣＧＩ拡張ヘッダによって実施しなければならない。そうではない場合、タイムアウトＣＧＩ拡張ヘッダはシステムによって無視される。タイムアウトＣＧＩ拡張ヘッダが省略されている場合、ＣＧＩプログラムはウェブ・ブラウザからの受入れ可能な要求をいつまでも待つつもりであるものと想定する。時間切れになった場合、ソケットは閉じられ、ジョブは終了する。さらに、保留トランザクションに関する暗黙ロールバックが行われる。ＣＧＩプログラム６８３または６８５のインスタンスがタイムアウトのために終了すると、システム・メッセージがログ記録される。
【００５４】
プロセス・プール６８０は、持続ＣＧＩプログラム６８２および６８４のインスタンスをいくつでも含むことができる。通常、ウェブ・サーバ・アプリケーション２２２は、ウェブ・ブラウザ２１２から受信した要求を収容するために、ＣＧＩプログラム１２３からの複数の持続ＣＧＩプロセスをインスタンス化する。要求が受信されると、ウェブ・サーバ・アプリケーション２２２はその要求を適切な持続ＣＧＩプロセスに転送する。持続ＣＧＩプロセス６８２または６８４がウェブ・ブラウザ・トランザクションを処理している間、そのプロセスはその特定のウェブ・ブラウザ専用になり、他のウェブ・ブラウザからの他の要求を処理するために使用できなくなる。おそらく複数の独立要求を含む、ウェブ・ブラウザ・トランザクション全体が完了した後、持続ＣＧＩプロセス６８２または６８４は終了するかまたはプロセス・プールに返され、そこで次の要求に対応するために使用できるようになる。ウェブ・ブラウザ２１２と持続ＣＧＩプロセス６８２および６８４との間に確立された通信リンクが、トランザクションに関しては「連続的」であるが、単一ウェブ・ブラウザ２１２用の複数の独立ウェブ・ブラウザ要求に関しては「非連続的」であることは、重要なことである。このため、単一トランザクションは、複数の分離したウェブ・ブラウザ要求を単一トランザクションとして含むことができる。これは、各トランザクションが単一要求を含み、各ウェブ・ブラウザ要求後に通信リンクが終了するという、これまでに既知の解決策の「連続」性とは対照的なものである。
【００５５】
次に、図１、図６、図７を参照すると、同図には、本発明の好ましい実施例により持続ＣＧＩを実施するための方法７００が示されている。ウェブ・サーバ・アプリケーション２２２はウェブ・ブラウザ２１２から要求を受信する（ステップ７０５）。ウェブ・サーバ・アプリケーション２２２は、ウェブ・ブラウザ要求に対応するために持続ＣＧＩプロセス１２３をインスタンス化する（ステップ７１０）。持続ＣＧＩプロセス１２３は、ウェブ・ブラウザ要求を処理し、その要求を満足するために必要なアクションをすべて行う（ステップ７１５）。次に持続ＣＧＩプロセス１２３は、ウェブ・サーバ・アプリケーション２２２に受諾ＵＲＬ  ＣＧＩヘッダを送信する（ステップ７２０）。受諾ＵＲＬ  ＣＧＩヘッダは、持続ＣＧＩプロセス１２３によって許される今後のトランザクション用のソースとしてウェブ・ブラウザ２１２を識別するように機能する。また、受諾ＵＲＬ  ＣＧＩヘッダは、ウェブ・ブラウザ２１２からのどのＵＲＬがＣＧＩプロセス１２３に適合するものとして受け入れられるかについても識別する。
【００５６】
任意で、タイムアウトＣＧＩヘッダが含まれる場合、ウェブ・サーバ・アプリケーション２２２は、割り振られた時間を超過したかどうかを確認するために検査する（ステップ７２５）。超過した場合、持続ＣＧＩプロセスは終了する（ステップ７５５）。タイムアウトＣＧＩヘッダが指定されていない場合または指定されているが超過していない場合、持続ＣＧＩプロセス１２３は待機サイクルに入り、ウェブ・ブラウザ２１２からの他の要求を待つ。ウェブ・ブラウザから他の要求を受信すると（ステップ７３０＝ＹＥＳ）、ウェブ・サーバ・アプリケーション２２２は要求側ウェブ・ブラウザのＵＲＬとメモリ内に格納されたＵＲＬのリストとを比較し（ステップ７３５）、一致しない場合（ステップ７３５＝ＮＯ）、要求は拒否され、持続ＣＧＩプロセス１２３によって処理されない（ステップ７４０）。しかし、ＵＲＬが受け入れられる場合（ステップ７３５＝ＹＥＳ）、持続ＣＧＩプロセス１２３は要求を処理する（ステップ７４５）。トランザクション全体が完了し、ウェブ・ブラウザ・セッションが完了した後（ステップ７５０＝ＹＥＳ）、持続ＣＧＩプロセスは終了する（ステップ７５５）かまたはプロセス・プールに戻される。
【００５７】
本発明の好ましい実施例により持続ＣＧＩモデルを実施するためには、上記のＣＧＩ拡張ヘッダに加え、いくつかの新しいウェブ・サーバ指示を標準のウェブ・サーバ指示に加える必要がある。ウェブ・サーバ指示とは、ウェブ・サーバの挙動を指定する１つまたは複数の構成ファイルに格納されたステートメントである。このようなサーバ指示は、ウェブ・ブラウザ・インタフェースを介するかまたはファイル（複数も可）を直接編集するだけで、追加、変更、または削除することができる。本発明の好ましい実施例で使用するための２つの新しいサーバ指示は、「PersistentThreadTimeout」指示と「MaxPersistentThreads」指示である。
【００５８】
所与の持続ＣＧＩプロセスに関するウェブ・ブラウザ入力の連続到着についてはまったく確信できないので、保留サーバ・ジョブに関連する不正確終了を除去するためのメカニズムが所定の位置になければならない。PersistentThreadTimeout指示を使用すると、ウェブ・サーバ・アプリケーション２２２が持続ＣＧＩプログラムを終了する前に持続ＣＧＩプログラムに関する追加のブラウザ入力を受信するまで待つ最長時間が指定される。活動スレッドが指定の期間中に新しい入力を受信しない場合、ジョブは終了するかまたはジョブ・プールに返される。指定の時間値は、時間、分、秒のいかなる組合せにすることもできる。「永久」というデフォルト値を使用する場合、サーバはどのジョブも終了しないかまたはどのスレッドも終了しない。デフォルト値は、上記のタイムアウトＣＧＩヘッダを使用するＣＧＩプログラムによって指定変更することができる。タイムアウトＣＧＩヘッダにより、サーバ・アドミニストレータはより短いデフォルト・タイムアウト値を設定することができ、個々のＣＧＩプログラムは必要であればより長い待機時間を選択的に指定することができる。「永久」以外のタイムアウト値を設定すると、サーバ・ジョブが故意ならびに偶発的な「応答なし」条件により不必要に拘束されるのを防止する。ＣＧＩプログラムがタイムアウトのために終了すると、システム・メッセージがログ記録される。PersistentThreadTimeout指示の使い方の一例は「PersistentThreadTimeout 5 mins」である。
【００５９】
MaxPersistentThreads指示は、任意の時点で持続性になりうる最大数のスレッドを指定するために使用する。最大数に達した場合、既存の持続スレッドが解放され、使用可能になるまで、サーバは新しいジョブを求める追加の実行要求を拒否する。MaxPersistentThreads指示の使い方の一例は「MaxPersistentThreads 20」である。
【００６０】
本発明の好ましい実施例による持続ＣＧＩモデルの使用を例示するために、以下の例を示す。ある企業は、従業員が顧客の注文を処理できるようにするソフトウェア・アプリケーションに対してインターネットによりアクセスできるようにしたいと希望している。顧客の注文を処理するため、従業員はインターネットにより複数のデータベースにアクセスすることが必要になる。また、その企業は、ＷＷＷページ上に対話式製品カタログをポストし、顧客がインターネットによりそのカタログにアクセスして電子注文できるようにすることも計画している。また、その企業は、インターネットにより新しい顧客を受け入れ、その顧客を企業の顧客データベースに登録することも希望している。
【００６１】
顧客がその企業のウェブ・ページにアクセスすると、顧客はウェブ・ブラウザ２１２を使用してその企業のウェブ・ページを閲覧する。ウェブ・ページの一部は顧客情報データの書式を含むことになる。この書式により、顧客は、顧客番号、自宅の住所、電話番号などの情報を入力することができる。顧客が必要な情報を入力した後、その情報はウェブ・サーバ・アプリケーション２２２に送信されて処理される。ウェブ・サーバ・アプリケーション２２２は持続ＣＧＩプロセス１２３をインスタンス化し、持続ＣＧＩプロセスは要求を満足するために必要なステップを実行する。これは、企業のデータベース・ファイルを開いて顧客番号、住所情報などを検査または確認することを含む場合がある。また、持続ＣＧＩプロセス１２３は、受託ＵＲＬ  ＣＧＩヘッダと、要求されたデータまたはウェブ・ブラウザ２１２用の応答をウェブ・サーバ・アプリケーション２２２に送信する。ウェブ・サーバ・アプリケーション２２２は、要求されたデータまたは持続ＣＧＩプロセス１２３からの応答をウェブ・ブラウザ２１２に転送し、ウェブ・ブラウザ２１２用のポートを開く。
【００６２】
この時点で顧客は、ウェブ・ブラウザ２１２を使用して他の要求をウェブ・サーバ・アプリケーション２２２に提示する。この要求は、オンライン・カタログからの特定の製品に関する顧客の注文である場合もある。この要求がウェブ・サーバ・アプリケーション２２２によって受信されると、その要求とともに送信されたＵＲＬはウェブ・ブラウザ２１２を識別し、ウェブ・サーバ・アプリケーション２２２は持続ＣＧＩプロセス１２３が待っているポートにその要求を転送する。次に持続ＣＧＩプロセス１２３は、この要求も処理することになる。同様に、ウェブ・ブラウザ２１２からの追加の要求は、請求書情報、発送データなどの送信を含む可能性がある。このような要求はいずれもウェブ・サーバ・アプリケーション２２２によって持続ＣＧＩプロセス１２３に経路指定され、持続ＣＧＩプロセス１２３によって処理される。トランザクション全体が完了すると、持続ＣＧＩプロセス１２３はウェブ・サーバ・アプリケーション２２２に戻り、受諾ＵＲＬ  ＣＧＩヘッダを指定しない。これは、持続ＣＧＩプロセス１２３がウェブ・ブラウザ２１２によってトランザクションを完了し（ステップ７５０）、持続ＣＧＩプロセス１２３が終了するかまたはプロセス・プールに戻って、ウェブ・ブラウザ２１２またはウェブ・サーバ・アプリケーション２２２に要求を提示する他のウェブ・ブラウザからの新しいトランザクションに関する新しい要求を待つことができることを意味する。
【００６３】
図６に示すような持続ＣＧＩモデルを実施する場合、本発明の潜在的な利点を完全に実現するために対処しなければならないシステム管理関係の問題がいくつかある。持続ＣＧＩプロセスは潜在的な長期間の間、活動状態を維持することができるので、所与のシステム資源を不用意に独占する可能性がある。持続ＣＧＩプロセスをプログラミングするには、システムの機能性を保護するためにすべてのシステム資源の割振りおよび使用法に注意する必要がある。たとえば、持続ＣＧＩプロセスが所与の時間後に「タイムアウト」または終了するようにセットアップされていない場合、そのプロセスは、クライアントが所与のトランザクションを続行するのを待って、継続的にシステム資源を消費する可能性がある。しかし、この可能性は、上記の「タイムアウト」ＣＧＩ拡張ヘッダを使用することにより、最小限にするか除去することができる。さらに、持続ＣＧＩプロセスの可搬性は、標準ＣＧＩプロセスに比べ、いくらか低減される。というのは、現在、すべてのウェブ・サーバ・アプリケーションが持続ＣＧＩモデルをサポートしているわけではないからである。持続ＣＧＩモデルをサポートするように設計されたＨＴＴＰサーバがますます増えるにつれて、この制限は重要性が低下するはずである。
【００６４】
本発明のさらなる機能強化としては「活動化グループ」という概念を含む。活動化グループとは、活動化グループが特定のプログラムまたはプロセス向けに事前初期設定された所与のプロセスであり、必要な環境変数も事前初期設定されている場合に、プロセス・プール内のサブプールとして識別される特定のグループの持続ＣＧＩプロセスである。活動化プロセス内のプロセスは、複数のブラウザ要求にわたって活動状態を維持することができる。このため、特定のプログラムへのアクセスを必要とするウェブ・ブラウザは、所望の活動化グループ内のプログラムと繰り返し対話して、より好都合の方法で所望のタスクを達成することができる。
【００６５】
本発明の好ましい実施例により持続ＣＧＩプロセスを実施することにより、ウェブ・ブラウザとＣＧＩプロセスとの間の通信プロセスの特徴は、上記のこれまでに既知の解決策とはまったく異なったものになる。単一連続通信接続により単一ウェブ・ブラウザ要求を処理するのではなく、所与のウェブ・ブラウザと同じＣＧＩプロセスとの間に確立された一連の非連続通信接続によって、複数の別々であるが関連のある要求を処理することができる。
【００６６】
その好ましい実施例に関連して本発明を具体的に示し説明してきたが、当業者であれば、本発明の精神および範囲を逸脱せずに形式および細部の点で様々な変更が可能であることが分かるだろう。具体的には、ＣＧＩプログラミング・モデルに関連して本発明を説明してきたが、本発明は他の環境での使用にも適当に採用することができる。
【００６７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６８】
（１）少なくとも１つのＣＰＵと、
前記ＣＰＵに結合されたメモリと、
前記メモリ内に常駐し、前記ＣＰＵによって実行される持続インタフェース・プログラムであって、ブラウザと前記持続インタフェース・プログラムとの間に確立された非連続通信接続を介して前記ブラウザとの間でデータを送受信することができ、前記ブラウザから受信した要求を処理した後、活動状態を維持する持続インタフェース・プログラムとを含む、持続インタフェース装置。
（２）前記メモリ内に常駐する識別メカニズムであって、前記持続インタフェース・プログラムによって受け入れられる少なくとも１つのブラウザからの少なくとも１つの資源固有アドレスを識別する識別メカニズムをさらに含む、上記（１）に記載の装置。
（３）前記メモリ内に常駐するタイムアウト・メカニズムであって、所定の期間後に前記持続インタフェース・プログラムを終了するタイムアウト・メカニズムをさらに含む、上記（１）に記載の装置。
（４）前記メモリ内に常駐するプロセス・プールをさらに含み、前記持続インタフェース・プログラムが前記プロセス・プールの一部である、上記（１）に記載の装置。
（５）活動化グループをさらに含み、前記活動化グループが前記プロセス・プールの一部であり、前記持続インタフェース・プログラムが前記活動化グループの一部である、上記（４）に記載の装置。
（６）前記メモリ内に常駐するタイムアウト・メカニズムであって、所定の期間後に前記持続インタフェース・プログラムを終了するタイムアウト・メカニズムと、
前記メモリ内に常駐する識別メカニズムであって、前記持続インタフェース・プログラムによって受け入れられる少なくとも１つのブラウザからの少なくとも１つの資源固有アドレスを識別する識別メカニズムとをさらに含む、上記（１）に記載の装置。
（７）前記持続インタフェース・プログラムがＣＧＩプログラムである、上記（１）に記載の装置。
（８）少なくとも１つのＣＰＵと、
前記ＣＰＵに結合されたメモリと、
前記メモリ内に常駐し、前記ＣＰＵによって実行される持続ＣＧＩプログラムであって、ウェブ・ブラウザと前記持続ＣＧＩプログラムとの間に確立された非連続通信接続を介して前記ウェブ・ブラウザとの間でデータを送受信することができ、前記ウェブ・ブラウザから受信した要求を処理した後、活動状態を維持する持続ＣＧＩプログラムと、
前記メモリ内に常駐する識別メカニズムであって、前記持続ＣＧＩプログラムによって受け入れられる少なくとも１つのウェブ・ブラウザからの少なくとも１つの資源固有アドレスを識別する識別メカニズムとを含む、持続ＣＧＩ装置。
（９）ブラウザと通信するための方法において、
前記ブラウザから持続インタフェース・プログラムに第１のブラウザ要求を送信するステップと、
前記第１のブラウザ要求を処理して結果を生成するステップと、
前記ブラウザから前記持続インタフェース・プログラムによって受け入れられる第１の資源固有アドレスをメモリ位置内に格納するステップと、
前記結果を前記ブラウザに送信するステップと、
前記ブラウザと前記持続インタフェース・プログラムとの間に非連続通信リンクを確立するステップと、
前記結果を前記ブラウザに送信した後、前記持続インタフェース・プログラムを活動状態に維持し、前記ブラウザからの後続要求を処理するステップとを含む方法。
（１０）前記ブラウザから前記持続インタフェース・プログラムに第２の要求を送信するステップであって、前記第２の要求が第２の資源固有アドレスに関連するステップと、
前記ブラウザによって送信された前記第２の資源固有アドレスを前記メモリ位置内に格納された前記第１の資源固有アドレスと比較するステップと、
前記第２の資源固有アドレスが前記第１の資源固有アドレスと一致する場合に前記第２の要求を処理するステップとをさらに含む、上記（９）に記載の方法。
（１１）所定の時間待った後で前記持続インタフェース・プログラムを終了するステップをさらに含む、上記（９）に記載の方法。
（１２）前記持続インタフェース・プログラムに第１のブラウザ要求を送信する前記ステップが、前記第１のブラウザ要求をプロセス・プールに送信するステップであって、前記第１のブラウザ要求が前記持続インタフェース・プログラムに割り当てられるステップを含む、上記（９）に記載の方法。
（１３）前記プロセス・プール内の前記持続インタフェース・プログラムを事前初期設定し、活動化グループを作成するステップをさらに含む、上記（１２）に記載の方法。
（１４）前記持続インタフェース・プログラムを含むすべてのステップが持続ＣＧＩプログラムによって実行される、上記（９）に記載の方法。
（１５）ウェブ・ブラウザと通信するための方法において、
ウェブ・サーバを介して前記ウェブ・ブラウザから持続ＣＧＩプログラムに第１のウェブ・ブラウザ要求を送信するステップと、
前記第１のウェブ・ブラウザ要求を処理して結果を生成するステップと、
前記ウェブ・ブラウザから前記持続ＣＧＩプログラムによって受け入れられる第１の資源固有アドレスをメモリ位置内に格納するステップと、
前記ウェブ・サーバを介して前記結果を前記ウェブ・ブラウザに送信するステップと、
前記ウェブ・ブラウザと前記持続ＣＧＩプログラムとの間に非連続通信リンクを確立するステップと、
前記結果を前記ウェブ・ブラウザに送信した後、前記持続ＣＧＩプログラムを活動状態に維持し、前記ウェブ・ブラウザからの後続要求を処理するステップと、
識別メカニズムを使用し、前記持続ＣＧＩプログラムによって受け入れられる前記ウェブ・ブラウザからの少なくとも１つの資源固有アドレスを識別するステップとを含む方法。
（１６）（Ａ）単一ブラウザからの一連の複数のブラウザ要求にわたって前記単一ブラウザによって非連続通信接続を維持し、各ブラウザ要求を待っている間に活動状態を維持する持続インタフェース・プログラムと、
（Ｂ）前記持続インタフェース・プログラムを伝達する信号伝達媒体とを含む、プログラム製品。
（１７）前記信号伝達媒体が記録可能媒体を含む、上記（１６）に記載のプログラム製品。
（１８）前記信号伝達媒体が送信媒体を含む、上記（１６）に記載のプログラム製品。
（１９）前記持続インタフェース・プログラムが持続ＣＧＩプログラムを含む、上記（１６）に記載のプログラム製品。
（２０）（Ａ）識別メカニズムを使用して単一ウェブ・ブラウザを識別することにより前記単一ウェブ・ブラウザからの一連の複数のウェブ・ブラウザ要求にわたって前記単一ウェブ・ブラウザによって非連続通信接続を維持し、各ウェブ・ブラウザ要求を待っている間に活動状態を維持する持続ＣＧＩプログラムと、
（Ｂ）前記持続ＣＧＩプログラムを伝達する信号伝達媒体とを含む、プログラム製品。
（２１）（Ａ）持続インタフェース・プログラムであって、
前記持続インタフェース・プログラムのインスタンスが非連続通信接続を介して単一ブラウザから受信した複数の独立ブラウザ要求を処理できるようにする通信メカニズムを含み、各独立ブラウザ要求を待っている間に活動状態を維持する持続インタフェース・プログラムと、
（Ｂ）前記持続インタフェース・プログラムを伝達する信号伝達媒体とを含む、プログラム製品。
（２２）前記信号伝達媒体が記録可能媒体を含む、上記（２１）に記載のプログラム製品。
（２３）前記信号伝達媒体が送信媒体を含む、上記（２１）に記載のプログラム製品。
（２４）ブラウザと持続インタフェース・プログラムとの間で通信するためのコンピュータ実施方法において、
前記持続インタフェース・プログラムをインスタンス化するステップと、
前記ブラウザと前記持続インタフェース・プログラムとの間に非連続接続を確立するステップと、
前記ブラウザから前記持続インタフェース・プログラムに第１のブラウザ要求を送信するステップと、
前記持続インタフェース・プログラムを使用して、前記ブラウザ要求から結果を生成するステップと、
前記ブラウザから前記持続インタフェース・プログラムによって受け入れられる第１の資源固有アドレスをメモリ位置内に格納するステップと、
前記結果を前記ブラウザに送信するステップと、
前記持続インタフェース・プログラムを活動状態に維持するステップとを含む方法。
（２５）前記ブラウザから前記持続インタフェース・プログラムに第２の要求を送信するステップであって、前記第２の要求が第２の資源固有アドレスに関連するステップと、
前記ブラウザによって送信された前記第２の資源固有アドレスを前記第１の資源固有アドレスと比較するステップと、
前記持続インタフェース・プログラムを使用し、前記第２の資源固有アドレスが前記第１の資源固有アドレスと一致する場合に前記第２の要求を処理するステップとをさらに含む、上記（２４）に記載のコンピュータ実施方法。
（２６）所定の時間後に前記持続インタフェース・プログラムを終了するステップをさらに含む、上記（２４）に記載のコンピュータ実施方法。
（２７）前記持続インタフェース・プログラムに第１のブラウザ要求を送信する前記ステップが、前記第１のブラウザ要求をプロセス・プールに送信するステップであって、前記第１のブラウザ要求が前記プロセス・プール内の前記持続インタフェース・プログラムに割り当てられるステップを含む、上記（２４）に記載のコンピュータ実施方法。
（２８）前記プロセス・プール内の前記持続インタフェース・プログラムを事前初期設定し、活動化グループを作成するステップをさらに含む、上記（２７）に記載のコンピュータ実施方法。
（２９）前記持続インタフェース・プログラムが持続ＣＧＩプログラムを含む、上記（２４）に記載のコンピュータ実施方法。
（３０）ウェブ・ブラウザと持続ＣＧＩプログラムとの間で通信するためのコンピュータ実施方法において、
前記持続ＣＧＩプログラムをインスタンス化するステップと、
前記ウェブ・ブラウザと前記持続ＣＧＩプログラムとの間に非連続接続を確立するステップと、
ウェブ・サーバを介して前記ウェブ・ブラウザから前記持続ＣＧＩプログラムに第１のウェブ・ブラウザ要求を送信するステップと、
前記持続ＣＧＩプログラムを使用して、前記ウェブ・ブラウザ要求から結果を生成するステップと、
前記結果を前記ウェブ・ブラウザに送信するステップと、
識別メカニズムを使用し、前記持続ＣＧＩプログラムによって受け入れられる前記ウェブ・ブラウザからの少なくとも１つの資源固有アドレスを識別するステップと、
前記持続ＣＧＩプログラムを活動状態に維持し、前記ウェブ・ブラウザからの他の要求を待つステップとを含む方法。
【図面の簡単な説明】
【図１】本発明の好ましい実施例による装置のブロック図である。
【図２】クライアント・ワークステーションとウェブ・サーバとのＷＷＷトランザクションのブロック図である。
【図３】ＷＷＷトランザクションを実行するための既知のＣＧＩベースのコンピュータ・システムのブロック図である。
【図４】ＷＷＷトランザクションを実行するための既知のサーバＡＰＩベースのコンピュータ・システムのブロック図である。
【図５】ＷＷＷトランザクションを実行するための既知の高速ＣＧＩベースのコンピュータ・システムのブロック図である。
【図６】本発明の好ましい実施例によりＷＷＷトランザクションを実行するための持続ＣＧＩベースのシステムのブロック図である。
【図７】本発明の好ましい実施例によりＷＷＷトランザクションを実行するための持続ＣＧＩベースのシステムのフローチャートである。
【符号の説明】
１００  コンピュータ・システム
１１０  中央演算処理装置（ＣＰＵ）またはプロセッサ
１２０  メイン・メモリ
１２２  コンピュータ・プログラム
１２３  持続ＣＧＩプロセス
１２４  プロセス・プール
１２５  オペレーティング・システム
１２６  受諾ＵＲＬ  ＣＧＩヘッダ
１２７  タイムアウトＣＧＩヘッダ
１２８  ウェブ・ブラウザＵＲＬ
１３０  メモリ・コントローラ
１４０  補助記憶インタフェース
１５０  ターミナル・インタフェース
１６０  システム・バス
１７０  直接アクセス記憶装置（ＤＡＳＤ）
１８０  ディスク
【図１】
0004233635.tif 000002
【図２】
0004233635.tif 000003
【図３】
0004233635.tif 000004
【図４】
0004233635.tif 000005
【図５】
0004233635.tif 000006
【図６】
0004233635.tif 000007
【図７】
0004233635.tif 000008