(57)【要約】本発明は、クライエント−サーバネットワーク（１２５）で通信するためのサーバ（１１５）に関する。サーバ（１１５）は、第１のクライエント（１１０）からサーバとの通信セッションを確立する第１の要求を受信する受信器を含む。サーバ（１１５）はまた、第１の要求に応答してユーザセッションを確立するユーザセッション機構（２０５）を有する。サーバは、さらに第１の要求に応答して第１のクライエントセッションを確立するクライエントセッション機構（３１０）を含む。第１のクライエントセッションが終了すると、サーバ（１１５）は、例えばデータベースであり得るメモリ素子（３１５）にユーザセッションデータを保存する。受信器はまた、第２の要求を受信して、ユーザセッション機構はユーザセッションを再起動する。
2006502496.tif 000002
【特許請求の範囲】
【請求項１】
クライエント−サーバネットワークで通信する方法であって、該方法は、
（ａ）ユーザにより操作される第１のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
（ｂ）受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションを確立する工程と、
（ｃ）受信された要求に応答して、第１のクライエントとサーバとの間のクライエントセッションを確立する工程と、
（ｄ）クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程と、
（ｅ）ユーザにより操作される第２のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
（ｆ）ユーザセッションを再起動する工程と、
を含む方法。
【請求項２】
工程（ａ）は、サーバとの通信を確立する要求をサーバにより受信することを含み、該要求はユーザを識別する、請求項１に記載の方法。
【請求項３】
ユーザ認証資格をサーバにより受信する工程をさらに含む、請求項１に記載の方法。
【請求項４】
工程（ａ）は、サーバとの通信を確立するハイパーテキスト転送プロトコル（ｈｔｔｐ）要求をサーバにより受信することを含む、請求項１に記載の方法。
【請求項５】
工程（ｄ）は、
（ｄ−ａ）第１のクライエントから終了メッセージを受信することと、
（ｄ−ｂ）第１のクライエントとサーバとの間のクライエントセッションを終了することと、
（ｄ−ｃ）第１のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項１に記載の方法。
【請求項６】
工程（ｄ）は、
（ｄ−ａ）所定期間待機することと、
（ｄ−ｂ）第１のクライエントとサーバとの間のクライエントセッションを終了することと、
（ｄ−ｃ）第１のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項１に記載の方法。
【請求項７】
工程（ｄ）は、クライエントセッションの終了に応答して、データベースにユーザセッションデータをサーバにより保存することをさらに含む、請求項１に記載の方法。
【請求項８】
確立されたユーザセッションに状態を割り当てる工程をさらに含む、請求項１に記載の方法。
【請求項９】
工程（ｂ）は、ユーザセッションがアクティブであることを示す確立されたユーザセッションに、識別子を割り当てることをさらに含む、請求項８に記載の方法。
【請求項１０】
工程（ｆ）は、再起動されたユーザセッションがアクティブであることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項８に記載の方法。
【請求項１１】
工程（ｄ）は、ユーザセッションが一時停止されていることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項８に記載の方法。
【請求項１２】
（ｇ）ユーザセッション終了するためにユーザセッション終了メッセージを受信する工程と、
（ｈ）ユーザセッションが完了したことを示すユーザセッションに識別子を割り当てる工程と、
をさらに含む、請求項１に記載の方法。
【請求項１３】
保存されたユーザセッションデータを消去する工程をさらに含む、請求項１２の方法。
【請求項１４】
工程（ｅ）は、
（ｅ−ａ）ユーザにより操作される第１のクライエントと第２のクライエントのうち少なくとも１つから、サーバとの通信を確立する別の要求をサーバにより受信することと、
（ｅ−ｂ）ユーザに関連付けられ、確立されたユーザセッションの存在を、保存されたユーザセッションデータを使用して判定することと、
を含む、請求項１に記載の方法。
【請求項１５】
確立されたユーザセッション存在の判定に応答して、ユーザセッションを再起動する工程をさらに含む、請求項１４に記載の方法。
【請求項１６】
工程（ｄ）は、ユーザのためのユーザ識別子、ユーザを識別する名前、ユーザを認証するのに使用される方法を表す方法表示子、ユーザセッション固有の識別子、ユーザセッションが作成された時間、セッションデータのロックタイプ、タイムアウト、セッションデータおよび切断時間のうちの少なくとも１つを、サーバにより保存する工程をさらに含む、請求項１に記載の方法。
【請求項１７】
工程（ｂ）は、
（ｂ−ａ）第１のクライエントからユーザ資格をサーバにより受信することと、
（ｂ−ｂ）ユーザ資格を使用して、ユーザの認証をすることと、
（ｂ−ｃ）認証クッキーを作成することと、
（ｂ−ｄ）認証クッキーに関連付けられたクライエントセッションオブジェクトを作成することと、
（ｂ−ｅ）ユーザに関連付けられたユーザセッションオブジェクトを作成することと、
（ｂ−ｆ）クライエントセッションをユーザセッションに関連付けることと、
をさらに含む、請求項１に記載の方法。
【請求項１８】
第１のクライエントと第２のクライエントのうち少なくとも１つから、サーバとの通信を確立する別の要求を受信する工程をさらに含む、請求項１７に記載の方法。
【請求項１９】
別の要求でクライエントセッションを確立する前に、サーバ上のクッキーと別の要求のヘッダにおけるクッキーとを比較することをさらに含む、請求項１８に記載の方法。
【請求項２０】
クライエント−サーバネットワークで通信するためのサーバであって、
（ａ）第１のクライエントからサーバとの通信セッションを確立する第１の要求と、第２のクライエントからサーバとの通信セッションを確立する第２の要求とを受信する受信器と、
（ｂ）サーバとの通信セッションを確立する第１の要求に応答してユーザセッションを確立する、受信器と通信するユーザセッション機構と、
（ｃ）サーバとの通信セッションを確立する第１の要求に応答して第１のクライエントセッションを確立する、受信器と通信するクライエントセッション機構と、
（ｄ）第１のクライエントセッションの終了に応答して、ユーザセッションデータを保存するメモリ素子と、
を含み、
ユーザセッション機構は、第２の要求を受信する受信器に応答してユーザセッションを再起動するサーバ。
【請求項２１】
ユーザセッション機構はイベント操作子を含む、請求項２０に記載のサーバ。
【請求項２２】
ユーザセッション機構はＨＴＴＰモジュールを含む、請求項２０に記載のサーバ。
【請求項２３】
メモリ素子はデータベースを含む、請求項２０に記載のサーバ。
【請求項２４】
ユーザセッション機構は、確立されたユーザセッションに状態を割り当てる、請求項２０に記載のサーバ。
【請求項２５】
ユーザセッション機構は、さらにアクティブ状態、完了状態、一時停止状態のうちの少なくとも１つからなる状態を割り当てる、請求項２４に記載のサーバ。
【請求項２６】
クライエント−サーバネットワークで通信するためのサーバであって、
（ａ）ユーザにより操作される第１のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
（ｂ）受信された要求に応答して、識別されたユーザとのユーザセッションを確立するための手段と、
（ｃ）受信された要求に応答して、第１のクライエントとのクライエントセッションを確立するための手段と、
（ｄ）クライエントセッションの終了に応答して、ユーザセッションデータを保存するための手段と、
（ｅ）ユーザにより操作される第２のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
（ｆ）ユーザセッションを再起動するための手段と、
を含むサーバ。
【請求項２７】
その中にコンピュータ可読プログラム手段を具現化する製品であって、該製品は、
（ａ）第１のクライエントからサーバとの通信セッションを確立する第１の要求と、第２のクライエントからサーバとの通信セッションを確立する第２の要求とを受信するためのコンピュータ可読プログラム手段と、
（ｂ）サーバとの通信セッションを確立する第１の要求に応答して、ユーザセッションを確立するためのコンピュータ可読プログラム手段と、
（ｃ）サーバと通信セッションを確立する第１の要求に応答して、第１のクライエントセッションを確立するためのコンピュータ可読プログラム手段と、
（ｄ）第１のクライエントセッションの終了に応答して、ユーザセッションデータを保存するためのコンピュータ可読プログラム手段と、
を含み、
第１の要求に応答してユーザセッションを確立するためのコンピュータ可読プログラム手段は、第２の要求を受信する受信器に応答して、ユーザセッションを再起動する製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概ね、クライエント−サーバネットワークで通信を行うことに関し、より詳細には第１のクライエントを操作するユーザがサーバとの通信セッションから切断し、後に同一または別のクライエントから同一セッションに対して任意の時間に再接続可能とすることに関する。
【背景技術】
【０００２】
図１を参照すると、先行技術では既知のネットワークコンピュータシステム１００の１つのタイプは、典型的にはクライエントコンピュータ１１０とサーバ１１５を含む。クライエントコンピュータ１１０は、典型的にはサーバ１１５からの情報をダウンロードできるパーソナルコンピュータである。従来のクライエント１１０は、インターネットまたはワールドワイドウェブなどのネットワーク１２５を通過するクライエント−サーバ通信経路１２０で、サーバ１１５と通信する。サーバ１１５はまた、クライエント１１０によりアクセス可能な１つ以上のアプリケーションプログラム１３０を動作させることができる。
【０００３】
クライエント１１０はまた、ウェブに接続し、かつ／またはサーバ１１５からコンテンツをダウンロードするために、Ｗａｓｈｉｎｇｔｏｎ、ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより開発されたＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲまたはＣａｌｉｆｏｒｎｉａ、Ｍｏｕｎｔａｉｎ  ＶｉｅｗのＮｅｔｓｃａｐｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｃｏｒｐｏｒａｔｉｏｎにより開発されたＮＥＴＳＣＡＰＥ  ＮＡＶＩＧＡＴＯＲなどのウェブブラウザ１３５を含み得る。サーバ１１５は、典型的にはクライエント１１０からの通信要求に応答して、クライエント１１０（例えば、ウェブブラウザ１３５）にウェブページを配信する。
【０００４】
クライエント１１０およびサーバ１１５は、従来はインターネット１２５で通信する際にハイパーテキスト転送プロトコル（ＨＴＴＰ）を採用する。しかしながら、残念なことに、ＨＴＴＰは「ステートレス」プロトコルである。言い換えれば、典型的には、サーバ１１５への訪問はその度にユーザによる最初の訪問としてサーバ１１５に見なされる。基本的に、サーバは各通信要求後、すべてを「忘れる」。
【０００５】
例えば、クライエント１１０を操作するユーザは、インターネット１２５でサーバ１１５と通信できる。これらの通信中は、ユーザはサーバ１１５上で実行するアプリケーション１３０を使用して、例えば何らかの作業を行う。サーバ１１５はまた、典型的には通信と関連付けられたデータを保存する。その後、ユーザはそのエリアから離れなければならない場合など、サーバ１１５との通信を終了する。通信の終了の結果、サーバ１１５は典型的には通信に関連づけられたデータを消去する。ユーザはその後、そのエリアに戻り同一のクライエント１１０を使うと、ユーザはクライエント１１０を使用して再びサーバ１１５と通信できる。サーバ１１５が以前の通信中に保存したデータにユーザがアクセスしようとすると、典型的には、ＨＴＴＰのステートレスな性質ゆえにサーバ１１５は以前の通信と関連付けられたデータへもはやアクセスできないので、ユーザはフェイルする。
【０００６】
この問題の１つの解決策は、ＨＴＴＰセッションの確立である。ＨＴＴＰセッションは典型的には、クライエント１１０を操作する単一ユーザによるウェブページへの多数回の要求の持続期間を示す。ＨＴＴＰセッション中は、典型的にはクッキーが採用されて状態を維持する。例えば、サーバ１１５は、その後クライエント１１０上に保存するために、クッキーを作成し、ウェブブラウザ１３５にそれを送信することできる。ＨＴＴＰセッション中は、クライエント１１０は典型的には、ユーザのクッキーに関連付けられたデータをサーバ１１５に送信して状態を持続する。
【０００７】
さらに、サーバ１１５がＷａｓｈｉｎｇｔｏｎ、ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより開発されたアプリケーションサービスプロバイダ（ＡＳＰ．ＮＥＴ）モジュールで実行する場合、ＡＳＰ．ＮＥＴモジュールは典型的にはＨＴＴＰセッション状態をサーバ１１５に保存可能とする。さらに、サーバ１１５は、後にセッション状態を識別するために、認証クッキーをクライエント１１０に割り当てることが可能である。また、認証クッキーのみをクライエント１１０とサーバ１１５間で送信し、一方でセッション状態はサーバ１１５に保存される。
【０００８】
ＨＴＴＰセッションの実施は、クッキーを使用しても柔軟性とローバスト性に欠けることが多い。例えば、クッキーは従来、特定のクライエント１１０に限定されている。また、従来のＨＴＴＰセッションは、もともとは短期の単純なサービスを提供するウェブアプリケーション１３０に適する。サーバ１１５がＨＴＴＰセッションを採用するアプリケーション１３０に関しては、ユーザは割り込みなしで一定の短期間にタスクを終了しなければならないこともある。ユーザがタスク中に長い間待機状態にした場合、サーバ１１５はセッションを終了し、再びユーザのデータを失うことになり得る。
【０００９】
例えば、ユーザがオンラインで（例えば、インターネット１２５で）商品を購入したいとき、ユーザはクライエント１１０を使って、当該商品を販売するウェブページ上にログインする。ユーザは、典型的に商品を選択する画面や個人情報（例えば、郵送先住所）を入力する画面など多数の画面を行き来する。その後ある時点で、ユーザはクレジットカード番号などの支払い情報を入力しなければならない画面に到達する。ユーザが自分のクレジットカード情報を提供する前に長い間待機しすぎると、サーバ１１５はしばしば通信セッションを終了して、ユーザにサーバ１１５との別の通信セッションを確立させる。この第２の通信セッション中は、クライエント１１０とサーバ１１５との間のタイムアウトゆえに、ユーザは典型的には後の通信セッションにおいても再びユーザの全データを再入力しなければならない。
【００１０】
加えて、以前にクライエント１１０でウェブページにアクセスしたユーザは、クライエント１１０上に保存されたクッキーの恩恵を得るために、その後そのクライエント１１０に「拘束」される。従って、クライエント１１０とサーバ１１５との間の通信セッションの柔軟性およびローバスト性を高める必要がある。
【発明の開示】
【課題を解決するための手段】
【００１１】
本発明は、ユーザがウェブサーバとの通信セッションを切断して、その後、任意の装置を介して任意の場所から任意の時間に同一セッションに再接続することを可能とするための方法およびシステムに関する。従って、所定期間内にタスクを終了しない場合はデータを失う可能性などの通信セッションに関連した上記の制限が緩和される。また、本発明は、典型的にはサーバとクライエントとの間の従来の通信セッションに関連した時間制限およびクライエント制限を解除するので、通信セッションにより高い柔軟性およびローバスト性を提供する。
【００１２】
１つの態様では、本発明はクライエント−サーバネットワークで通信するためのサーバに関する。サーバは、第１のクライエントからサーバとの通信セッションを確立する要求を受信する受信器を含む。サーバはまた、第１の要求に応答してユーザセッションを確立するユーザセッション機構を有する。サーバはさらに、第１の要求に応答して第１のクライエントセッションを確立するクライエントセッション機構を含む。第１のクライエントセッションが終了すると、サーバは、例えばデータベースであり得るメモリ素子にユーザセッションデータを保存する。受信器はまた、第２のクライエントからサーバとの通信セッションを確立する第２の要求を受信する。この第２の要求を受信すると、ユーザセッション機構はユーザセッションを再起動する。１つの実施形態において、ユーザセッション機構は確立されたユーザセッションに状態を割り当てる。この状態は、アクティブ状態、一時停止状態、または完了状態であり得る。
【００１３】
別の態様では、本発明はクライエント−サーバネットワークで通信するための方法に関する。方法は、サーバとの通信を確立する要求をサーバにより受信する工程を含む。ユーザにより操作される第１のクライエントは、その要求をサーバに送信する。受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションが確立される。同様に、第１のクライエントとサーバとの間のクライエントセッションも受信された要求に応答して確立される。方法はまた、クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程を含む。方法はまた、ユーザにより操作される第２のクライエントから、サーバとの通信を確立する要求をサーバにより受信し、ユーザセッションを再起動する工程を含む。
【００１４】
１つの実施形態では、要求はユーザ認証資格などでユーザを識別する。方法はまた、第１のクライエントから終了メッセージを受信し、ユーザセッションデータを保存する前に第１のクライエントとサーバとの間のクライエントセッションを終了することを含み得る。別の実施形態では、サーバは第１のクライエントおよびサーバとの間のクライエントセッションを終了して、一定期間待機した後、ユーザセッションデータを保存する。いくつかの実施形態では、方法はまた、アクティブ、一時停止または完了状態などの状態を、確立されたユーザセッションに割り当てることを含む。
【００１５】
サーバとの通信を確立する別の要求を受信した後に、ユーザに関連付けられ、確立されたユーザセッションの存在を判定するために、保存されたユーザセッションデータを使用し得る。１つの実施形態では、確立されたユーザセッションの存在が判定されると、ユーザセッションが再起動される。
【発明を実施するための最良の形態】
【００１６】
（発明の詳細な説明）
図２を参照すると、ＨＴＴＰまたはクライエント、セッションの制限の多くを排除しつつ、クライエント−サーバネットワーク１２５での通信を可能にするコンピュータシステム２００の実施形態が示される。詳細には、システム２００は、サーバ１１５が通信セッション中の状態を維持することを可能し、後の通信セッションにおいて第１のクライエント通信セッション中に保存されたデータにユーザがアクセスすることを可能とする。従って、１つの実施形態において、セッションデータのアクセスは、第１のクライエント通信セッションが終了した後に発生する。
【００１７】
コンピュータシステム２００は、第１のクライエント１１０’と第２のクライエント１１０”（概ね、以下クライエント１１０と呼ぶ）とサーバ１１５とを含む。１つの実施形態では、各クライエント１１０’、１１０”はそれぞれのウェブブラウザ１３５’、１３５”（概ね、以下ウェブブラウザ１３５と呼ぶ）を有する。コンピュータシステム２００は２つのクライエント１１０’、１１０”を備えて示されているが、任意の数のクライエントを有し得る（例えば、１つ、３つまたは５０）。
【００１８】
クライエント１１０は、任意のパーソナルコンピュータ（例えば、ｘ８６系から、Ｐｅｎｔｉｕｍ（登録商標）系、６８０ｘ０系、ＰｏｗｅｒＰＣ、ＰＡ−ＲＩＳＣ、ＭＩＰＳ系のマイクロプロセッサに基づく）、スマートまたはダンプ端末、ネットワークコンピュータ、無線装置、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータまたはその他のコンピュータデバイスであり得る。クライエント１１０によりサポートされるオペレーティングシステムは、Ｗａｓｈｉｎｇｔｏｎ、ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  ＣｏｒｐｏｒａｔｉｏｎによるオペレーティングシステムのＷＩＮＤＯＷＳ（登録商標）系、ＭａｃＯＳ  Ｊａｖａ（登録商標）ＯＳおよび種々のＵｎｉｘ（登録商標）系統（例えば、Ｓｏｌａｒｉｓ、ＳｕｎＯＳ、Ｌｉｎｕｘ、ＨＰ−ＵＸ、Ａ／ＩＸおよびＢＳＤ系配布）の任意のメンバーを含み得る。
【００１９】
１つの実施形態では、ウェブブラウザ１３５は、サーバ１１５への通信に対してはセキュアソケットレイヤー（ＳＳＬ）サポートを使用する。ＳＳＬは、Ｃａｌｉｆｏｒｎｉａ、Ｍｏｕｎｔａｉｎ  ＶｉｅｗのＮｅｔｓｃａｐｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｃｏｒｐｏｒａｔｉｏｎにより開発された保護プロトコルであり、現在、インターネットエンジニアリングタスクフォース（ＩＥＴＦ）により公布された基準である。ウェブブラウザ１３５は、代替的に、ＣＡ、Ｌｏｓ  ＡｌｔｏｓのＴｅｒｉｓａ  Ｓｙｓｔｅｍｓにより開発されたセキュアハイパーテキスト転送プロトコル（ＳＨＴＴＰ）、ＳＳＬ上のＨＴＴＰ（ＨＴＴＰＳ）、Ｗａｓｈｉｎｇｔｏｎ、ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより開発されたプライベートコミュニケーションテクノロジー（ＰＣＴ）およびＩＥＴＦにより公布されたトランスポートレベルセキュリティ（ＴＬＳ）基準などの（但しこれらに限定されない）、他の保護プロトコルを使用するサーバ１１５に接続し得る。
【００２０】
ウェブブラウザ１３５に関して上述した、また下述するにもかかわらず、クライエント１１０は代替的に、ウェブブラウザ１３５なしでサーバ１１５からコンテンツを取得し得る。例えば、クライエント１１０はウェブにアクセスせず、代わりに通信装置またはモジュールを使用してサーバ１１５と直接通信して、サーバ１１５からコンテンツを取得し得る。また、サーバ１１５とクライエント１１０との間の通信に使用されるプロトコルはＨＴＴＰとして上述および下述されているが、任意のプロトコルが使用され得る。
【００２１】
上述のように、１つの実施形態において、各クライエント１１０はネットワーク１２５でサーバ１１５からコンテンツをダウンロードし得る。ネットワーク１２５は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、またはインターネットもしくはワールドワイドウェブ（すなわち、ウェブ）などのネットワークのうちの１つのネットワークであり得る。別の実施形態では、第１のクライエント１１０’および第２のクライエント１１０”は異なるネットワークでサーバ１１５と通信する。詳細には、各クライエント１１０’、１１０”は、ネットワーク１２５を通過するそれぞれのクライエント−サーバ通信経路１２０’、１２０”（概ね、以下クライエント−サーバ通信経路１２０と呼ばれる）でサーバ１１５と通信し得る。
【００２２】
通信経路１２０’、１２０”の実施形態の例は、標準電話回線、ＬＡＮまたはＷＡＮリンク（例えば、Ｔ１、Ｔ３，５６ｋｂ、Ｘ．２５）、ブロードバンド接続（ＩＳＤＮ，フレームリレー、ＡＴＭ）および無線接続を含む。通信経路１２０’、１２０”での接続は種々の通信プロトコル（例えば、ＨＴＴＰ、ＨＴＴＰＳ、ＴＣＰ／ＩＰ、ＩＰＸ、ＳＰＸ、ＮｅｔＢＩＯＳ、イーサネット（登録商標），ＲＳ２３２、メッセージングアプリケーションプログラミングインターフェース（ＭＡＰＩ）プロトコル、リアルタイムストリーミングプロトコル（ＲＴＳＰ）、ユーザデータグラムプロトコルスキームに使用されるリアルタイムストリーミングプロトコル（ＲＴＳＰＵ）、ＷＡ、ＳｅａｔｔｌｅのＲｅａｌＮｅｔｗｏｒｋｓ，Ｉｎｃ．により開発されたプログレッシブネットワークスメディア（ＰＮＭ）プロトコル、製造メッセージ仕様（ＭＭＳ）プロトコルおよび直接非同期接続）を使用して確立し得る。
【００２３】
１つの実施形態では、サーバ１１５はクライエント１１０にコンテンツ（例えば、ウェブページ）を配信する。サーバ１１５は、クライエント１１０に関して上述したものなど、クライエント１１０と通信することが可能な任意のパーソナルコンピュータであり得る。またサーバ１１５は、任意のオペレーティングシステムをサポートし得、その例もクライエント１１０に関して上記に示されている。
【００２４】
１つの実施形態では、サーバ１１５はクライエント１１０による使用に有効なアプリケーション１３０を動作させる。かかるアプリケーションの例は、共にＷａｓｈｉｎｇｔｏｎ、ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎにより製造されたＭＩＣＲＯＳＯＦＴ  ＷＯＲＤなどのワードプロセッシングプログラム、ＭＩＣＲＯＳＯＦＴ  ＥＸＣＥＬなどの表計算プログラム、財務報告プログラム、顧客登録プログラム、技術サポート情報を提供するプログラム、顧客データベースアプリケーション、またはアプリケーション設定マネージャを含む。
【００２５】
サーバ１１５はまた、ユーザセッション機構２０５を含む。ユーザセッション機構２０５は、サーバ１１５とユーザとの間の１つ以上のユーザセッションを確立して管理する。１つの実施形態では、ユーザセッションは、同一の識別されたユーザから発せられた一連のＨＴＴＰ要求を含む。いくつかの実施形態では、要求はアプリケーション１３０に対して行われる。ユーザセッションを確立する要求は、同一ウェブブラウザ１３５（故に、クライエント１１０）からというよりはむしろ同一ユーザから発するので、ユーザセッション機構２０５は異なるウェブブラウザおよび／または異なるクライエントからの同一ユーザとの単一ユーザセッションを維持し得る。また、ユーザセッション機構２０５は、同一または複数のクライエント１１０でサーバ１１５とユーザとの間の複数ユーザセッションを確立して維持し得る。
【００２６】
１つの実施形態では、ユーザセッション機構２５０は、サーバ１１５内で実行するソフトウェアモジュールである。ユーザセッション機構２０５はまた、サーバ１１５に「差し込み」、サーバ１１５にユーザセッション機能を付加する外部ソフトウェアモジュールであり得る。時間に拘束されるＨＴＴＰセッションとは異なり、特定ユーザとユーザセッション機構２０５との間のユーザセッションはいかなる期間にも依存しない。さらなる実施形態では、ユーザセッション機構２０５’はアプリケーション１３０のサブルーチンまたはプロセスなどのアプリケーション１３０の一部として実行する。
【００２７】
サーバ１１５はまた、単一エンティティとして管理される１つ以上のサーバの論理グループであるサーバファーム２１０またはサーバネットワークのメンバーであり得る。１つの実施形態では、サーバファーム２１０は３つのウェブサーバ１１５、１１５’、１１５”（概ね１１５）を含む。図２で示す実施形態は３つのウェブサーバ１１５を有するが、サーバファーム２１０は任意の数のサーバを有し得る。他の実施形態では、サーバファーム２１０は、企業のイントラネット、バーチャルプライベートネットワーク（ＶＰＮ）またはセキュアエクストラネットなど、認定されていない個人がアクセス不可能な保護ネットワークである。加えて、サーバファーム２１０を構成するサーバは、説明したプロトコルのいずれかを使用する上述のネットワーク（例えば、ＷＡＮ、ＬＡＮ）のいずれかで通信し得る。
【００２８】
サーバ１１５についてより詳細には、また図３を参照すると、１つの実施形態において、サーバ１１５は受信器３０５、クライエントセッション機構３１０、メモリ素子３１５、ユーザセッション機構２０５およびアプリケーション１３０を含む。これらの構成要素は、確立されたクライエントセッションを終了した後でもサーバ１１５がユーザセッションを作成して維持することを可能とする。
【００２９】
詳細には、１つの実施形態では、受信器３０５はクライエント１１０からのサーバ１１５との通信セッションを確立するために、１つ以上の要求３２０を受信するソフトウェアモジュールである。従って、１つの実施形態では、要求３２０は受信器３０５に対して行われる。要求３２０は、例えば、ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤなどのアプリケーション１３０へのログインおよび使用の要求であり得る。１つの実施形態では、受信器３０５はアプリケーション１３０内で実行する。他の実施形態では、受信器３０５は、サーバ１１５上で独立して実行するソフトウェアモジュールまたはサーバ１１５の別のモジュールの一部（例えば、ユーザセッション機構２０５）であり得る。
【００３０】
サーバ１１５はまた、受信器３０５と通信するクライエントセッション機構３１０を含む。クライエントセッション機構３１０は、サーバ１１５とクライエント１１０との間のＨＴＴＰ通信セッションを確立して管理するソフトウェアモジュールである。この管理の一部として、クライエントセッション機構３１０はクライエント１１０とサーバ１１５との間の各通信セッションに関連付けられたセッションデータを保存して維持する。１つの実施形態では、クライエントセッション機構３１０はメモリ素子３１５にセッションデータを保存する。
【００３１】
メモリ素子３１５は、ダイナミックＲＡＭ（ＤＲＡＭ）、スタティックＲＡＭ、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート同期ダイナミックＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）またはプログラマブル読み出し専用メモリ（ＰＲＯＭ）などの任意の標準メモリ装置であり得る。メモリ素子３１５はサーバ１１５の内部または外部に位置付けされ得る。メモリ素子３１５のさらなる例は、持続的データベース（例えば、持続的ユーザセッションデータベース）、磁気ディスク、光磁気ディスクを含む。いくつかの実施形態では、アプリケーション１３０もメモリ素子３１５にアクセスして、そこに情報を保存する。
【００３２】
以下において詳述するように、１つの実施形態では、クライエントセッション機構３１０は１つ以上のクライエントセッションに関連付けられたセッションデータを保存するためのクライエントセッションオブジェクト３２５を作成し得る。また、ユーザセッション機構２０５もまた、１つ以上のユーザセッションに関連付けられたセッションデータを保存するための、ユーザセッションオブジェクト３３０を作成し得る。
【００３３】
クライエントセッションを確立した後のある時点で、サーバ１１５は通信セッションを終了するであろう。１つの実施形態では、通信セッションの終了は、特定終了メッセージに応答する。いくつかの実施形態では、終了メッセージは、ユーザがウェブブラウザ１３５を閉じるときなどに、クライエント１１０から、またはクライエント１１０上でユーザにより行われた動作に応答して送られたメッセージであり得る。代替的に、終了メッセージはサーバ１１５が所定期間にクライエント通信セッションに関してクライエント１１０からいかなる情報も受信しないと、終了メッセージを受信し得る。言い換えると、クライエント１１０のユーザが長い間待機しすぎた場合、サーバ１１５はクライエントセッションを終了し得る。
【００３４】
一旦クライエントセッションを終了すると、通信セッションが完了したので、サーバ１１５は典型的にはセッションデータを廃棄する。しかしながら、ユーザがその後の時点で同一または異なるクライエント１１０から自分の通信セッションに戻ることを可能とするために、ユーザセッション機構２０５はクライエントセッションの終了後、セッションデータを維持する。
【００３５】
また、ソフトウェアモジュール１３０、２０５、３０５、３１０、３１５、３２５、３３０の任意の組み合わせを単一モジュールに一体化し得る。例えば、ユーザセッション機構２０５とクライエントセッション機構３１０は単一のセッション機構モジュール３３５に組み込まれ得る。さらに、ソフトウェアモジュール１３０、２０５、３０５、３１０、３１５、３２５、３３０、３３５のいずれかまたはすべては、サーバ１１５の内部または外部に位置付けられ得る。
【００３６】
サーバ１１５により行われるステップの概略として、また図４を参照すると、受信器３０５は、アプリケーション１３０にアクセスするなど、サーバ１１５との通信セッションを確立する要求３２０を第１のクライエント１１０’から受信する（ステップ４０５）。１つの実施形態では、一旦受信器３０５が要求３２０を受信すると、ユーザセッション機構２０５はその後、第１のクライエント１１０’を操作するユーザとサーバ１１５との間のユーザセッションを確立する（ステップ４１０）。
【００３７】
次に、サーバ１１５は第１のクライエント１１０’とサーバ１１５との間のクライエントセッションを確立する（ステップ４１５）。上述のように、クライエントセッション機構３１０はクライエントセッションに関連付けられた、およびクライエントセッション中のセッションデータを保存する。クライエントセッション機構３１０は、サーバ１１５がステップ４２０でクライエントセッションを終了することを判定するまで（例えば、タイムアウトまたは終了メッセージの受信に応答して）、クライエントセッション中のセッションデータを保存し続ける。かかる判定で、サーバ１１５はクライエントセッションを終了し（ステップ４２５）、ユーザセッション機構２０５はユーザセッションデータの保存の任務を引き継ぐ。
【００３８】
サーバ１１５は、その後第２のクライエント１１０”から、ユーザの通信セッションを継続する要求を受信する（ステップ４３０）。ユーザセッション機構２０５はその後、ユーザセッションを再起動する（ステップ４３５）。以前のクライエントセッションの終了にも関わらず、ユーザセッションの再起動により、異なるマシーン（たとえば第２のクライエント１１０”）上でかつ異なる時間にユーザの作業を継続することが可能となる。
【００３９】
ユーザセッションの確立に関してより詳細には、図５を参照すると、サーバ１１５が第１のクライエント１１０’からユーザセッションを確立する要求を受信すると（ステップ４０５に上述するように）、サーバ１１５はユーザセッションを確立する前にステップ５１０〜５２０においてユーザを認証する。認証プロセスは、サーバ１１５がユーザのログイン名およびパスワードなどのユーザの資格を要求する（ステップ５１０）ことを含む。１つの実施形態では、ユーザは第１のクライエント１１０’のウェブブラウザ１３５’のディスプレイ上にユーザの資格を入力して、ウェブブラウザ１３５’はこの情報をサーバ１１５に送信する。他の実施形態では、ウェブブラウザ１３５’は、ユーザ認証のために自動的にこの情報をサーバ１１５に送信する。さらに別の実施形態では、サーバ１１５は音声認識またはバイオメトリック情報（例えば、顔認識またはアイスキャン）を介してユーザを検証する。
【００４０】
サーバ１１５はユーザ資格を受信するのを待ち（ステップ５１５）、その後サーバ１１５が受信したユーザ資格を認識するかどうか判定する（ステップ５２０）。１つの実施形態では、サーバ１１５は、サーバ１１５がメモリ素子３１５に保存したユーザの資格のリストで受信したユーザの資格をチェックする。サーバ１１５がステップ５２０でユーザを認識しない場合（例えば、サーバ１１５が受信したユーザの資格を認識しない）、サーバ１１５はユーザ資格に対するその要求を繰り返す。１つの実施形態では、サーバ１１５は第１のクライエント１１０’とのその通信を終了する前に定められた回数しかユーザの資格を要求しない。サーバ１１５はまた、ステップ５１５においてサーバ１１５が所定量の時間、いかなるユーザ資格も受信しない場合、第１のクライエント１１０’とのその通信を終了し得る。
【００４１】
サーバ１１５が、ステップ５２０でユーザ資格を認識してユーザを識別したら、サーバ１１５は第１のクライエント１１０’とのクライエントセッションを確立するための認証クッキーを作成する（ステップ５２５）。１つの実施形態では、サーバ１１５は例えば、１つ以上のＨＴＴＰヘッダの一部として、第１のクライエント１１０’に認証クッキーを輸送する。さらにいくつかの実施形態では、サーバ１１５はまたユーザを識別する際に将来使用するために、認証クッキーで送信されたデータのコピーを保持する。１つの実施形態では、サーバ１１５はその後、認証クッキーと関連付けられたクライエントセッションオブジェクト３２５を作成する（ステップ５３０）。従って、第１のクライエント１１０’とサーバ１１５との間のクライエント通信セッション中は、サーバ１１５はクライエントセッションオブジェクト３２５に、クライエントセッションと関連付けられたセッションデータを保存する。
【００４２】
ステップ５３５では、サーバ１１５はまた、ステップ５１０〜５２０ですでに認証されたユーザに関連付けられたユーザセッションオブジェクト３３０を作成する。サーバ１１５はその後、ユーザセッションが同一ユーザのクライエントセッションに関連するように、クライエントセッションをユーザセッションと関連付ける（ステップ５４０）。１つの実施形態では、サーバ１１５はクライエントセッションオブジェクト３２５をユーザセッションオブジェクト３３０とリンクさせることにより、クライエントセッションをユーザセッションと関連付ける。別の実施形態では、サーバ１１５はクライエントセッションの識別子とユーザセッションの識別子との間のマッピングを維持することにより、クライエントセッションをユーザセッションと関連付ける。１つの実施形態において、サーバ１１５がクライエントセッションオブジェクト３２５に保存するデータが、クライエントセッションの終了後でもユーザセッションオブジェクト３３０に対してアクセス可能であるように、サーバ１１５はオブジェクト３２５、３３０を関連付ける。
【００４３】
１つの実施形態では、ユーザセッション機構２０５がユーザセッションを作成した後に通信セッションを確立する次の要求３２０を受信すると、サーバ１１５は将来のユーザ識別のためにサーバ１１５が保存したクッキーに関連付けられたデータと、要求ヘッダからの認証クッキーを比較する。受信されたクッキーからの情報が保存データと一致したら、サーバ１１５は現在の要求３２０をクライエントセッションと関連づける。１つの実施形態では、この関連付けは、ユーザによりすでに作成され使用されているのと同一のユーザセッション内でクライエントセッションを作成することを含む。
【００４４】
サーバ１１５が第１のクライエント１１０’とのクライエントセッションを終了する際に行うステップについてより詳細には、図６を参照すると、サーバ１１５は終了メッセージの受信を判定して、ＨＴＴＰヘッダから認証クッキーを除去する（ステップ６０５）。サーバ１１５はその後、第１のクライエント１１０’とのクライエントセッションの終了にも関わらず、後で同一セッションデータにユーザがアクセスできるように、クライエントセッションオブジェクト３２５にすでに保存されたクライエントセッションデータをユーザセッションオブジェクト３３０に転送する（ステップ６１０）。ステップ６１５では、サーバ１１５はユーザセッションとクライエントセッションとの間の関連付けを除去する。１つの実施形態では、サーバ１１５はクライエントセッションオブジェクト３２５を消去する。
【００４５】
図７を参照すると、図４で簡単に上述したように（ステップ４３０および４３５）、サーバ１１５は第１のクライエント１１０’とのクライエントセッションを終了することを判定した後、ユーザは、同一ユーザセッションを再起動する、第２のクライエント１１０”からの要求を送信する（ステップ７０５）。これは例えば、ユーザオフィスコンピュータからサーバ１１５に接続したことのあるユーザが、現在ビジネスで旅行していた場合に発生し得る。ユーザはユーザのオフィスコンピュータ上ですでに確立された通信セッションを継続したいかもしれないが、ユーザは旅行中にラップトップ（例えば、第２のクライエント１１０”）にアクセスするしかないようだ。この状況では、ユーザは例えば、自分のラップトップコンピュータを使用して、以前のユーザセッションを再起動させたいというユーザの希望を表す要求をサーバ１１５に送信し得る。
【００４６】
ステップ７１０において、サーバ１１５は、以前の通信セッションにおいて作成されたセッションデータへのアクセスを可能にする前にユーザを認証する。この認証プロセスは図５のステップ５１０〜５２０に関して上記でより詳細に説明されている。ユーザを一旦認証すると、その後サーバ１１５は、図５のステップ５２５でも上述された認証クッキーを作成する（ステップ７１５）。サーバ１１５はまたクライエントセッションオブジェクト３２５を作成し、サーバ１１５と第２のクライエント１１０”との間の新規クライエントセッションを確立する（ステップ７２０）。
【００４７】
１つの実施形態では、サーバ１１５は、その後ユーザの資格（例えば、ユーザの名前、ユーザのパスワードまたは任意の他のユーザ識別子）に関連付けられたユーザセッションオブジェクト３３０に関してメモリ素子３１５を検索する。関連付けられたユーザセッションデータとユーザセッションの位置決めがなされると（ステップ７２５）、サーバ１１５はその後クライエントセッションをユーザセッションと関連付ける（ステップ７３０）。サーバ１１５はその後、クライエントセッション機構３１０がセッションデータを管理し、更新することを可能とするために、図６のステップ６１０でユーザセッションオブジェクト３３０にすでに送信されたセッションデータを取り出して、クライエントセッションオブジェクト３２５に転送する（ステップ７３５）。
【００４８】
ユーザセッションについてより詳細には、図８を参照すると、１つの実施形態ではユーザセッション機構２０５は、ユーザ通信セッション中の状態を維持するためにユーザセッションに状態を割り当てる。ユーザセッションへの状態の割り当てにより、ユーザセッションの再起動が可能となる。詳細には、ユーザセッション機構は、ユーザセッションに対してアクティブ状態８０５、一時停止状態８１０、または完了状態８１５を割り当て得る。
【００４９】
１つの実施形態において、ユーザセッションはアクティブ状態８０５で開始する。クライエントセッションがクライエント１１０とサーバ１１５の間で確立している限り、ユーザセッションはアクティブ状態８０５にある。従って、１つの実施形態では、ユーザセッション機構２０５は開始イベント８２０に応答してユーザセッションにアクティブ状態８０５を割り当てる。開始イベント８２０の例は、ステップ４０５（図４）で上述されるように、サーバ１１５とのユーザ通信を確立する、クライエント１１０からの要求を受信することを含む。ユーザセッション機構２０５は、切断イベント８２５（例えば、終了メッセージ）が発生するまで、ユーザセッションをアクティブ状態８０５に維持する。サーバ１１５は切断イベント８２５を経験すると、ユーザセッション機構２０５はユーザセッションの状態をアクティブ状態８０５から一時停止状態８１０に再割り当てする。その後、サーバ１１５が継続イベント８３０（例えば、別のクライエント上の同一ユーザからの、以前のユーザセッションを継続する要求）を受信すると、ユーザセッション機構２０５は、ユーザセッション状態を一時停止状態８１０からアクティブ状態８０５に戻して再割り当てする。従って、ユーザセッション機構２０５は、ユーザセッション状態をアクティブ状態８０５から一時停止状態８１０（およびその反対）に、ユーザのしたい回数だけ割り当ておよび再割り当てし得る。具体的には、ユーザセッション機構２０５は、サーバが継続イベント８３０および／または切断イベント８２５を受信した回数だけ、ユーザセッションの状態をアクティブから一時停止へおよびその反対に変更し得る。
【００５０】
さらに上述のように、サーバ１１５は終了イベント８３５を受信すると（例えば、ユーザセッション終了メッセージを介して）、ユーザセッションを終了する。終了イベント８３５を受信すると、ユーザセッション機構２０５はユーザセッションの状態をアクティブ状態８０５から完了状態８１５に変換する。１つの実施形態では、ユーザセッション状態はクリーナップイベント８４０に応答して、一時停止状態８１０から完了状態８１５に移行し得る。１つの実施形態では、クリーナップイベント８４０は管理者（例えば、サーバ１１５またはユーザセッション機構２０５などの）により行われるコマンドまたは動作である。別実施形態では、一時停止セッションを定期的にチェックして、なんらかの一時停止セッションが所定の期間（例えば１ヶ月）を超えて一時停止状態８１０のままでいるかどうか判定する管理プログラムのおかげで、ユーザセッション状態が一時停止状態８１０から完了状態８１５に移行し得る。かかる一時停止セッションが存在する場合、ユーザセッションは今後ユーザにより再起動されそうにない。そのため、管理プログラムはこれらのセッション状態を完了状態８１５に移行し得る。
【００５１】
図９および図１０において、ユーザセッションの状態変化の時系列９００の実施形態とユーザセッション状態に関するサーバ１１５により行われるステップが示される。サーバ１１５（すなわち、受信器３０５）は第１の開始イベント８２０’（例えば、サーバ１１５との通信を確立する要求）を第１のクライエント１１０’から受信する（ステップ１００５）。第１の開始イベント８２０’を受信すると、ユーザセッション機構２０５は、ユーザにすでに関連付けられた任意のユーザセッション（すなわち一時停止状態８１０のユーザセッション）に関してメモリ素子３１５（例えば持続的ユーザセッションデータべース）をチェックする（ステップ１０１０）。１つの実施形態では、上述のようにこれはユーザを認証した後で発生する。ステップ１０１０で、ユーザセッション機構２０５が識別されたユーザに関してユーザセッションが存在しないと判定すると、ユーザセッション機構２０５は、図５に関して上述したように、そのユーザのために新規ユーザセッション（ステップ１０２０）を作成する。従って、上述のように、ユーザセッション機構２０５が第１のユーザセッションを作成すると、ユーザクライエントセッション機構３１０もまた、第１のクライエントセッション９０５を作成する。また、クライエントセッション機構３１０は最初のクライエントセッションオブジェクト３２５’を作成し、デフォルトユーザセッション状態をこのオブジェクト３２５’に割り当てる。
【００５２】
第１のクライエントセッション９０５が進むにつれて、クライエントセッション機構３１０は、第１のクライエントセッション９０５に関連付けられたセッションデータを最初のクライエントセッションオブジェクト３２５’に保存し、これにより第１のメモリユーザセッション状態を有する最初の第１の状態クライエントセッションオブジェクト３２５”にオブジェクト３２５’が状態移行する。後に、サーバ１１５は切断イベント８２５を受信して第１のクライエントセッション９０５を終了する。この時点で、ユーザセッション機構２０５がユーザセッションを一時停止状態８１０に移行させると、ユーザセッション機構２０５はまたセッションデータを最初の第１の状態クライエントセッションオブジェクト３２５”から持続的ユーザセッションオブジェクト３３０’（矢印９１０で示される）に転送する。従って、ユーザセッション機構２０５は第１の持続的ユーザセッション状態を持続的ユーザセッションオブジェクト３３０’に割り当てる。
【００５３】
しかしながら、ステップ１０１０において、切断イベント８２５の後に継続イベント８３０（例えば、第２のクライエント１１０”からの要求）を受信する場合などに、識別されたユーザに関して一時停止ユーザセッション８１０が存在するとユーザセッション機構２０５が判定すると、サーバ１１５は最新の通信要求を行ったクライエント１１０（例えば、第２のクライエント１１０”）上に、ユーザに有効な一時停止された各ユーザセッション８１０についての情報を表示する（ステップ１０２５）。１つの実施形態では、ユーザセッション機構２０５はその後、ステップ１０３０でユーザからの入力の受信などを介して、ユーザが一時停止ユーザセッション８１０に再接続したいかどうかを判定する。ユーザが一時停止ユーザセッションに再接続することを選択しないとサーバ１１５が判定すると、サーバ１１５はステップ１０２０で新規ユーザセッションを作成する。
【００５４】
ユーザが一時停止ユーザセッション８１０を継続することを選択すると、ユーザセッション機構２０５は、識別されたユーザに関して２つ以上の一時停止ユーザセッション８１０が存在している場合、ユーザがユーザセッションの表示から一時停止ユーザセッション８１０を選択するのを待つ。１つの実施形態において、サーバ１１５は、継続イベント８３０を、クライエント１１０（例えば、第２のクライエント１１０”）上の一時停止ユーザセッション８１０のサーバ表示から一時停止ユーザセッション８１０が選択されることと見なす。
【００５５】
代替的に、継続イベント８３０は、サーバ１１５との通信セッションを確立する、第２のクライエント１１０”から受信された直接要求であり得る。本実施形態では、サーバ１１５はユーザに対して何の選択も提供しない。その代わり、サーバ１１５は一番最近の一時停止ユーザセッション８１０、最も初期の一時停止ユーザセッション８１０、または所定の一時停止ユーザセッション８１０に接続し得る。いくつかの実施形態では、要求はどのユーザセッション８１０をユーザが再起動したいかを示す。
【００５６】
一旦ユーザセッション機構２０５が継続イベント８３０を受信するとユーザセッション機構２０５が判定すると、ユーザセッション機構２０５は一時停止ユーザセッション８１０をアクティブユーザセッション８０５に移行し、クライエントセッション機構３１０は第２のクライエントセッション９１５を作成する。また、１つの実施形態では、ユーザセッション機構２０５は、セッションデータを持続的ユーザセッションオブジェクト３３０’から２番目の第１の状態クライエントセッションオブジェクト３２５’’’に復元する（矢印９２０で示す）（ステップ１０３５）。このクライエントセッションオブジェクト３２５’’’は、最初の第１の状態クライエントセッションオブジェクト３２５”が第１のクライエントセッション９０５の終了前に有していたものと同一のセッションデータを有する。一旦ユーザセッション機構２０５がセッションデータを復元すると、以前の一時停止ユーザセッションは継続する（ステップ１０４０）。
【００５７】
第２のクライエントセッション９１５が進むにつれて、クライエントセッション機構３１０は新規セッションデータを２番目の第１の状態クライエントセッションオブジェクト３２５’’’に保存し、それによりクライエントセッションオブジェクト３２５’’’を、第２のメモリユーザセッション状態を有する第２の状態クライエントセッションオブジェクト３２５’’’’に変換する。ユーザがユーザセッションの終了を要求すると、サーバ１１５は終了イベント８３５を受信する。終了イベント８３５を受信すると、ユーザセッション機構２０５はその後、第１のユーザセッション状態を有する持続的ユーザセッションオブジェクト３３０’を空にし、それにより空の持続的ユーザセッションオブジェクト３３０”を生成する。サーバ１１５はその後、第２の開始イベント８２０’を受信したら、第３のクライエントセッション９２５の作成に関してなど、そのプロセスを繰り返す。
【００５８】
ユーザセッション機構２０５のより詳細な実施形態では、ユーザセッション機構２０５は任意のコンピュータ言語またはフレームワークで書き込みされ得る。例えば、ユーザセッション機構２０５はアプリケーションサービスプロバイダ（ＡＳＰ．ＮＥＴ）ＨＴＴＰモジュールまたはＨＴＴＰ操作子であり得る。１つの実施形態では、ユーザセッション機構２０５はＨＴＴＰイベント操作子に添付するＨＴＴＰイベントモジュールである。ＡＳＰ．ＮＥＴフレームワークを使用して、ユーザセッション機構２０５は、ＨＴＴＰランタイムのパイプラインに付加され、上記のユーザセッション機能を提供するＨＴＴＰモジュールであり得る。
【００５９】
１つの実施形態では、ユーザセッション機構２０５はユーザセッションサービスを提供する要求を前処理／後処理し得る。詳細には、１つの実施形態において、ＨＴＴＰモジュールはユーザセッションを開始または継続する必要性があるかどうかを判定することにより、要求３２０を前処理する。ＨＴＴＰモジュールは要求３２０を後処理して、ユーザがユーザセッションを切断または終了するように依頼したかどうかを判定し得る。
【００６０】
サーバ１１５がメモリ素子３１５に保存するユーザセッションデータおよびクライエントセッションデータの実施形態を図１１に示す。クライエントセッションオブジェクト３２５は、例えばアプリケーションモジュール１１１５においてＡｐｐＩＤフィールド１１０５およびＡｐｐＮａｍｅフィールド１１１０を含む。セッションモジュール１１２０において、クライエントセッションオブジェクト３２５は、例えばＳｅｓｓｉｏｎＩＤフィールド１１２２、Ｃｒｅａｔｅｄフィールド１１２５、Ｅｘｐｉｒｅｓフィールド１１３０、ＬｏｃｋＤａｔｅフィールド１１３５、ＬｏｃｋＣｏｏｋｉｅフィールド１１４０、Ｔｉｍｅｏｕｔフィールド１１４５、Ｌｏｃｋｅｄフィールド１１５０、Ｓｅｓｓｉｏｎ  ＩｔｅｍＳｈｏｒｔフィールド１１５５およびＳｅｓｓｉｏｎＩｔｅｍＬｏｎｇフィールド１１６０を保存する。１つの実施形態では、クライエントセッション機構３１０はこれらのフィールドにクライエントセッション用のセッションデータを保存する。いくつかの実施形態では、これらのフィールドはデータベース３１５に保存されるテーブルのフィールドである。
【００６１】
１つの実施形態において、クライエントセッション機構３１０はクライエント１１０とのクライエント通信セッションの識別子をＳｅｓｓｉｏｎＩＤフィールド１１２２に保存する。Ｃｒｅａｔｅｄフィールド１１２５は、クライエント通信セッションが作成されたときのタイムスタンプを保存し得る。同様に、Ｅｘｐｉｒｅｓフィールド１１３０はクライエントセッションの期限が切れる時間を含む。ＬｏｃｋＤａｔｅフィールド１１３５は、もしあれば、クライエントセッションがアクセスできないようにロックされた日付を保存する。１つの実施形態では、ＬｏｃｋＣｏｏｋｉｅフィールド１１４０は、特定のクッキーに関連付けられたデータをアクセス不可能にするように（例えば、クッキーが更新されているときなどの使用中）、そのクッキーをロックされているかどうかに関するブール値（すなわち真または偽）を保存する。別の実施形態では、ＬｏｃｋＣｏｏｋｉｅフィールド１１４０では、セッションデータがロックされている場合、メモリ素子３１５におけるそのクライエントセッションデータに関するロックタイプを含む。１つの実施形態では、リードロック、ライトロック、スピンロックの３つの可能なロックタイプが存在する。１つの実施形態では、リードロックは、プログラムがセッションデータを書き込むことを阻止しつつ、同時に多くのプログラムがセッションデータを読み出すことを可能とするように設定される。また、ライトロックは１つのプログラムがセッションデータを書き込んでいるときに、他のプログラムがセッションデータを読み出す、または書き込むことを阻止するように設定される。加えて、１つの実施形態では、スピンロックは１つのプログラムがセッションデータにアクセス（読み出しまたは書き込み）しているときに、そのセッションデータへのアクセスを阻止するように設定する。Ｔｉｍｅｏｕｔフィールド１１４５は、例えばサーバ１１５が入力を受信しないために、クライエントセッションを終了する時間値を保存する。１つの実施形態では、Ｌｏｃｋｅｄフィールド１１５０はデータがロックされている、従ってクライエントセッションがセッションデータを使用（例えば書き込む、および／または読み出す）している間、データへのアクセスが禁止されているかどうかを示すブーリアンである。ＳｅｓｓｉｏｎＩｔｅｍＳｈｏｒｔフィールド１１５５およびＳｅｓｓｉｏｎＩｔｅｍＬｏｎｇフィールド１１６０は、サーバ１１５がセッションデータを保存するフィールドであり得る。
【００６２】
ユーザセッション機構２０５は、クライエントセッション機構３１０に関連して、追加情報を保存する。詳細には、ユーザセッション機構２０５は、ＵｓｅｒＩＤフィールド１１６５、ＵｓｅｒＮａｍｅフィールド１１７０およびＡｕｔｈＴｙｐｅフィールド１１７５をユーザセッションオブジェクト３３０のセッションユーザモジュール１１８０に保存する。１つの実施形態では、ＵｓｅｒＩＤフィールド１１６５は、ユーザ固有の識別子を含む。ＵｓｅｒＮａｍｅフィールド１１７０はユーザを識別するのに使用される名前を含み得る。いくつかの実施形態では、ＡｕｔｈＴｙｐｅフィールド１１７５は、ウェブ形態、ウィンドウ、パスポート認証などを介して、ユーザの認証に使用される方法を含む。
【００６３】
ユーザセッションオブジェクト３３０はまた、アクティブセッションモジュール１１８５も含み得る。アクティブセッションモジュール１１８５は、ＳｅｓｓｉｏｎＩＤフィールド１１９０、Ｃｒｅａｔｅｄフィールド１１９５およびＵｓｅｒＩＤフィールド１２００を含む。１つの実施形態では、ＳｅｓｓｉｏｎＩＤフィールド１１９０はユーザセッションに固有の識別子を含む。Ｃｒｅａｔｅｄフィールド１１９５はユーザセッション機構２０５がユーザセッションを作成した時間を含む。１つの実施形態では、ＵｓｅｒＩＤフィールド１２００はアクティブユーザセッションに関わるユーザ固有の識別子を含む。
【００６４】
ユーザセッションオブジェクト３３０はまた、切断セッションモジュール１２０５を含み得る。切断セッションモジュール１２０５はＳｅｓｓｉｏｎＩＤフィールド１２１０、Ｃｒｅａｔｅｄフィールド１２１５、ＬｏｃｋＣｏｏｋｉｅフィールド１２２０、ＴｉｍｅＯｕｔフィールド１２２５、ＳｅｓｓｉｏｎＩｔｅｍＳｈｏｒｔフィールド１２３０、ＳｅｓｓｉｏｎＩｔｅｍＬｏｎｇフィールド１２３５、ＵｓｅｒＩＤフィールド１２４０およびＤｉｓｃｏｎｎｅｃｔＴｉｍｅフィールド１２４５を含み得る。１つの実施形態では、ＬｏｃｋＣｏｏｋｉｅフィールド１２２０は、セッションデータがロックされている場合、メモリ素子３１５におけるセッションデータのロックタイプ（例えば、リードロック、ライトロックまたはスピンロック）を含む。Ｔｉｍｅｏｕｔフィールド１２２５は、クライエント１１０により、いかなる動作も行われない（例えば、クライエント１１０から受信されたいかなる要求３２０もない）後、クライエントセッションを終了するための所定時間を含む。ＳｅｓｓｉｏｎＩｔｅｍＳｈｏｒｔフィールド１２３０は、データが所定バイト数（例えば７０００）より小さい場合のセッションデータを保存し得る。同様に、ＳｅｓｓｉｏｎＩｔｅｍＬｏｎｇフィールド１２３５は、データが所定バイト数（例えば７０００）より大きい場合のセッションデータを保存し得る。１つの実施形態では、ＤｉｓｃｏｎｎｅｃｔＴｉｍｅフィールド１２４５はユーザセッションが切断される時間を含む。
【００６５】
ユーザセッションを可能にすることで、エンドユーザに多くの利点がもたらされる。例えば、ユーザは第１の場所でタスクを開始し、別の場所に移動してそのタスクを継続できるので、ユーザセッションはユーザにより高い移動性を提供する。また、ウェブアプリケーション１３０周辺をナビゲートして、その作業を継続する正しい場所を見つける必要はなく、ユーザはサーバ１１５にログインすると即座に、作業し得る。加えて、ユーザセッション機能は、たとえユーザがアプリケーション１３０を一時停止する機会を有する前に離れなければならない場合でも、ユーザは一部の作業が失われないことを確実にする。また、ユーザセッションにタイムリミットがなく、ユーザはユーザが１つのタスクから別のタスクへと移動できるように同時に複数の活動状態のユーザセッションを有し得る。
【００６６】
同様に、ウェブ開発者にとって多くの利点が存在する。たとえば、ユーザセッション機能により、ユーザが望むだけウェブアプリケーションはユーザセッションデータを保管できるという特徴が簡素化される。さらに、１つの実施形態では、現在プログラムされているのと同一の方法でセッションデータをプログラムすることに関して高レベルの透明性が存在するので、ユーザセッションの導入はウェブ開発者の負担にならない。また、ユーザセッションは任意のウェブアプリケーション１３０により使用され得る。ユーザセッションはまた、ウェブ開発者がより自由にセッションデータよりもむしろビジネスの問題に集中し、潜在的にアプリケーション１３０の開発時間を減少させることを可能とし得る。
【００６７】
本発明は、１つ以上の製品上またはその中で具現化される１つ以上のコンピュータ可読プログラムとして提供され得る。製品はフロッピー（登録商標）ディスク、ハードディスク、ＣＤ  ＲＯＭ、フラッシュメモリカード、ＰＲＯＭ、ＲＡＭ、ＲＯＭ、携帯用記憶装置または磁気テープであり得る。一般的に、コンピュータ可読プログラムは任意のプログラミング言語で実行され得る。使用可能な言語のいくつかの例はＣ、Ｃ＋＋またはＪＡＶＡ（登録商標）を含む。ソフトウェアプログラムはオブジェクトコードとして１つ以上の製品上またはその中に保存され得る。
【００６８】
本発明の特定の実施形態を説明して、本発明の概念に組み込まれる他の実施形態が使用され得ることは当業者にとってはいまや明らかであろう。それゆえに、本発明は特定の実施形態に限定されてはならず、以下の請求項の精神および範囲によってのみ限定されなければならない。
【図面の簡単な説明】
【００６９】
本発明の上述の利点は、さらなる利点とともに、添付図面と関連して以下の説明を参照することにより、一層理解され得る。図面では、同一の参照符号は種々の図を通して概ね同一の部分を示す。また、図面は必ずしも一定の基準で示さず、概ね本発明の原理を図示することに重点を置いている。
【図１】先行技術のクライエント−サーバネットワークの実施形態のブロック図である。
【図２】ユーザセッション機構を備えるサーバを有するクライエント−サーバネットワークの実施形態のブロック図である。
【図３】ユーザセッション機構を有するサーバの実施形態のより詳細なブロック図である。
【図４】サーバにより行われるステップの実施形態を図示するフローチャートである。
【図５】ユーザセッションを確立するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図６】クライエントセッションを終了するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図７】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図８】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図９】ユーザセッションに割り当てられた状態の実施形態を図示する状態図である。
【図１０】図９のユーザとクライエントセッションの相対的タイミングに関するサーバにより行われるステップを図示するフローチャートである。
【図１１】メモリ素子の実施形態のより詳細なブロック図である。
【図１】
2006502496.tif 000003
【図２】
2006502496.tif 000004
【図３】
2006502496.tif 000005
【図４】
2006502496.tif 000006
【図５】
2006502496.tif 000007
【図６】
2006502496.tif 000008
【図７】
2006502496.tif 000009
【図８】
2006502496.tif 000010
【図９】
2006502496.tif 000011
【図１０】
2006502496.tif 000012
【図１１】
2006502496.tif 000013
【国際調査報告】
2006502496.tif 000014