クライエント−サーバネットワークで通信を行うための方法およびシステム
本発明は、クライエント−サーバネットワーク(125)で通信するためのサーバ(115)に関する。サーバ(115)は、第1のクライエント(110)からサーバとの通信セッションを確立する第1の要求を受信する受信器を含む。サーバ(115)はまた、第1の要求に応答してユーザセッションを確立するユーザセッション機構(205)を有する。サーバは、さらに第1の要求に応答して第1のクライエントセッションを確立するクライエントセッション機構(310)を含む。第1のクライエントセッションが終了すると、サーバ(115)は、例えばデータベースであり得るメモリ素子(315)にユーザセッションデータを保存する。受信器はまた、第2の要求を受信して、ユーザセッション機構はユーザセッションを再起動する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概ね、クライエント−サーバネットワークで通信を行うことに関し、より詳細には第1のクライエントを操作するユーザがサーバとの通信セッションから切断し、後に同一または別のクライエントから同一セッションに対して任意の時間に再接続可能とすることに関する。
【背景技術】
【0002】
図1を参照すると、先行技術では既知のネットワークコンピュータシステム100の1つのタイプは、典型的にはクライエントコンピュータ110とサーバ115を含む。クライエントコンピュータ110は、典型的にはサーバ115からの情報をダウンロードできるパーソナルコンピュータである。従来のクライエント110は、インターネットまたはワールドワイドウェブなどのネットワーク125を通過するクライエント−サーバ通信経路120で、サーバ115と通信する。サーバ115はまた、クライエント110によりアクセス可能な1つ以上のアプリケーションプログラム130を動作させることができる。
【0003】
クライエント110はまた、ウェブに接続し、かつ/またはサーバ115からコンテンツをダウンロードするために、Washington、RedmondのMicrosoft Corporationにより開発されたINTERNET EXPLORERまたはCalifornia、Mountain ViewのNetscape Communications Corporationにより開発されたNETSCAPE NAVIGATORなどのウェブブラウザ135を含み得る。サーバ115は、典型的にはクライエント110からの通信要求に応答して、クライエント110(例えば、ウェブブラウザ135)にウェブページを配信する。
【0004】
クライエント110およびサーバ115は、従来はインターネット125で通信する際にハイパーテキスト転送プロトコル(HTTP)を採用する。しかしながら、残念なことに、HTTPは「ステートレス」プロトコルである。言い換えれば、典型的には、サーバ115への訪問はその度にユーザによる最初の訪問としてサーバ115に見なされる。基本的に、サーバは各通信要求後、すべてを「忘れる」。
【0005】
例えば、クライエント110を操作するユーザは、インターネット125でサーバ115と通信できる。これらの通信中は、ユーザはサーバ115上で実行するアプリケーション130を使用して、例えば何らかの作業を行う。サーバ115はまた、典型的には通信と関連付けられたデータを保存する。その後、ユーザはそのエリアから離れなければならない場合など、サーバ115との通信を終了する。通信の終了の結果、サーバ115は典型的には通信に関連づけられたデータを消去する。ユーザはその後、そのエリアに戻り同一のクライエント110を使うと、ユーザはクライエント110を使用して再びサーバ115と通信できる。サーバ115が以前の通信中に保存したデータにユーザがアクセスしようとすると、典型的には、HTTPのステートレスな性質ゆえにサーバ115は以前の通信と関連付けられたデータへもはやアクセスできないので、ユーザはフェイルする。
【0006】
この問題の1つの解決策は、HTTPセッションの確立である。HTTPセッションは典型的には、クライエント110を操作する単一ユーザによるウェブページへの多数回の要求の持続期間を示す。HTTPセッション中は、典型的にはクッキーが採用されて状態を維持する。例えば、サーバ115は、その後クライエント110上に保存するために、クッキーを作成し、ウェブブラウザ135にそれを送信することできる。HTTPセッション中は、クライエント110は典型的には、ユーザのクッキーに関連付けられたデータをサーバ115に送信して状態を持続する。
【0007】
さらに、サーバ115がWashington、RedmondのMicrosoft Corporationにより開発されたアプリケーションサービスプロバイダ(ASP.NET)モジュールで実行する場合、ASP.NETモジュールは典型的にはHTTPセッション状態をサーバ115に保存可能とする。さらに、サーバ115は、後にセッション状態を識別するために、認証クッキーをクライエント110に割り当てることが可能である。また、認証クッキーのみをクライエント110とサーバ115間で送信し、一方でセッション状態はサーバ115に保存される。
【0008】
HTTPセッションの実施は、クッキーを使用しても柔軟性とローバスト性に欠けることが多い。例えば、クッキーは従来、特定のクライエント110に限定されている。また、従来のHTTPセッションは、もともとは短期の単純なサービスを提供するウェブアプリケーション130に適する。サーバ115がHTTPセッションを採用するアプリケーション130に関しては、ユーザは割り込みなしで一定の短期間にタスクを終了しなければならないこともある。ユーザがタスク中に長い間待機状態にした場合、サーバ115はセッションを終了し、再びユーザのデータを失うことになり得る。
【0009】
例えば、ユーザがオンラインで(例えば、インターネット125で)商品を購入したいとき、ユーザはクライエント110を使って、当該商品を販売するウェブページ上にログインする。ユーザは、典型的に商品を選択する画面や個人情報(例えば、郵送先住所)を入力する画面など多数の画面を行き来する。その後ある時点で、ユーザはクレジットカード番号などの支払い情報を入力しなければならない画面に到達する。ユーザが自分のクレジットカード情報を提供する前に長い間待機しすぎると、サーバ115はしばしば通信セッションを終了して、ユーザにサーバ115との別の通信セッションを確立させる。この第2の通信セッション中は、クライエント110とサーバ115との間のタイムアウトゆえに、ユーザは典型的には後の通信セッションにおいても再びユーザの全データを再入力しなければならない。
【0010】
加えて、以前にクライエント110でウェブページにアクセスしたユーザは、クライエント110上に保存されたクッキーの恩恵を得るために、その後そのクライエント110に「拘束」される。従って、クライエント110とサーバ115との間の通信セッションの柔軟性およびローバスト性を高める必要がある。
【発明の開示】
【課題を解決するための手段】
【0011】
本発明は、ユーザがウェブサーバとの通信セッションを切断して、その後、任意の装置を介して任意の場所から任意の時間に同一セッションに再接続することを可能とするための方法およびシステムに関する。従って、所定期間内にタスクを終了しない場合はデータを失う可能性などの通信セッションに関連した上記の制限が緩和される。また、本発明は、典型的にはサーバとクライエントとの間の従来の通信セッションに関連した時間制限およびクライエント制限を解除するので、通信セッションにより高い柔軟性およびローバスト性を提供する。
【0012】
1つの態様では、本発明はクライエント−サーバネットワークで通信するためのサーバに関する。サーバは、第1のクライエントからサーバとの通信セッションを確立する要求を受信する受信器を含む。サーバはまた、第1の要求に応答してユーザセッションを確立するユーザセッション機構を有する。サーバはさらに、第1の要求に応答して第1のクライエントセッションを確立するクライエントセッション機構を含む。第1のクライエントセッションが終了すると、サーバは、例えばデータベースであり得るメモリ素子にユーザセッションデータを保存する。受信器はまた、第2のクライエントからサーバとの通信セッションを確立する第2の要求を受信する。この第2の要求を受信すると、ユーザセッション機構はユーザセッションを再起動する。1つの実施形態において、ユーザセッション機構は確立されたユーザセッションに状態を割り当てる。この状態は、アクティブ状態、一時停止状態、または完了状態であり得る。
【0013】
別の態様では、本発明はクライエント−サーバネットワークで通信するための方法に関する。方法は、サーバとの通信を確立する要求をサーバにより受信する工程を含む。ユーザにより操作される第1のクライエントは、その要求をサーバに送信する。受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションが確立される。同様に、第1のクライエントとサーバとの間のクライエントセッションも受信された要求に応答して確立される。方法はまた、クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程を含む。方法はまた、ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求をサーバにより受信し、ユーザセッションを再起動する工程を含む。
【0014】
1つの実施形態では、要求はユーザ認証資格などでユーザを識別する。方法はまた、第1のクライエントから終了メッセージを受信し、ユーザセッションデータを保存する前に第1のクライエントとサーバとの間のクライエントセッションを終了することを含み得る。別の実施形態では、サーバは第1のクライエントおよびサーバとの間のクライエントセッションを終了して、一定期間待機した後、ユーザセッションデータを保存する。いくつかの実施形態では、方法はまた、アクティブ、一時停止または完了状態などの状態を、確立されたユーザセッションに割り当てることを含む。
【0015】
サーバとの通信を確立する別の要求を受信した後に、ユーザに関連付けられ、確立されたユーザセッションの存在を判定するために、保存されたユーザセッションデータを使用し得る。1つの実施形態では、確立されたユーザセッションの存在が判定されると、ユーザセッションが再起動される。
【発明を実施するための最良の形態】
【0016】
(発明の詳細な説明)
図2を参照すると、HTTPまたはクライエント、セッションの制限の多くを排除しつつ、クライエント−サーバネットワーク125での通信を可能にするコンピュータシステム200の実施形態が示される。詳細には、システム200は、サーバ115が通信セッション中の状態を維持することを可能し、後の通信セッションにおいて第1のクライエント通信セッション中に保存されたデータにユーザがアクセスすることを可能とする。従って、1つの実施形態において、セッションデータのアクセスは、第1のクライエント通信セッションが終了した後に発生する。
【0017】
コンピュータシステム200は、第1のクライエント110’と第2のクライエント110”(概ね、以下クライエント110と呼ぶ)とサーバ115とを含む。1つの実施形態では、各クライエント110’、110”はそれぞれのウェブブラウザ135’、135”(概ね、以下ウェブブラウザ135と呼ぶ)を有する。コンピュータシステム200は2つのクライエント110’、110”を備えて示されているが、任意の数のクライエントを有し得る(例えば、1つ、3つまたは50)。
【0018】
クライエント110は、任意のパーソナルコンピュータ(例えば、x86系から、Pentium(登録商標)系、680x0系、PowerPC、PA−RISC、MIPS系のマイクロプロセッサに基づく)、スマートまたはダンプ端末、ネットワークコンピュータ、無線装置、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータまたはその他のコンピュータデバイスであり得る。クライエント110によりサポートされるオペレーティングシステムは、Washington、RedmondのMicrosoft CorporationによるオペレーティングシステムのWINDOWS(登録商標)系、MacOS Java(登録商標)OSおよび種々のUnix(登録商標)系統(例えば、Solaris、SunOS、Linux、HP−UX、A/IXおよびBSD系配布)の任意のメンバーを含み得る。
【0019】
1つの実施形態では、ウェブブラウザ135は、サーバ115への通信に対してはセキュアソケットレイヤー(SSL)サポートを使用する。SSLは、California、Mountain ViewのNetscape Communication Corporationにより開発された保護プロトコルであり、現在、インターネットエンジニアリングタスクフォース(IETF)により公布された基準である。ウェブブラウザ135は、代替的に、CA、Los AltosのTerisa Systemsにより開発されたセキュアハイパーテキスト転送プロトコル(SHTTP)、SSL上のHTTP(HTTPS)、Washington、RedmondのMicrosoft Corporationにより開発されたプライベートコミュニケーションテクノロジー(PCT)およびIETFにより公布されたトランスポートレベルセキュリティ(TLS)基準などの(但しこれらに限定されない)、他の保護プロトコルを使用するサーバ115に接続し得る。
【0020】
ウェブブラウザ135に関して上述した、また下述するにもかかわらず、クライエント110は代替的に、ウェブブラウザ135なしでサーバ115からコンテンツを取得し得る。例えば、クライエント110はウェブにアクセスせず、代わりに通信装置またはモジュールを使用してサーバ115と直接通信して、サーバ115からコンテンツを取得し得る。また、サーバ115とクライエント110との間の通信に使用されるプロトコルはHTTPとして上述および下述されているが、任意のプロトコルが使用され得る。
【0021】
上述のように、1つの実施形態において、各クライエント110はネットワーク125でサーバ115からコンテンツをダウンロードし得る。ネットワーク125は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットもしくはワールドワイドウェブ(すなわち、ウェブ)などのネットワークのうちの1つのネットワークであり得る。別の実施形態では、第1のクライエント110’および第2のクライエント110”は異なるネットワークでサーバ115と通信する。詳細には、各クライエント110’、110”は、ネットワーク125を通過するそれぞれのクライエント−サーバ通信経路120’、120”(概ね、以下クライエント−サーバ通信経路120と呼ばれる)でサーバ115と通信し得る。
【0022】
通信経路120’、120”の実施形態の例は、標準電話回線、LANまたはWANリンク(例えば、T1、T3,56kb、X.25)、ブロードバンド接続(ISDN,フレームリレー、ATM)および無線接続を含む。通信経路120’、120”での接続は種々の通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標),RS232、メッセージングアプリケーションプログラミングインターフェース(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザデータグラムプロトコルスキームに使用されるリアルタイムストリーミングプロトコル(RTSPU)、WA、SeattleのRealNetworks,Inc.により開発されたプログレッシブネットワークスメディア(PNM)プロトコル、製造メッセージ仕様(MMS)プロトコルおよび直接非同期接続)を使用して確立し得る。
【0023】
1つの実施形態では、サーバ115はクライエント110にコンテンツ(例えば、ウェブページ)を配信する。サーバ115は、クライエント110に関して上述したものなど、クライエント110と通信することが可能な任意のパーソナルコンピュータであり得る。またサーバ115は、任意のオペレーティングシステムをサポートし得、その例もクライエント110に関して上記に示されている。
【0024】
1つの実施形態では、サーバ115はクライエント110による使用に有効なアプリケーション130を動作させる。かかるアプリケーションの例は、共にWashington、RedmondのMicrosoft Corporationにより製造されたMICROSOFT WORDなどのワードプロセッシングプログラム、MICROSOFT EXCELなどの表計算プログラム、財務報告プログラム、顧客登録プログラム、技術サポート情報を提供するプログラム、顧客データベースアプリケーション、またはアプリケーション設定マネージャを含む。
【0025】
サーバ115はまた、ユーザセッション機構205を含む。ユーザセッション機構205は、サーバ115とユーザとの間の1つ以上のユーザセッションを確立して管理する。1つの実施形態では、ユーザセッションは、同一の識別されたユーザから発せられた一連のHTTP要求を含む。いくつかの実施形態では、要求はアプリケーション130に対して行われる。ユーザセッションを確立する要求は、同一ウェブブラウザ135(故に、クライエント110)からというよりはむしろ同一ユーザから発するので、ユーザセッション機構205は異なるウェブブラウザおよび/または異なるクライエントからの同一ユーザとの単一ユーザセッションを維持し得る。また、ユーザセッション機構205は、同一または複数のクライエント110でサーバ115とユーザとの間の複数ユーザセッションを確立して維持し得る。
【0026】
1つの実施形態では、ユーザセッション機構250は、サーバ115内で実行するソフトウェアモジュールである。ユーザセッション機構205はまた、サーバ115に「差し込み」、サーバ115にユーザセッション機能を付加する外部ソフトウェアモジュールであり得る。時間に拘束されるHTTPセッションとは異なり、特定ユーザとユーザセッション機構205との間のユーザセッションはいかなる期間にも依存しない。さらなる実施形態では、ユーザセッション機構205’はアプリケーション130のサブルーチンまたはプロセスなどのアプリケーション130の一部として実行する。
【0027】
サーバ115はまた、単一エンティティとして管理される1つ以上のサーバの論理グループであるサーバファーム210またはサーバネットワークのメンバーであり得る。1つの実施形態では、サーバファーム210は3つのウェブサーバ115、115’、115”(概ね115)を含む。図2で示す実施形態は3つのウェブサーバ115を有するが、サーバファーム210は任意の数のサーバを有し得る。他の実施形態では、サーバファーム210は、企業のイントラネット、バーチャルプライベートネットワーク(VPN)またはセキュアエクストラネットなど、認定されていない個人がアクセス不可能な保護ネットワークである。加えて、サーバファーム210を構成するサーバは、説明したプロトコルのいずれかを使用する上述のネットワーク(例えば、WAN、LAN)のいずれかで通信し得る。
【0028】
サーバ115についてより詳細には、また図3を参照すると、1つの実施形態において、サーバ115は受信器305、クライエントセッション機構310、メモリ素子315、ユーザセッション機構205およびアプリケーション130を含む。これらの構成要素は、確立されたクライエントセッションを終了した後でもサーバ115がユーザセッションを作成して維持することを可能とする。
【0029】
詳細には、1つの実施形態では、受信器305はクライエント110からのサーバ115との通信セッションを確立するために、1つ以上の要求320を受信するソフトウェアモジュールである。従って、1つの実施形態では、要求320は受信器305に対して行われる。要求320は、例えば、MICROSOFT WORDなどのアプリケーション130へのログインおよび使用の要求であり得る。1つの実施形態では、受信器305はアプリケーション130内で実行する。他の実施形態では、受信器305は、サーバ115上で独立して実行するソフトウェアモジュールまたはサーバ115の別のモジュールの一部(例えば、ユーザセッション機構205)であり得る。
【0030】
サーバ115はまた、受信器305と通信するクライエントセッション機構310を含む。クライエントセッション機構310は、サーバ115とクライエント110との間のHTTP通信セッションを確立して管理するソフトウェアモジュールである。この管理の一部として、クライエントセッション機構310はクライエント110とサーバ115との間の各通信セッションに関連付けられたセッションデータを保存して維持する。1つの実施形態では、クライエントセッション機構310はメモリ素子315にセッションデータを保存する。
【0031】
メモリ素子315は、ダイナミックRAM(DRAM)、スタティックRAM、同期DRAM(SDRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)またはプログラマブル読み出し専用メモリ(PROM)などの任意の標準メモリ装置であり得る。メモリ素子315はサーバ115の内部または外部に位置付けされ得る。メモリ素子315のさらなる例は、持続的データベース(例えば、持続的ユーザセッションデータベース)、磁気ディスク、光磁気ディスクを含む。いくつかの実施形態では、アプリケーション130もメモリ素子315にアクセスして、そこに情報を保存する。
【0032】
以下において詳述するように、1つの実施形態では、クライエントセッション機構310は1つ以上のクライエントセッションに関連付けられたセッションデータを保存するためのクライエントセッションオブジェクト325を作成し得る。また、ユーザセッション機構205もまた、1つ以上のユーザセッションに関連付けられたセッションデータを保存するための、ユーザセッションオブジェクト330を作成し得る。
【0033】
クライエントセッションを確立した後のある時点で、サーバ115は通信セッションを終了するであろう。1つの実施形態では、通信セッションの終了は、特定終了メッセージに応答する。いくつかの実施形態では、終了メッセージは、ユーザがウェブブラウザ135を閉じるときなどに、クライエント110から、またはクライエント110上でユーザにより行われた動作に応答して送られたメッセージであり得る。代替的に、終了メッセージはサーバ115が所定期間にクライエント通信セッションに関してクライエント110からいかなる情報も受信しないと、終了メッセージを受信し得る。言い換えると、クライエント110のユーザが長い間待機しすぎた場合、サーバ115はクライエントセッションを終了し得る。
【0034】
一旦クライエントセッションを終了すると、通信セッションが完了したので、サーバ115は典型的にはセッションデータを廃棄する。しかしながら、ユーザがその後の時点で同一または異なるクライエント110から自分の通信セッションに戻ることを可能とするために、ユーザセッション機構205はクライエントセッションの終了後、セッションデータを維持する。
【0035】
また、ソフトウェアモジュール130、205、305、310、315、325、330の任意の組み合わせを単一モジュールに一体化し得る。例えば、ユーザセッション機構205とクライエントセッション機構310は単一のセッション機構モジュール335に組み込まれ得る。さらに、ソフトウェアモジュール130、205、305、310、315、325、330、335のいずれかまたはすべては、サーバ115の内部または外部に位置付けられ得る。
【0036】
サーバ115により行われるステップの概略として、また図4を参照すると、受信器305は、アプリケーション130にアクセスするなど、サーバ115との通信セッションを確立する要求320を第1のクライエント110’から受信する(ステップ405)。1つの実施形態では、一旦受信器305が要求320を受信すると、ユーザセッション機構205はその後、第1のクライエント110’を操作するユーザとサーバ115との間のユーザセッションを確立する(ステップ410)。
【0037】
次に、サーバ115は第1のクライエント110’とサーバ115との間のクライエントセッションを確立する(ステップ415)。上述のように、クライエントセッション機構310はクライエントセッションに関連付けられた、およびクライエントセッション中のセッションデータを保存する。クライエントセッション機構310は、サーバ115がステップ420でクライエントセッションを終了することを判定するまで(例えば、タイムアウトまたは終了メッセージの受信に応答して)、クライエントセッション中のセッションデータを保存し続ける。かかる判定で、サーバ115はクライエントセッションを終了し(ステップ425)、ユーザセッション機構205はユーザセッションデータの保存の任務を引き継ぐ。
【0038】
サーバ115は、その後第2のクライエント110”から、ユーザの通信セッションを継続する要求を受信する(ステップ430)。ユーザセッション機構205はその後、ユーザセッションを再起動する(ステップ435)。以前のクライエントセッションの終了にも関わらず、ユーザセッションの再起動により、異なるマシーン(たとえば第2のクライエント110”)上でかつ異なる時間にユーザの作業を継続することが可能となる。
【0039】
ユーザセッションの確立に関してより詳細には、図5を参照すると、サーバ115が第1のクライエント110’からユーザセッションを確立する要求を受信すると(ステップ405に上述するように)、サーバ115はユーザセッションを確立する前にステップ510〜520においてユーザを認証する。認証プロセスは、サーバ115がユーザのログイン名およびパスワードなどのユーザの資格を要求する(ステップ510)ことを含む。1つの実施形態では、ユーザは第1のクライエント110’のウェブブラウザ135’のディスプレイ上にユーザの資格を入力して、ウェブブラウザ135’はこの情報をサーバ115に送信する。他の実施形態では、ウェブブラウザ135’は、ユーザ認証のために自動的にこの情報をサーバ115に送信する。さらに別の実施形態では、サーバ115は音声認識またはバイオメトリック情報(例えば、顔認識またはアイスキャン)を介してユーザを検証する。
【0040】
サーバ115はユーザ資格を受信するのを待ち(ステップ515)、その後サーバ115が受信したユーザ資格を認識するかどうか判定する(ステップ520)。1つの実施形態では、サーバ115は、サーバ115がメモリ素子315に保存したユーザの資格のリストで受信したユーザの資格をチェックする。サーバ115がステップ520でユーザを認識しない場合(例えば、サーバ115が受信したユーザの資格を認識しない)、サーバ115はユーザ資格に対するその要求を繰り返す。1つの実施形態では、サーバ115は第1のクライエント110’とのその通信を終了する前に定められた回数しかユーザの資格を要求しない。サーバ115はまた、ステップ515においてサーバ115が所定量の時間、いかなるユーザ資格も受信しない場合、第1のクライエント110’とのその通信を終了し得る。
【0041】
サーバ115が、ステップ520でユーザ資格を認識してユーザを識別したら、サーバ115は第1のクライエント110’とのクライエントセッションを確立するための認証クッキーを作成する(ステップ525)。1つの実施形態では、サーバ115は例えば、1つ以上のHTTPヘッダの一部として、第1のクライエント110’に認証クッキーを輸送する。さらにいくつかの実施形態では、サーバ115はまたユーザを識別する際に将来使用するために、認証クッキーで送信されたデータのコピーを保持する。1つの実施形態では、サーバ115はその後、認証クッキーと関連付けられたクライエントセッションオブジェクト325を作成する(ステップ530)。従って、第1のクライエント110’とサーバ115との間のクライエント通信セッション中は、サーバ115はクライエントセッションオブジェクト325に、クライエントセッションと関連付けられたセッションデータを保存する。
【0042】
ステップ535では、サーバ115はまた、ステップ510〜520ですでに認証されたユーザに関連付けられたユーザセッションオブジェクト330を作成する。サーバ115はその後、ユーザセッションが同一ユーザのクライエントセッションに関連するように、クライエントセッションをユーザセッションと関連付ける(ステップ540)。1つの実施形態では、サーバ115はクライエントセッションオブジェクト325をユーザセッションオブジェクト330とリンクさせることにより、クライエントセッションをユーザセッションと関連付ける。別の実施形態では、サーバ115はクライエントセッションの識別子とユーザセッションの識別子との間のマッピングを維持することにより、クライエントセッションをユーザセッションと関連付ける。1つの実施形態において、サーバ115がクライエントセッションオブジェクト325に保存するデータが、クライエントセッションの終了後でもユーザセッションオブジェクト330に対してアクセス可能であるように、サーバ115はオブジェクト325、330を関連付ける。
【0043】
1つの実施形態では、ユーザセッション機構205がユーザセッションを作成した後に通信セッションを確立する次の要求320を受信すると、サーバ115は将来のユーザ識別のためにサーバ115が保存したクッキーに関連付けられたデータと、要求ヘッダからの認証クッキーを比較する。受信されたクッキーからの情報が保存データと一致したら、サーバ115は現在の要求320をクライエントセッションと関連づける。1つの実施形態では、この関連付けは、ユーザによりすでに作成され使用されているのと同一のユーザセッション内でクライエントセッションを作成することを含む。
【0044】
サーバ115が第1のクライエント110’とのクライエントセッションを終了する際に行うステップについてより詳細には、図6を参照すると、サーバ115は終了メッセージの受信を判定して、HTTPヘッダから認証クッキーを除去する(ステップ605)。サーバ115はその後、第1のクライエント110’とのクライエントセッションの終了にも関わらず、後で同一セッションデータにユーザがアクセスできるように、クライエントセッションオブジェクト325にすでに保存されたクライエントセッションデータをユーザセッションオブジェクト330に転送する(ステップ610)。ステップ615では、サーバ115はユーザセッションとクライエントセッションとの間の関連付けを除去する。1つの実施形態では、サーバ115はクライエントセッションオブジェクト325を消去する。
【0045】
図7を参照すると、図4で簡単に上述したように(ステップ430および435)、サーバ115は第1のクライエント110’とのクライエントセッションを終了することを判定した後、ユーザは、同一ユーザセッションを再起動する、第2のクライエント110”からの要求を送信する(ステップ705)。これは例えば、ユーザオフィスコンピュータからサーバ115に接続したことのあるユーザが、現在ビジネスで旅行していた場合に発生し得る。ユーザはユーザのオフィスコンピュータ上ですでに確立された通信セッションを継続したいかもしれないが、ユーザは旅行中にラップトップ(例えば、第2のクライエント110”)にアクセスするしかないようだ。この状況では、ユーザは例えば、自分のラップトップコンピュータを使用して、以前のユーザセッションを再起動させたいというユーザの希望を表す要求をサーバ115に送信し得る。
【0046】
ステップ710において、サーバ115は、以前の通信セッションにおいて作成されたセッションデータへのアクセスを可能にする前にユーザを認証する。この認証プロセスは図5のステップ510〜520に関して上記でより詳細に説明されている。ユーザを一旦認証すると、その後サーバ115は、図5のステップ525でも上述された認証クッキーを作成する(ステップ715)。サーバ115はまたクライエントセッションオブジェクト325を作成し、サーバ115と第2のクライエント110”との間の新規クライエントセッションを確立する(ステップ720)。
【0047】
1つの実施形態では、サーバ115は、その後ユーザの資格(例えば、ユーザの名前、ユーザのパスワードまたは任意の他のユーザ識別子)に関連付けられたユーザセッションオブジェクト330に関してメモリ素子315を検索する。関連付けられたユーザセッションデータとユーザセッションの位置決めがなされると(ステップ725)、サーバ115はその後クライエントセッションをユーザセッションと関連付ける(ステップ730)。サーバ115はその後、クライエントセッション機構310がセッションデータを管理し、更新することを可能とするために、図6のステップ610でユーザセッションオブジェクト330にすでに送信されたセッションデータを取り出して、クライエントセッションオブジェクト325に転送する(ステップ735)。
【0048】
ユーザセッションについてより詳細には、図8を参照すると、1つの実施形態ではユーザセッション機構205は、ユーザ通信セッション中の状態を維持するためにユーザセッションに状態を割り当てる。ユーザセッションへの状態の割り当てにより、ユーザセッションの再起動が可能となる。詳細には、ユーザセッション機構は、ユーザセッションに対してアクティブ状態805、一時停止状態810、または完了状態815を割り当て得る。
【0049】
1つの実施形態において、ユーザセッションはアクティブ状態805で開始する。クライエントセッションがクライエント110とサーバ115の間で確立している限り、ユーザセッションはアクティブ状態805にある。従って、1つの実施形態では、ユーザセッション機構205は開始イベント820に応答してユーザセッションにアクティブ状態805を割り当てる。開始イベント820の例は、ステップ405(図4)で上述されるように、サーバ115とのユーザ通信を確立する、クライエント110からの要求を受信することを含む。ユーザセッション機構205は、切断イベント825(例えば、終了メッセージ)が発生するまで、ユーザセッションをアクティブ状態805に維持する。サーバ115は切断イベント825を経験すると、ユーザセッション機構205はユーザセッションの状態をアクティブ状態805から一時停止状態810に再割り当てする。その後、サーバ115が継続イベント830(例えば、別のクライエント上の同一ユーザからの、以前のユーザセッションを継続する要求)を受信すると、ユーザセッション機構205は、ユーザセッション状態を一時停止状態810からアクティブ状態805に戻して再割り当てする。従って、ユーザセッション機構205は、ユーザセッション状態をアクティブ状態805から一時停止状態810(およびその反対)に、ユーザのしたい回数だけ割り当ておよび再割り当てし得る。具体的には、ユーザセッション機構205は、サーバが継続イベント830および/または切断イベント825を受信した回数だけ、ユーザセッションの状態をアクティブから一時停止へおよびその反対に変更し得る。
【0050】
さらに上述のように、サーバ115は終了イベント835を受信すると(例えば、ユーザセッション終了メッセージを介して)、ユーザセッションを終了する。終了イベント835を受信すると、ユーザセッション機構205はユーザセッションの状態をアクティブ状態805から完了状態815に変換する。1つの実施形態では、ユーザセッション状態はクリーナップイベント840に応答して、一時停止状態810から完了状態815に移行し得る。1つの実施形態では、クリーナップイベント840は管理者(例えば、サーバ115またはユーザセッション機構205などの)により行われるコマンドまたは動作である。別実施形態では、一時停止セッションを定期的にチェックして、なんらかの一時停止セッションが所定の期間(例えば1ヶ月)を超えて一時停止状態810のままでいるかどうか判定する管理プログラムのおかげで、ユーザセッション状態が一時停止状態810から完了状態815に移行し得る。かかる一時停止セッションが存在する場合、ユーザセッションは今後ユーザにより再起動されそうにない。そのため、管理プログラムはこれらのセッション状態を完了状態815に移行し得る。
【0051】
図9および図10において、ユーザセッションの状態変化の時系列900の実施形態とユーザセッション状態に関するサーバ115により行われるステップが示される。サーバ115(すなわち、受信器305)は第1の開始イベント820’(例えば、サーバ115との通信を確立する要求)を第1のクライエント110’から受信する(ステップ1005)。第1の開始イベント820’を受信すると、ユーザセッション機構205は、ユーザにすでに関連付けられた任意のユーザセッション(すなわち一時停止状態810のユーザセッション)に関してメモリ素子315(例えば持続的ユーザセッションデータべース)をチェックする(ステップ1010)。1つの実施形態では、上述のようにこれはユーザを認証した後で発生する。ステップ1010で、ユーザセッション機構205が識別されたユーザに関してユーザセッションが存在しないと判定すると、ユーザセッション機構205は、図5に関して上述したように、そのユーザのために新規ユーザセッション(ステップ1020)を作成する。従って、上述のように、ユーザセッション機構205が第1のユーザセッションを作成すると、ユーザクライエントセッション機構310もまた、第1のクライエントセッション905を作成する。また、クライエントセッション機構310は最初のクライエントセッションオブジェクト325’を作成し、デフォルトユーザセッション状態をこのオブジェクト325’に割り当てる。
【0052】
第1のクライエントセッション905が進むにつれて、クライエントセッション機構310は、第1のクライエントセッション905に関連付けられたセッションデータを最初のクライエントセッションオブジェクト325’に保存し、これにより第1のメモリユーザセッション状態を有する最初の第1の状態クライエントセッションオブジェクト325”にオブジェクト325’が状態移行する。後に、サーバ115は切断イベント825を受信して第1のクライエントセッション905を終了する。この時点で、ユーザセッション機構205がユーザセッションを一時停止状態810に移行させると、ユーザセッション機構205はまたセッションデータを最初の第1の状態クライエントセッションオブジェクト325”から持続的ユーザセッションオブジェクト330’(矢印910で示される)に転送する。従って、ユーザセッション機構205は第1の持続的ユーザセッション状態を持続的ユーザセッションオブジェクト330’に割り当てる。
【0053】
しかしながら、ステップ1010において、切断イベント825の後に継続イベント830(例えば、第2のクライエント110”からの要求)を受信する場合などに、識別されたユーザに関して一時停止ユーザセッション810が存在するとユーザセッション機構205が判定すると、サーバ115は最新の通信要求を行ったクライエント110(例えば、第2のクライエント110”)上に、ユーザに有効な一時停止された各ユーザセッション810についての情報を表示する(ステップ1025)。1つの実施形態では、ユーザセッション機構205はその後、ステップ1030でユーザからの入力の受信などを介して、ユーザが一時停止ユーザセッション810に再接続したいかどうかを判定する。ユーザが一時停止ユーザセッションに再接続することを選択しないとサーバ115が判定すると、サーバ115はステップ1020で新規ユーザセッションを作成する。
【0054】
ユーザが一時停止ユーザセッション810を継続することを選択すると、ユーザセッション機構205は、識別されたユーザに関して2つ以上の一時停止ユーザセッション810が存在している場合、ユーザがユーザセッションの表示から一時停止ユーザセッション810を選択するのを待つ。1つの実施形態において、サーバ115は、継続イベント830を、クライエント110(例えば、第2のクライエント110”)上の一時停止ユーザセッション810のサーバ表示から一時停止ユーザセッション810が選択されることと見なす。
【0055】
代替的に、継続イベント830は、サーバ115との通信セッションを確立する、第2のクライエント110”から受信された直接要求であり得る。本実施形態では、サーバ115はユーザに対して何の選択も提供しない。その代わり、サーバ115は一番最近の一時停止ユーザセッション810、最も初期の一時停止ユーザセッション810、または所定の一時停止ユーザセッション810に接続し得る。いくつかの実施形態では、要求はどのユーザセッション810をユーザが再起動したいかを示す。
【0056】
一旦ユーザセッション機構205が継続イベント830を受信するとユーザセッション機構205が判定すると、ユーザセッション機構205は一時停止ユーザセッション810をアクティブユーザセッション805に移行し、クライエントセッション機構310は第2のクライエントセッション915を作成する。また、1つの実施形態では、ユーザセッション機構205は、セッションデータを持続的ユーザセッションオブジェクト330’から2番目の第1の状態クライエントセッションオブジェクト325’’’に復元する(矢印920で示す)(ステップ1035)。このクライエントセッションオブジェクト325’’’は、最初の第1の状態クライエントセッションオブジェクト325”が第1のクライエントセッション905の終了前に有していたものと同一のセッションデータを有する。一旦ユーザセッション機構205がセッションデータを復元すると、以前の一時停止ユーザセッションは継続する(ステップ1040)。
【0057】
第2のクライエントセッション915が進むにつれて、クライエントセッション機構310は新規セッションデータを2番目の第1の状態クライエントセッションオブジェクト325’’’に保存し、それによりクライエントセッションオブジェクト325’’’を、第2のメモリユーザセッション状態を有する第2の状態クライエントセッションオブジェクト325’’’’に変換する。ユーザがユーザセッションの終了を要求すると、サーバ115は終了イベント835を受信する。終了イベント835を受信すると、ユーザセッション機構205はその後、第1のユーザセッション状態を有する持続的ユーザセッションオブジェクト330’を空にし、それにより空の持続的ユーザセッションオブジェクト330”を生成する。サーバ115はその後、第2の開始イベント820’を受信したら、第3のクライエントセッション925の作成に関してなど、そのプロセスを繰り返す。
【0058】
ユーザセッション機構205のより詳細な実施形態では、ユーザセッション機構205は任意のコンピュータ言語またはフレームワークで書き込みされ得る。例えば、ユーザセッション機構205はアプリケーションサービスプロバイダ(ASP.NET)HTTPモジュールまたはHTTP操作子であり得る。1つの実施形態では、ユーザセッション機構205はHTTPイベント操作子に添付するHTTPイベントモジュールである。ASP.NETフレームワークを使用して、ユーザセッション機構205は、HTTPランタイムのパイプラインに付加され、上記のユーザセッション機能を提供するHTTPモジュールであり得る。
【0059】
1つの実施形態では、ユーザセッション機構205はユーザセッションサービスを提供する要求を前処理/後処理し得る。詳細には、1つの実施形態において、HTTPモジュールはユーザセッションを開始または継続する必要性があるかどうかを判定することにより、要求320を前処理する。HTTPモジュールは要求320を後処理して、ユーザがユーザセッションを切断または終了するように依頼したかどうかを判定し得る。
【0060】
サーバ115がメモリ素子315に保存するユーザセッションデータおよびクライエントセッションデータの実施形態を図11に示す。クライエントセッションオブジェクト325は、例えばアプリケーションモジュール1115においてAppIDフィールド1105およびAppNameフィールド1110を含む。セッションモジュール1120において、クライエントセッションオブジェクト325は、例えばSessionIDフィールド1122、Createdフィールド1125、Expiresフィールド1130、LockDateフィールド1135、LockCookieフィールド1140、Timeoutフィールド1145、Lockedフィールド1150、Session ItemShortフィールド1155およびSessionItemLongフィールド1160を保存する。1つの実施形態では、クライエントセッション機構310はこれらのフィールドにクライエントセッション用のセッションデータを保存する。いくつかの実施形態では、これらのフィールドはデータベース315に保存されるテーブルのフィールドである。
【0061】
1つの実施形態において、クライエントセッション機構310はクライエント110とのクライエント通信セッションの識別子をSessionIDフィールド1122に保存する。Createdフィールド1125は、クライエント通信セッションが作成されたときのタイムスタンプを保存し得る。同様に、Expiresフィールド1130はクライエントセッションの期限が切れる時間を含む。LockDateフィールド1135は、もしあれば、クライエントセッションがアクセスできないようにロックされた日付を保存する。1つの実施形態では、LockCookieフィールド1140は、特定のクッキーに関連付けられたデータをアクセス不可能にするように(例えば、クッキーが更新されているときなどの使用中)、そのクッキーをロックされているかどうかに関するブール値(すなわち真または偽)を保存する。別の実施形態では、LockCookieフィールド1140では、セッションデータがロックされている場合、メモリ素子315におけるそのクライエントセッションデータに関するロックタイプを含む。1つの実施形態では、リードロック、ライトロック、スピンロックの3つの可能なロックタイプが存在する。1つの実施形態では、リードロックは、プログラムがセッションデータを書き込むことを阻止しつつ、同時に多くのプログラムがセッションデータを読み出すことを可能とするように設定される。また、ライトロックは1つのプログラムがセッションデータを書き込んでいるときに、他のプログラムがセッションデータを読み出す、または書き込むことを阻止するように設定される。加えて、1つの実施形態では、スピンロックは1つのプログラムがセッションデータにアクセス(読み出しまたは書き込み)しているときに、そのセッションデータへのアクセスを阻止するように設定する。Timeoutフィールド1145は、例えばサーバ115が入力を受信しないために、クライエントセッションを終了する時間値を保存する。1つの実施形態では、Lockedフィールド1150はデータがロックされている、従ってクライエントセッションがセッションデータを使用(例えば書き込む、および/または読み出す)している間、データへのアクセスが禁止されているかどうかを示すブーリアンである。SessionItemShortフィールド1155およびSessionItemLongフィールド1160は、サーバ115がセッションデータを保存するフィールドであり得る。
【0062】
ユーザセッション機構205は、クライエントセッション機構310に関連して、追加情報を保存する。詳細には、ユーザセッション機構205は、UserIDフィールド1165、UserNameフィールド1170およびAuthTypeフィールド1175をユーザセッションオブジェクト330のセッションユーザモジュール1180に保存する。1つの実施形態では、UserIDフィールド1165は、ユーザ固有の識別子を含む。UserNameフィールド1170はユーザを識別するのに使用される名前を含み得る。いくつかの実施形態では、AuthTypeフィールド1175は、ウェブ形態、ウィンドウ、パスポート認証などを介して、ユーザの認証に使用される方法を含む。
【0063】
ユーザセッションオブジェクト330はまた、アクティブセッションモジュール1185も含み得る。アクティブセッションモジュール1185は、SessionIDフィールド1190、Createdフィールド1195およびUserIDフィールド1200を含む。1つの実施形態では、SessionIDフィールド1190はユーザセッションに固有の識別子を含む。Createdフィールド1195はユーザセッション機構205がユーザセッションを作成した時間を含む。1つの実施形態では、UserIDフィールド1200はアクティブユーザセッションに関わるユーザ固有の識別子を含む。
【0064】
ユーザセッションオブジェクト330はまた、切断セッションモジュール1205を含み得る。切断セッションモジュール1205はSessionIDフィールド1210、Createdフィールド1215、LockCookieフィールド1220、TimeOutフィールド1225、SessionItemShortフィールド1230、SessionItemLongフィールド1235、UserIDフィールド1240およびDisconnectTimeフィールド1245を含み得る。1つの実施形態では、LockCookieフィールド1220は、セッションデータがロックされている場合、メモリ素子315におけるセッションデータのロックタイプ(例えば、リードロック、ライトロックまたはスピンロック)を含む。Timeoutフィールド1225は、クライエント110により、いかなる動作も行われない(例えば、クライエント110から受信されたいかなる要求320もない)後、クライエントセッションを終了するための所定時間を含む。SessionItemShortフィールド1230は、データが所定バイト数(例えば7000)より小さい場合のセッションデータを保存し得る。同様に、SessionItemLongフィールド1235は、データが所定バイト数(例えば7000)より大きい場合のセッションデータを保存し得る。1つの実施形態では、DisconnectTimeフィールド1245はユーザセッションが切断される時間を含む。
【0065】
ユーザセッションを可能にすることで、エンドユーザに多くの利点がもたらされる。例えば、ユーザは第1の場所でタスクを開始し、別の場所に移動してそのタスクを継続できるので、ユーザセッションはユーザにより高い移動性を提供する。また、ウェブアプリケーション130周辺をナビゲートして、その作業を継続する正しい場所を見つける必要はなく、ユーザはサーバ115にログインすると即座に、作業し得る。加えて、ユーザセッション機能は、たとえユーザがアプリケーション130を一時停止する機会を有する前に離れなければならない場合でも、ユーザは一部の作業が失われないことを確実にする。また、ユーザセッションにタイムリミットがなく、ユーザはユーザが1つのタスクから別のタスクへと移動できるように同時に複数の活動状態のユーザセッションを有し得る。
【0066】
同様に、ウェブ開発者にとって多くの利点が存在する。たとえば、ユーザセッション機能により、ユーザが望むだけウェブアプリケーションはユーザセッションデータを保管できるという特徴が簡素化される。さらに、1つの実施形態では、現在プログラムされているのと同一の方法でセッションデータをプログラムすることに関して高レベルの透明性が存在するので、ユーザセッションの導入はウェブ開発者の負担にならない。また、ユーザセッションは任意のウェブアプリケーション130により使用され得る。ユーザセッションはまた、ウェブ開発者がより自由にセッションデータよりもむしろビジネスの問題に集中し、潜在的にアプリケーション130の開発時間を減少させることを可能とし得る。
【0067】
本発明は、1つ以上の製品上またはその中で具現化される1つ以上のコンピュータ可読プログラムとして提供され得る。製品はフロッピー(登録商標)ディスク、ハードディスク、CD ROM、フラッシュメモリカード、PROM、RAM、ROM、携帯用記憶装置または磁気テープであり得る。一般的に、コンピュータ可読プログラムは任意のプログラミング言語で実行され得る。使用可能な言語のいくつかの例はC、C++またはJAVA(登録商標)を含む。ソフトウェアプログラムはオブジェクトコードとして1つ以上の製品上またはその中に保存され得る。
【0068】
本発明の特定の実施形態を説明して、本発明の概念に組み込まれる他の実施形態が使用され得ることは当業者にとってはいまや明らかであろう。それゆえに、本発明は特定の実施形態に限定されてはならず、以下の請求項の精神および範囲によってのみ限定されなければならない。
【図面の簡単な説明】
【0069】
本発明の上述の利点は、さらなる利点とともに、添付図面と関連して以下の説明を参照することにより、一層理解され得る。図面では、同一の参照符号は種々の図を通して概ね同一の部分を示す。また、図面は必ずしも一定の基準で示さず、概ね本発明の原理を図示することに重点を置いている。
【図1】先行技術のクライエント−サーバネットワークの実施形態のブロック図である。
【図2】ユーザセッション機構を備えるサーバを有するクライエント−サーバネットワークの実施形態のブロック図である。
【図3】ユーザセッション機構を有するサーバの実施形態のより詳細なブロック図である。
【図4】サーバにより行われるステップの実施形態を図示するフローチャートである。
【図5】ユーザセッションを確立するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図6】クライエントセッションを終了するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図7】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図8】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図9】ユーザセッションに割り当てられた状態の実施形態を図示する状態図である。
【図10】図9のユーザとクライエントセッションの相対的タイミングに関するサーバにより行われるステップを図示するフローチャートである。
【図11】メモリ素子の実施形態のより詳細なブロック図である。
【技術分野】
【0001】
本発明は概ね、クライエント−サーバネットワークで通信を行うことに関し、より詳細には第1のクライエントを操作するユーザがサーバとの通信セッションから切断し、後に同一または別のクライエントから同一セッションに対して任意の時間に再接続可能とすることに関する。
【背景技術】
【0002】
図1を参照すると、先行技術では既知のネットワークコンピュータシステム100の1つのタイプは、典型的にはクライエントコンピュータ110とサーバ115を含む。クライエントコンピュータ110は、典型的にはサーバ115からの情報をダウンロードできるパーソナルコンピュータである。従来のクライエント110は、インターネットまたはワールドワイドウェブなどのネットワーク125を通過するクライエント−サーバ通信経路120で、サーバ115と通信する。サーバ115はまた、クライエント110によりアクセス可能な1つ以上のアプリケーションプログラム130を動作させることができる。
【0003】
クライエント110はまた、ウェブに接続し、かつ/またはサーバ115からコンテンツをダウンロードするために、Washington、RedmondのMicrosoft Corporationにより開発されたINTERNET EXPLORERまたはCalifornia、Mountain ViewのNetscape Communications Corporationにより開発されたNETSCAPE NAVIGATORなどのウェブブラウザ135を含み得る。サーバ115は、典型的にはクライエント110からの通信要求に応答して、クライエント110(例えば、ウェブブラウザ135)にウェブページを配信する。
【0004】
クライエント110およびサーバ115は、従来はインターネット125で通信する際にハイパーテキスト転送プロトコル(HTTP)を採用する。しかしながら、残念なことに、HTTPは「ステートレス」プロトコルである。言い換えれば、典型的には、サーバ115への訪問はその度にユーザによる最初の訪問としてサーバ115に見なされる。基本的に、サーバは各通信要求後、すべてを「忘れる」。
【0005】
例えば、クライエント110を操作するユーザは、インターネット125でサーバ115と通信できる。これらの通信中は、ユーザはサーバ115上で実行するアプリケーション130を使用して、例えば何らかの作業を行う。サーバ115はまた、典型的には通信と関連付けられたデータを保存する。その後、ユーザはそのエリアから離れなければならない場合など、サーバ115との通信を終了する。通信の終了の結果、サーバ115は典型的には通信に関連づけられたデータを消去する。ユーザはその後、そのエリアに戻り同一のクライエント110を使うと、ユーザはクライエント110を使用して再びサーバ115と通信できる。サーバ115が以前の通信中に保存したデータにユーザがアクセスしようとすると、典型的には、HTTPのステートレスな性質ゆえにサーバ115は以前の通信と関連付けられたデータへもはやアクセスできないので、ユーザはフェイルする。
【0006】
この問題の1つの解決策は、HTTPセッションの確立である。HTTPセッションは典型的には、クライエント110を操作する単一ユーザによるウェブページへの多数回の要求の持続期間を示す。HTTPセッション中は、典型的にはクッキーが採用されて状態を維持する。例えば、サーバ115は、その後クライエント110上に保存するために、クッキーを作成し、ウェブブラウザ135にそれを送信することできる。HTTPセッション中は、クライエント110は典型的には、ユーザのクッキーに関連付けられたデータをサーバ115に送信して状態を持続する。
【0007】
さらに、サーバ115がWashington、RedmondのMicrosoft Corporationにより開発されたアプリケーションサービスプロバイダ(ASP.NET)モジュールで実行する場合、ASP.NETモジュールは典型的にはHTTPセッション状態をサーバ115に保存可能とする。さらに、サーバ115は、後にセッション状態を識別するために、認証クッキーをクライエント110に割り当てることが可能である。また、認証クッキーのみをクライエント110とサーバ115間で送信し、一方でセッション状態はサーバ115に保存される。
【0008】
HTTPセッションの実施は、クッキーを使用しても柔軟性とローバスト性に欠けることが多い。例えば、クッキーは従来、特定のクライエント110に限定されている。また、従来のHTTPセッションは、もともとは短期の単純なサービスを提供するウェブアプリケーション130に適する。サーバ115がHTTPセッションを採用するアプリケーション130に関しては、ユーザは割り込みなしで一定の短期間にタスクを終了しなければならないこともある。ユーザがタスク中に長い間待機状態にした場合、サーバ115はセッションを終了し、再びユーザのデータを失うことになり得る。
【0009】
例えば、ユーザがオンラインで(例えば、インターネット125で)商品を購入したいとき、ユーザはクライエント110を使って、当該商品を販売するウェブページ上にログインする。ユーザは、典型的に商品を選択する画面や個人情報(例えば、郵送先住所)を入力する画面など多数の画面を行き来する。その後ある時点で、ユーザはクレジットカード番号などの支払い情報を入力しなければならない画面に到達する。ユーザが自分のクレジットカード情報を提供する前に長い間待機しすぎると、サーバ115はしばしば通信セッションを終了して、ユーザにサーバ115との別の通信セッションを確立させる。この第2の通信セッション中は、クライエント110とサーバ115との間のタイムアウトゆえに、ユーザは典型的には後の通信セッションにおいても再びユーザの全データを再入力しなければならない。
【0010】
加えて、以前にクライエント110でウェブページにアクセスしたユーザは、クライエント110上に保存されたクッキーの恩恵を得るために、その後そのクライエント110に「拘束」される。従って、クライエント110とサーバ115との間の通信セッションの柔軟性およびローバスト性を高める必要がある。
【発明の開示】
【課題を解決するための手段】
【0011】
本発明は、ユーザがウェブサーバとの通信セッションを切断して、その後、任意の装置を介して任意の場所から任意の時間に同一セッションに再接続することを可能とするための方法およびシステムに関する。従って、所定期間内にタスクを終了しない場合はデータを失う可能性などの通信セッションに関連した上記の制限が緩和される。また、本発明は、典型的にはサーバとクライエントとの間の従来の通信セッションに関連した時間制限およびクライエント制限を解除するので、通信セッションにより高い柔軟性およびローバスト性を提供する。
【0012】
1つの態様では、本発明はクライエント−サーバネットワークで通信するためのサーバに関する。サーバは、第1のクライエントからサーバとの通信セッションを確立する要求を受信する受信器を含む。サーバはまた、第1の要求に応答してユーザセッションを確立するユーザセッション機構を有する。サーバはさらに、第1の要求に応答して第1のクライエントセッションを確立するクライエントセッション機構を含む。第1のクライエントセッションが終了すると、サーバは、例えばデータベースであり得るメモリ素子にユーザセッションデータを保存する。受信器はまた、第2のクライエントからサーバとの通信セッションを確立する第2の要求を受信する。この第2の要求を受信すると、ユーザセッション機構はユーザセッションを再起動する。1つの実施形態において、ユーザセッション機構は確立されたユーザセッションに状態を割り当てる。この状態は、アクティブ状態、一時停止状態、または完了状態であり得る。
【0013】
別の態様では、本発明はクライエント−サーバネットワークで通信するための方法に関する。方法は、サーバとの通信を確立する要求をサーバにより受信する工程を含む。ユーザにより操作される第1のクライエントは、その要求をサーバに送信する。受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションが確立される。同様に、第1のクライエントとサーバとの間のクライエントセッションも受信された要求に応答して確立される。方法はまた、クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程を含む。方法はまた、ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求をサーバにより受信し、ユーザセッションを再起動する工程を含む。
【0014】
1つの実施形態では、要求はユーザ認証資格などでユーザを識別する。方法はまた、第1のクライエントから終了メッセージを受信し、ユーザセッションデータを保存する前に第1のクライエントとサーバとの間のクライエントセッションを終了することを含み得る。別の実施形態では、サーバは第1のクライエントおよびサーバとの間のクライエントセッションを終了して、一定期間待機した後、ユーザセッションデータを保存する。いくつかの実施形態では、方法はまた、アクティブ、一時停止または完了状態などの状態を、確立されたユーザセッションに割り当てることを含む。
【0015】
サーバとの通信を確立する別の要求を受信した後に、ユーザに関連付けられ、確立されたユーザセッションの存在を判定するために、保存されたユーザセッションデータを使用し得る。1つの実施形態では、確立されたユーザセッションの存在が判定されると、ユーザセッションが再起動される。
【発明を実施するための最良の形態】
【0016】
(発明の詳細な説明)
図2を参照すると、HTTPまたはクライエント、セッションの制限の多くを排除しつつ、クライエント−サーバネットワーク125での通信を可能にするコンピュータシステム200の実施形態が示される。詳細には、システム200は、サーバ115が通信セッション中の状態を維持することを可能し、後の通信セッションにおいて第1のクライエント通信セッション中に保存されたデータにユーザがアクセスすることを可能とする。従って、1つの実施形態において、セッションデータのアクセスは、第1のクライエント通信セッションが終了した後に発生する。
【0017】
コンピュータシステム200は、第1のクライエント110’と第2のクライエント110”(概ね、以下クライエント110と呼ぶ)とサーバ115とを含む。1つの実施形態では、各クライエント110’、110”はそれぞれのウェブブラウザ135’、135”(概ね、以下ウェブブラウザ135と呼ぶ)を有する。コンピュータシステム200は2つのクライエント110’、110”を備えて示されているが、任意の数のクライエントを有し得る(例えば、1つ、3つまたは50)。
【0018】
クライエント110は、任意のパーソナルコンピュータ(例えば、x86系から、Pentium(登録商標)系、680x0系、PowerPC、PA−RISC、MIPS系のマイクロプロセッサに基づく)、スマートまたはダンプ端末、ネットワークコンピュータ、無線装置、情報機器、ワークステーション、ミニコンピュータ、メインフレームコンピュータまたはその他のコンピュータデバイスであり得る。クライエント110によりサポートされるオペレーティングシステムは、Washington、RedmondのMicrosoft CorporationによるオペレーティングシステムのWINDOWS(登録商標)系、MacOS Java(登録商標)OSおよび種々のUnix(登録商標)系統(例えば、Solaris、SunOS、Linux、HP−UX、A/IXおよびBSD系配布)の任意のメンバーを含み得る。
【0019】
1つの実施形態では、ウェブブラウザ135は、サーバ115への通信に対してはセキュアソケットレイヤー(SSL)サポートを使用する。SSLは、California、Mountain ViewのNetscape Communication Corporationにより開発された保護プロトコルであり、現在、インターネットエンジニアリングタスクフォース(IETF)により公布された基準である。ウェブブラウザ135は、代替的に、CA、Los AltosのTerisa Systemsにより開発されたセキュアハイパーテキスト転送プロトコル(SHTTP)、SSL上のHTTP(HTTPS)、Washington、RedmondのMicrosoft Corporationにより開発されたプライベートコミュニケーションテクノロジー(PCT)およびIETFにより公布されたトランスポートレベルセキュリティ(TLS)基準などの(但しこれらに限定されない)、他の保護プロトコルを使用するサーバ115に接続し得る。
【0020】
ウェブブラウザ135に関して上述した、また下述するにもかかわらず、クライエント110は代替的に、ウェブブラウザ135なしでサーバ115からコンテンツを取得し得る。例えば、クライエント110はウェブにアクセスせず、代わりに通信装置またはモジュールを使用してサーバ115と直接通信して、サーバ115からコンテンツを取得し得る。また、サーバ115とクライエント110との間の通信に使用されるプロトコルはHTTPとして上述および下述されているが、任意のプロトコルが使用され得る。
【0021】
上述のように、1つの実施形態において、各クライエント110はネットワーク125でサーバ115からコンテンツをダウンロードし得る。ネットワーク125は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットもしくはワールドワイドウェブ(すなわち、ウェブ)などのネットワークのうちの1つのネットワークであり得る。別の実施形態では、第1のクライエント110’および第2のクライエント110”は異なるネットワークでサーバ115と通信する。詳細には、各クライエント110’、110”は、ネットワーク125を通過するそれぞれのクライエント−サーバ通信経路120’、120”(概ね、以下クライエント−サーバ通信経路120と呼ばれる)でサーバ115と通信し得る。
【0022】
通信経路120’、120”の実施形態の例は、標準電話回線、LANまたはWANリンク(例えば、T1、T3,56kb、X.25)、ブロードバンド接続(ISDN,フレームリレー、ATM)および無線接続を含む。通信経路120’、120”での接続は種々の通信プロトコル(例えば、HTTP、HTTPS、TCP/IP、IPX、SPX、NetBIOS、イーサネット(登録商標),RS232、メッセージングアプリケーションプログラミングインターフェース(MAPI)プロトコル、リアルタイムストリーミングプロトコル(RTSP)、ユーザデータグラムプロトコルスキームに使用されるリアルタイムストリーミングプロトコル(RTSPU)、WA、SeattleのRealNetworks,Inc.により開発されたプログレッシブネットワークスメディア(PNM)プロトコル、製造メッセージ仕様(MMS)プロトコルおよび直接非同期接続)を使用して確立し得る。
【0023】
1つの実施形態では、サーバ115はクライエント110にコンテンツ(例えば、ウェブページ)を配信する。サーバ115は、クライエント110に関して上述したものなど、クライエント110と通信することが可能な任意のパーソナルコンピュータであり得る。またサーバ115は、任意のオペレーティングシステムをサポートし得、その例もクライエント110に関して上記に示されている。
【0024】
1つの実施形態では、サーバ115はクライエント110による使用に有効なアプリケーション130を動作させる。かかるアプリケーションの例は、共にWashington、RedmondのMicrosoft Corporationにより製造されたMICROSOFT WORDなどのワードプロセッシングプログラム、MICROSOFT EXCELなどの表計算プログラム、財務報告プログラム、顧客登録プログラム、技術サポート情報を提供するプログラム、顧客データベースアプリケーション、またはアプリケーション設定マネージャを含む。
【0025】
サーバ115はまた、ユーザセッション機構205を含む。ユーザセッション機構205は、サーバ115とユーザとの間の1つ以上のユーザセッションを確立して管理する。1つの実施形態では、ユーザセッションは、同一の識別されたユーザから発せられた一連のHTTP要求を含む。いくつかの実施形態では、要求はアプリケーション130に対して行われる。ユーザセッションを確立する要求は、同一ウェブブラウザ135(故に、クライエント110)からというよりはむしろ同一ユーザから発するので、ユーザセッション機構205は異なるウェブブラウザおよび/または異なるクライエントからの同一ユーザとの単一ユーザセッションを維持し得る。また、ユーザセッション機構205は、同一または複数のクライエント110でサーバ115とユーザとの間の複数ユーザセッションを確立して維持し得る。
【0026】
1つの実施形態では、ユーザセッション機構250は、サーバ115内で実行するソフトウェアモジュールである。ユーザセッション機構205はまた、サーバ115に「差し込み」、サーバ115にユーザセッション機能を付加する外部ソフトウェアモジュールであり得る。時間に拘束されるHTTPセッションとは異なり、特定ユーザとユーザセッション機構205との間のユーザセッションはいかなる期間にも依存しない。さらなる実施形態では、ユーザセッション機構205’はアプリケーション130のサブルーチンまたはプロセスなどのアプリケーション130の一部として実行する。
【0027】
サーバ115はまた、単一エンティティとして管理される1つ以上のサーバの論理グループであるサーバファーム210またはサーバネットワークのメンバーであり得る。1つの実施形態では、サーバファーム210は3つのウェブサーバ115、115’、115”(概ね115)を含む。図2で示す実施形態は3つのウェブサーバ115を有するが、サーバファーム210は任意の数のサーバを有し得る。他の実施形態では、サーバファーム210は、企業のイントラネット、バーチャルプライベートネットワーク(VPN)またはセキュアエクストラネットなど、認定されていない個人がアクセス不可能な保護ネットワークである。加えて、サーバファーム210を構成するサーバは、説明したプロトコルのいずれかを使用する上述のネットワーク(例えば、WAN、LAN)のいずれかで通信し得る。
【0028】
サーバ115についてより詳細には、また図3を参照すると、1つの実施形態において、サーバ115は受信器305、クライエントセッション機構310、メモリ素子315、ユーザセッション機構205およびアプリケーション130を含む。これらの構成要素は、確立されたクライエントセッションを終了した後でもサーバ115がユーザセッションを作成して維持することを可能とする。
【0029】
詳細には、1つの実施形態では、受信器305はクライエント110からのサーバ115との通信セッションを確立するために、1つ以上の要求320を受信するソフトウェアモジュールである。従って、1つの実施形態では、要求320は受信器305に対して行われる。要求320は、例えば、MICROSOFT WORDなどのアプリケーション130へのログインおよび使用の要求であり得る。1つの実施形態では、受信器305はアプリケーション130内で実行する。他の実施形態では、受信器305は、サーバ115上で独立して実行するソフトウェアモジュールまたはサーバ115の別のモジュールの一部(例えば、ユーザセッション機構205)であり得る。
【0030】
サーバ115はまた、受信器305と通信するクライエントセッション機構310を含む。クライエントセッション機構310は、サーバ115とクライエント110との間のHTTP通信セッションを確立して管理するソフトウェアモジュールである。この管理の一部として、クライエントセッション機構310はクライエント110とサーバ115との間の各通信セッションに関連付けられたセッションデータを保存して維持する。1つの実施形態では、クライエントセッション機構310はメモリ素子315にセッションデータを保存する。
【0031】
メモリ素子315は、ダイナミックRAM(DRAM)、スタティックRAM、同期DRAM(SDRAM)、ダブルデータレート同期ダイナミックRAM(DDR SDRAM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)またはプログラマブル読み出し専用メモリ(PROM)などの任意の標準メモリ装置であり得る。メモリ素子315はサーバ115の内部または外部に位置付けされ得る。メモリ素子315のさらなる例は、持続的データベース(例えば、持続的ユーザセッションデータベース)、磁気ディスク、光磁気ディスクを含む。いくつかの実施形態では、アプリケーション130もメモリ素子315にアクセスして、そこに情報を保存する。
【0032】
以下において詳述するように、1つの実施形態では、クライエントセッション機構310は1つ以上のクライエントセッションに関連付けられたセッションデータを保存するためのクライエントセッションオブジェクト325を作成し得る。また、ユーザセッション機構205もまた、1つ以上のユーザセッションに関連付けられたセッションデータを保存するための、ユーザセッションオブジェクト330を作成し得る。
【0033】
クライエントセッションを確立した後のある時点で、サーバ115は通信セッションを終了するであろう。1つの実施形態では、通信セッションの終了は、特定終了メッセージに応答する。いくつかの実施形態では、終了メッセージは、ユーザがウェブブラウザ135を閉じるときなどに、クライエント110から、またはクライエント110上でユーザにより行われた動作に応答して送られたメッセージであり得る。代替的に、終了メッセージはサーバ115が所定期間にクライエント通信セッションに関してクライエント110からいかなる情報も受信しないと、終了メッセージを受信し得る。言い換えると、クライエント110のユーザが長い間待機しすぎた場合、サーバ115はクライエントセッションを終了し得る。
【0034】
一旦クライエントセッションを終了すると、通信セッションが完了したので、サーバ115は典型的にはセッションデータを廃棄する。しかしながら、ユーザがその後の時点で同一または異なるクライエント110から自分の通信セッションに戻ることを可能とするために、ユーザセッション機構205はクライエントセッションの終了後、セッションデータを維持する。
【0035】
また、ソフトウェアモジュール130、205、305、310、315、325、330の任意の組み合わせを単一モジュールに一体化し得る。例えば、ユーザセッション機構205とクライエントセッション機構310は単一のセッション機構モジュール335に組み込まれ得る。さらに、ソフトウェアモジュール130、205、305、310、315、325、330、335のいずれかまたはすべては、サーバ115の内部または外部に位置付けられ得る。
【0036】
サーバ115により行われるステップの概略として、また図4を参照すると、受信器305は、アプリケーション130にアクセスするなど、サーバ115との通信セッションを確立する要求320を第1のクライエント110’から受信する(ステップ405)。1つの実施形態では、一旦受信器305が要求320を受信すると、ユーザセッション機構205はその後、第1のクライエント110’を操作するユーザとサーバ115との間のユーザセッションを確立する(ステップ410)。
【0037】
次に、サーバ115は第1のクライエント110’とサーバ115との間のクライエントセッションを確立する(ステップ415)。上述のように、クライエントセッション機構310はクライエントセッションに関連付けられた、およびクライエントセッション中のセッションデータを保存する。クライエントセッション機構310は、サーバ115がステップ420でクライエントセッションを終了することを判定するまで(例えば、タイムアウトまたは終了メッセージの受信に応答して)、クライエントセッション中のセッションデータを保存し続ける。かかる判定で、サーバ115はクライエントセッションを終了し(ステップ425)、ユーザセッション機構205はユーザセッションデータの保存の任務を引き継ぐ。
【0038】
サーバ115は、その後第2のクライエント110”から、ユーザの通信セッションを継続する要求を受信する(ステップ430)。ユーザセッション機構205はその後、ユーザセッションを再起動する(ステップ435)。以前のクライエントセッションの終了にも関わらず、ユーザセッションの再起動により、異なるマシーン(たとえば第2のクライエント110”)上でかつ異なる時間にユーザの作業を継続することが可能となる。
【0039】
ユーザセッションの確立に関してより詳細には、図5を参照すると、サーバ115が第1のクライエント110’からユーザセッションを確立する要求を受信すると(ステップ405に上述するように)、サーバ115はユーザセッションを確立する前にステップ510〜520においてユーザを認証する。認証プロセスは、サーバ115がユーザのログイン名およびパスワードなどのユーザの資格を要求する(ステップ510)ことを含む。1つの実施形態では、ユーザは第1のクライエント110’のウェブブラウザ135’のディスプレイ上にユーザの資格を入力して、ウェブブラウザ135’はこの情報をサーバ115に送信する。他の実施形態では、ウェブブラウザ135’は、ユーザ認証のために自動的にこの情報をサーバ115に送信する。さらに別の実施形態では、サーバ115は音声認識またはバイオメトリック情報(例えば、顔認識またはアイスキャン)を介してユーザを検証する。
【0040】
サーバ115はユーザ資格を受信するのを待ち(ステップ515)、その後サーバ115が受信したユーザ資格を認識するかどうか判定する(ステップ520)。1つの実施形態では、サーバ115は、サーバ115がメモリ素子315に保存したユーザの資格のリストで受信したユーザの資格をチェックする。サーバ115がステップ520でユーザを認識しない場合(例えば、サーバ115が受信したユーザの資格を認識しない)、サーバ115はユーザ資格に対するその要求を繰り返す。1つの実施形態では、サーバ115は第1のクライエント110’とのその通信を終了する前に定められた回数しかユーザの資格を要求しない。サーバ115はまた、ステップ515においてサーバ115が所定量の時間、いかなるユーザ資格も受信しない場合、第1のクライエント110’とのその通信を終了し得る。
【0041】
サーバ115が、ステップ520でユーザ資格を認識してユーザを識別したら、サーバ115は第1のクライエント110’とのクライエントセッションを確立するための認証クッキーを作成する(ステップ525)。1つの実施形態では、サーバ115は例えば、1つ以上のHTTPヘッダの一部として、第1のクライエント110’に認証クッキーを輸送する。さらにいくつかの実施形態では、サーバ115はまたユーザを識別する際に将来使用するために、認証クッキーで送信されたデータのコピーを保持する。1つの実施形態では、サーバ115はその後、認証クッキーと関連付けられたクライエントセッションオブジェクト325を作成する(ステップ530)。従って、第1のクライエント110’とサーバ115との間のクライエント通信セッション中は、サーバ115はクライエントセッションオブジェクト325に、クライエントセッションと関連付けられたセッションデータを保存する。
【0042】
ステップ535では、サーバ115はまた、ステップ510〜520ですでに認証されたユーザに関連付けられたユーザセッションオブジェクト330を作成する。サーバ115はその後、ユーザセッションが同一ユーザのクライエントセッションに関連するように、クライエントセッションをユーザセッションと関連付ける(ステップ540)。1つの実施形態では、サーバ115はクライエントセッションオブジェクト325をユーザセッションオブジェクト330とリンクさせることにより、クライエントセッションをユーザセッションと関連付ける。別の実施形態では、サーバ115はクライエントセッションの識別子とユーザセッションの識別子との間のマッピングを維持することにより、クライエントセッションをユーザセッションと関連付ける。1つの実施形態において、サーバ115がクライエントセッションオブジェクト325に保存するデータが、クライエントセッションの終了後でもユーザセッションオブジェクト330に対してアクセス可能であるように、サーバ115はオブジェクト325、330を関連付ける。
【0043】
1つの実施形態では、ユーザセッション機構205がユーザセッションを作成した後に通信セッションを確立する次の要求320を受信すると、サーバ115は将来のユーザ識別のためにサーバ115が保存したクッキーに関連付けられたデータと、要求ヘッダからの認証クッキーを比較する。受信されたクッキーからの情報が保存データと一致したら、サーバ115は現在の要求320をクライエントセッションと関連づける。1つの実施形態では、この関連付けは、ユーザによりすでに作成され使用されているのと同一のユーザセッション内でクライエントセッションを作成することを含む。
【0044】
サーバ115が第1のクライエント110’とのクライエントセッションを終了する際に行うステップについてより詳細には、図6を参照すると、サーバ115は終了メッセージの受信を判定して、HTTPヘッダから認証クッキーを除去する(ステップ605)。サーバ115はその後、第1のクライエント110’とのクライエントセッションの終了にも関わらず、後で同一セッションデータにユーザがアクセスできるように、クライエントセッションオブジェクト325にすでに保存されたクライエントセッションデータをユーザセッションオブジェクト330に転送する(ステップ610)。ステップ615では、サーバ115はユーザセッションとクライエントセッションとの間の関連付けを除去する。1つの実施形態では、サーバ115はクライエントセッションオブジェクト325を消去する。
【0045】
図7を参照すると、図4で簡単に上述したように(ステップ430および435)、サーバ115は第1のクライエント110’とのクライエントセッションを終了することを判定した後、ユーザは、同一ユーザセッションを再起動する、第2のクライエント110”からの要求を送信する(ステップ705)。これは例えば、ユーザオフィスコンピュータからサーバ115に接続したことのあるユーザが、現在ビジネスで旅行していた場合に発生し得る。ユーザはユーザのオフィスコンピュータ上ですでに確立された通信セッションを継続したいかもしれないが、ユーザは旅行中にラップトップ(例えば、第2のクライエント110”)にアクセスするしかないようだ。この状況では、ユーザは例えば、自分のラップトップコンピュータを使用して、以前のユーザセッションを再起動させたいというユーザの希望を表す要求をサーバ115に送信し得る。
【0046】
ステップ710において、サーバ115は、以前の通信セッションにおいて作成されたセッションデータへのアクセスを可能にする前にユーザを認証する。この認証プロセスは図5のステップ510〜520に関して上記でより詳細に説明されている。ユーザを一旦認証すると、その後サーバ115は、図5のステップ525でも上述された認証クッキーを作成する(ステップ715)。サーバ115はまたクライエントセッションオブジェクト325を作成し、サーバ115と第2のクライエント110”との間の新規クライエントセッションを確立する(ステップ720)。
【0047】
1つの実施形態では、サーバ115は、その後ユーザの資格(例えば、ユーザの名前、ユーザのパスワードまたは任意の他のユーザ識別子)に関連付けられたユーザセッションオブジェクト330に関してメモリ素子315を検索する。関連付けられたユーザセッションデータとユーザセッションの位置決めがなされると(ステップ725)、サーバ115はその後クライエントセッションをユーザセッションと関連付ける(ステップ730)。サーバ115はその後、クライエントセッション機構310がセッションデータを管理し、更新することを可能とするために、図6のステップ610でユーザセッションオブジェクト330にすでに送信されたセッションデータを取り出して、クライエントセッションオブジェクト325に転送する(ステップ735)。
【0048】
ユーザセッションについてより詳細には、図8を参照すると、1つの実施形態ではユーザセッション機構205は、ユーザ通信セッション中の状態を維持するためにユーザセッションに状態を割り当てる。ユーザセッションへの状態の割り当てにより、ユーザセッションの再起動が可能となる。詳細には、ユーザセッション機構は、ユーザセッションに対してアクティブ状態805、一時停止状態810、または完了状態815を割り当て得る。
【0049】
1つの実施形態において、ユーザセッションはアクティブ状態805で開始する。クライエントセッションがクライエント110とサーバ115の間で確立している限り、ユーザセッションはアクティブ状態805にある。従って、1つの実施形態では、ユーザセッション機構205は開始イベント820に応答してユーザセッションにアクティブ状態805を割り当てる。開始イベント820の例は、ステップ405(図4)で上述されるように、サーバ115とのユーザ通信を確立する、クライエント110からの要求を受信することを含む。ユーザセッション機構205は、切断イベント825(例えば、終了メッセージ)が発生するまで、ユーザセッションをアクティブ状態805に維持する。サーバ115は切断イベント825を経験すると、ユーザセッション機構205はユーザセッションの状態をアクティブ状態805から一時停止状態810に再割り当てする。その後、サーバ115が継続イベント830(例えば、別のクライエント上の同一ユーザからの、以前のユーザセッションを継続する要求)を受信すると、ユーザセッション機構205は、ユーザセッション状態を一時停止状態810からアクティブ状態805に戻して再割り当てする。従って、ユーザセッション機構205は、ユーザセッション状態をアクティブ状態805から一時停止状態810(およびその反対)に、ユーザのしたい回数だけ割り当ておよび再割り当てし得る。具体的には、ユーザセッション機構205は、サーバが継続イベント830および/または切断イベント825を受信した回数だけ、ユーザセッションの状態をアクティブから一時停止へおよびその反対に変更し得る。
【0050】
さらに上述のように、サーバ115は終了イベント835を受信すると(例えば、ユーザセッション終了メッセージを介して)、ユーザセッションを終了する。終了イベント835を受信すると、ユーザセッション機構205はユーザセッションの状態をアクティブ状態805から完了状態815に変換する。1つの実施形態では、ユーザセッション状態はクリーナップイベント840に応答して、一時停止状態810から完了状態815に移行し得る。1つの実施形態では、クリーナップイベント840は管理者(例えば、サーバ115またはユーザセッション機構205などの)により行われるコマンドまたは動作である。別実施形態では、一時停止セッションを定期的にチェックして、なんらかの一時停止セッションが所定の期間(例えば1ヶ月)を超えて一時停止状態810のままでいるかどうか判定する管理プログラムのおかげで、ユーザセッション状態が一時停止状態810から完了状態815に移行し得る。かかる一時停止セッションが存在する場合、ユーザセッションは今後ユーザにより再起動されそうにない。そのため、管理プログラムはこれらのセッション状態を完了状態815に移行し得る。
【0051】
図9および図10において、ユーザセッションの状態変化の時系列900の実施形態とユーザセッション状態に関するサーバ115により行われるステップが示される。サーバ115(すなわち、受信器305)は第1の開始イベント820’(例えば、サーバ115との通信を確立する要求)を第1のクライエント110’から受信する(ステップ1005)。第1の開始イベント820’を受信すると、ユーザセッション機構205は、ユーザにすでに関連付けられた任意のユーザセッション(すなわち一時停止状態810のユーザセッション)に関してメモリ素子315(例えば持続的ユーザセッションデータべース)をチェックする(ステップ1010)。1つの実施形態では、上述のようにこれはユーザを認証した後で発生する。ステップ1010で、ユーザセッション機構205が識別されたユーザに関してユーザセッションが存在しないと判定すると、ユーザセッション機構205は、図5に関して上述したように、そのユーザのために新規ユーザセッション(ステップ1020)を作成する。従って、上述のように、ユーザセッション機構205が第1のユーザセッションを作成すると、ユーザクライエントセッション機構310もまた、第1のクライエントセッション905を作成する。また、クライエントセッション機構310は最初のクライエントセッションオブジェクト325’を作成し、デフォルトユーザセッション状態をこのオブジェクト325’に割り当てる。
【0052】
第1のクライエントセッション905が進むにつれて、クライエントセッション機構310は、第1のクライエントセッション905に関連付けられたセッションデータを最初のクライエントセッションオブジェクト325’に保存し、これにより第1のメモリユーザセッション状態を有する最初の第1の状態クライエントセッションオブジェクト325”にオブジェクト325’が状態移行する。後に、サーバ115は切断イベント825を受信して第1のクライエントセッション905を終了する。この時点で、ユーザセッション機構205がユーザセッションを一時停止状態810に移行させると、ユーザセッション機構205はまたセッションデータを最初の第1の状態クライエントセッションオブジェクト325”から持続的ユーザセッションオブジェクト330’(矢印910で示される)に転送する。従って、ユーザセッション機構205は第1の持続的ユーザセッション状態を持続的ユーザセッションオブジェクト330’に割り当てる。
【0053】
しかしながら、ステップ1010において、切断イベント825の後に継続イベント830(例えば、第2のクライエント110”からの要求)を受信する場合などに、識別されたユーザに関して一時停止ユーザセッション810が存在するとユーザセッション機構205が判定すると、サーバ115は最新の通信要求を行ったクライエント110(例えば、第2のクライエント110”)上に、ユーザに有効な一時停止された各ユーザセッション810についての情報を表示する(ステップ1025)。1つの実施形態では、ユーザセッション機構205はその後、ステップ1030でユーザからの入力の受信などを介して、ユーザが一時停止ユーザセッション810に再接続したいかどうかを判定する。ユーザが一時停止ユーザセッションに再接続することを選択しないとサーバ115が判定すると、サーバ115はステップ1020で新規ユーザセッションを作成する。
【0054】
ユーザが一時停止ユーザセッション810を継続することを選択すると、ユーザセッション機構205は、識別されたユーザに関して2つ以上の一時停止ユーザセッション810が存在している場合、ユーザがユーザセッションの表示から一時停止ユーザセッション810を選択するのを待つ。1つの実施形態において、サーバ115は、継続イベント830を、クライエント110(例えば、第2のクライエント110”)上の一時停止ユーザセッション810のサーバ表示から一時停止ユーザセッション810が選択されることと見なす。
【0055】
代替的に、継続イベント830は、サーバ115との通信セッションを確立する、第2のクライエント110”から受信された直接要求であり得る。本実施形態では、サーバ115はユーザに対して何の選択も提供しない。その代わり、サーバ115は一番最近の一時停止ユーザセッション810、最も初期の一時停止ユーザセッション810、または所定の一時停止ユーザセッション810に接続し得る。いくつかの実施形態では、要求はどのユーザセッション810をユーザが再起動したいかを示す。
【0056】
一旦ユーザセッション機構205が継続イベント830を受信するとユーザセッション機構205が判定すると、ユーザセッション機構205は一時停止ユーザセッション810をアクティブユーザセッション805に移行し、クライエントセッション機構310は第2のクライエントセッション915を作成する。また、1つの実施形態では、ユーザセッション機構205は、セッションデータを持続的ユーザセッションオブジェクト330’から2番目の第1の状態クライエントセッションオブジェクト325’’’に復元する(矢印920で示す)(ステップ1035)。このクライエントセッションオブジェクト325’’’は、最初の第1の状態クライエントセッションオブジェクト325”が第1のクライエントセッション905の終了前に有していたものと同一のセッションデータを有する。一旦ユーザセッション機構205がセッションデータを復元すると、以前の一時停止ユーザセッションは継続する(ステップ1040)。
【0057】
第2のクライエントセッション915が進むにつれて、クライエントセッション機構310は新規セッションデータを2番目の第1の状態クライエントセッションオブジェクト325’’’に保存し、それによりクライエントセッションオブジェクト325’’’を、第2のメモリユーザセッション状態を有する第2の状態クライエントセッションオブジェクト325’’’’に変換する。ユーザがユーザセッションの終了を要求すると、サーバ115は終了イベント835を受信する。終了イベント835を受信すると、ユーザセッション機構205はその後、第1のユーザセッション状態を有する持続的ユーザセッションオブジェクト330’を空にし、それにより空の持続的ユーザセッションオブジェクト330”を生成する。サーバ115はその後、第2の開始イベント820’を受信したら、第3のクライエントセッション925の作成に関してなど、そのプロセスを繰り返す。
【0058】
ユーザセッション機構205のより詳細な実施形態では、ユーザセッション機構205は任意のコンピュータ言語またはフレームワークで書き込みされ得る。例えば、ユーザセッション機構205はアプリケーションサービスプロバイダ(ASP.NET)HTTPモジュールまたはHTTP操作子であり得る。1つの実施形態では、ユーザセッション機構205はHTTPイベント操作子に添付するHTTPイベントモジュールである。ASP.NETフレームワークを使用して、ユーザセッション機構205は、HTTPランタイムのパイプラインに付加され、上記のユーザセッション機能を提供するHTTPモジュールであり得る。
【0059】
1つの実施形態では、ユーザセッション機構205はユーザセッションサービスを提供する要求を前処理/後処理し得る。詳細には、1つの実施形態において、HTTPモジュールはユーザセッションを開始または継続する必要性があるかどうかを判定することにより、要求320を前処理する。HTTPモジュールは要求320を後処理して、ユーザがユーザセッションを切断または終了するように依頼したかどうかを判定し得る。
【0060】
サーバ115がメモリ素子315に保存するユーザセッションデータおよびクライエントセッションデータの実施形態を図11に示す。クライエントセッションオブジェクト325は、例えばアプリケーションモジュール1115においてAppIDフィールド1105およびAppNameフィールド1110を含む。セッションモジュール1120において、クライエントセッションオブジェクト325は、例えばSessionIDフィールド1122、Createdフィールド1125、Expiresフィールド1130、LockDateフィールド1135、LockCookieフィールド1140、Timeoutフィールド1145、Lockedフィールド1150、Session ItemShortフィールド1155およびSessionItemLongフィールド1160を保存する。1つの実施形態では、クライエントセッション機構310はこれらのフィールドにクライエントセッション用のセッションデータを保存する。いくつかの実施形態では、これらのフィールドはデータベース315に保存されるテーブルのフィールドである。
【0061】
1つの実施形態において、クライエントセッション機構310はクライエント110とのクライエント通信セッションの識別子をSessionIDフィールド1122に保存する。Createdフィールド1125は、クライエント通信セッションが作成されたときのタイムスタンプを保存し得る。同様に、Expiresフィールド1130はクライエントセッションの期限が切れる時間を含む。LockDateフィールド1135は、もしあれば、クライエントセッションがアクセスできないようにロックされた日付を保存する。1つの実施形態では、LockCookieフィールド1140は、特定のクッキーに関連付けられたデータをアクセス不可能にするように(例えば、クッキーが更新されているときなどの使用中)、そのクッキーをロックされているかどうかに関するブール値(すなわち真または偽)を保存する。別の実施形態では、LockCookieフィールド1140では、セッションデータがロックされている場合、メモリ素子315におけるそのクライエントセッションデータに関するロックタイプを含む。1つの実施形態では、リードロック、ライトロック、スピンロックの3つの可能なロックタイプが存在する。1つの実施形態では、リードロックは、プログラムがセッションデータを書き込むことを阻止しつつ、同時に多くのプログラムがセッションデータを読み出すことを可能とするように設定される。また、ライトロックは1つのプログラムがセッションデータを書き込んでいるときに、他のプログラムがセッションデータを読み出す、または書き込むことを阻止するように設定される。加えて、1つの実施形態では、スピンロックは1つのプログラムがセッションデータにアクセス(読み出しまたは書き込み)しているときに、そのセッションデータへのアクセスを阻止するように設定する。Timeoutフィールド1145は、例えばサーバ115が入力を受信しないために、クライエントセッションを終了する時間値を保存する。1つの実施形態では、Lockedフィールド1150はデータがロックされている、従ってクライエントセッションがセッションデータを使用(例えば書き込む、および/または読み出す)している間、データへのアクセスが禁止されているかどうかを示すブーリアンである。SessionItemShortフィールド1155およびSessionItemLongフィールド1160は、サーバ115がセッションデータを保存するフィールドであり得る。
【0062】
ユーザセッション機構205は、クライエントセッション機構310に関連して、追加情報を保存する。詳細には、ユーザセッション機構205は、UserIDフィールド1165、UserNameフィールド1170およびAuthTypeフィールド1175をユーザセッションオブジェクト330のセッションユーザモジュール1180に保存する。1つの実施形態では、UserIDフィールド1165は、ユーザ固有の識別子を含む。UserNameフィールド1170はユーザを識別するのに使用される名前を含み得る。いくつかの実施形態では、AuthTypeフィールド1175は、ウェブ形態、ウィンドウ、パスポート認証などを介して、ユーザの認証に使用される方法を含む。
【0063】
ユーザセッションオブジェクト330はまた、アクティブセッションモジュール1185も含み得る。アクティブセッションモジュール1185は、SessionIDフィールド1190、Createdフィールド1195およびUserIDフィールド1200を含む。1つの実施形態では、SessionIDフィールド1190はユーザセッションに固有の識別子を含む。Createdフィールド1195はユーザセッション機構205がユーザセッションを作成した時間を含む。1つの実施形態では、UserIDフィールド1200はアクティブユーザセッションに関わるユーザ固有の識別子を含む。
【0064】
ユーザセッションオブジェクト330はまた、切断セッションモジュール1205を含み得る。切断セッションモジュール1205はSessionIDフィールド1210、Createdフィールド1215、LockCookieフィールド1220、TimeOutフィールド1225、SessionItemShortフィールド1230、SessionItemLongフィールド1235、UserIDフィールド1240およびDisconnectTimeフィールド1245を含み得る。1つの実施形態では、LockCookieフィールド1220は、セッションデータがロックされている場合、メモリ素子315におけるセッションデータのロックタイプ(例えば、リードロック、ライトロックまたはスピンロック)を含む。Timeoutフィールド1225は、クライエント110により、いかなる動作も行われない(例えば、クライエント110から受信されたいかなる要求320もない)後、クライエントセッションを終了するための所定時間を含む。SessionItemShortフィールド1230は、データが所定バイト数(例えば7000)より小さい場合のセッションデータを保存し得る。同様に、SessionItemLongフィールド1235は、データが所定バイト数(例えば7000)より大きい場合のセッションデータを保存し得る。1つの実施形態では、DisconnectTimeフィールド1245はユーザセッションが切断される時間を含む。
【0065】
ユーザセッションを可能にすることで、エンドユーザに多くの利点がもたらされる。例えば、ユーザは第1の場所でタスクを開始し、別の場所に移動してそのタスクを継続できるので、ユーザセッションはユーザにより高い移動性を提供する。また、ウェブアプリケーション130周辺をナビゲートして、その作業を継続する正しい場所を見つける必要はなく、ユーザはサーバ115にログインすると即座に、作業し得る。加えて、ユーザセッション機能は、たとえユーザがアプリケーション130を一時停止する機会を有する前に離れなければならない場合でも、ユーザは一部の作業が失われないことを確実にする。また、ユーザセッションにタイムリミットがなく、ユーザはユーザが1つのタスクから別のタスクへと移動できるように同時に複数の活動状態のユーザセッションを有し得る。
【0066】
同様に、ウェブ開発者にとって多くの利点が存在する。たとえば、ユーザセッション機能により、ユーザが望むだけウェブアプリケーションはユーザセッションデータを保管できるという特徴が簡素化される。さらに、1つの実施形態では、現在プログラムされているのと同一の方法でセッションデータをプログラムすることに関して高レベルの透明性が存在するので、ユーザセッションの導入はウェブ開発者の負担にならない。また、ユーザセッションは任意のウェブアプリケーション130により使用され得る。ユーザセッションはまた、ウェブ開発者がより自由にセッションデータよりもむしろビジネスの問題に集中し、潜在的にアプリケーション130の開発時間を減少させることを可能とし得る。
【0067】
本発明は、1つ以上の製品上またはその中で具現化される1つ以上のコンピュータ可読プログラムとして提供され得る。製品はフロッピー(登録商標)ディスク、ハードディスク、CD ROM、フラッシュメモリカード、PROM、RAM、ROM、携帯用記憶装置または磁気テープであり得る。一般的に、コンピュータ可読プログラムは任意のプログラミング言語で実行され得る。使用可能な言語のいくつかの例はC、C++またはJAVA(登録商標)を含む。ソフトウェアプログラムはオブジェクトコードとして1つ以上の製品上またはその中に保存され得る。
【0068】
本発明の特定の実施形態を説明して、本発明の概念に組み込まれる他の実施形態が使用され得ることは当業者にとってはいまや明らかであろう。それゆえに、本発明は特定の実施形態に限定されてはならず、以下の請求項の精神および範囲によってのみ限定されなければならない。
【図面の簡単な説明】
【0069】
本発明の上述の利点は、さらなる利点とともに、添付図面と関連して以下の説明を参照することにより、一層理解され得る。図面では、同一の参照符号は種々の図を通して概ね同一の部分を示す。また、図面は必ずしも一定の基準で示さず、概ね本発明の原理を図示することに重点を置いている。
【図1】先行技術のクライエント−サーバネットワークの実施形態のブロック図である。
【図2】ユーザセッション機構を備えるサーバを有するクライエント−サーバネットワークの実施形態のブロック図である。
【図3】ユーザセッション機構を有するサーバの実施形態のより詳細なブロック図である。
【図4】サーバにより行われるステップの実施形態を図示するフローチャートである。
【図5】ユーザセッションを確立するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図6】クライエントセッションを終了するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図7】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図8】ユーザセッションを再起動するためにサーバにより行われるステップの実施形態を図示するフローチャートである。
【図9】ユーザセッションに割り当てられた状態の実施形態を図示する状態図である。
【図10】図9のユーザとクライエントセッションの相対的タイミングに関するサーバにより行われるステップを図示するフローチャートである。
【図11】メモリ素子の実施形態のより詳細なブロック図である。
【特許請求の範囲】
【請求項1】
クライエント−サーバネットワークで通信する方法であって、該方法は、
(a)ユーザにより操作される第1のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
(b)受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションを確立する工程と、
(c)受信された要求に応答して、第1のクライエントとサーバとの間のクライエントセッションを確立する工程と、
(d)クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程と、
(e)ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
(f)ユーザセッションを再起動する工程と、
を含む方法。
【請求項2】
工程(a)は、サーバとの通信を確立する要求をサーバにより受信することを含み、該要求はユーザを識別する、請求項1に記載の方法。
【請求項3】
ユーザ認証資格をサーバにより受信する工程をさらに含む、請求項1に記載の方法。
【請求項4】
工程(a)は、サーバとの通信を確立するハイパーテキスト転送プロトコル(http)要求をサーバにより受信することを含む、請求項1に記載の方法。
【請求項5】
工程(d)は、
(d−a)第1のクライエントから終了メッセージを受信することと、
(d−b)第1のクライエントとサーバとの間のクライエントセッションを終了することと、
(d−c)第1のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項1に記載の方法。
【請求項6】
工程(d)は、
(d−a)所定期間待機することと、
(d−b)第1のクライエントとサーバとの間のクライエントセッションを終了することと、
(d−c)第1のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項1に記載の方法。
【請求項7】
工程(d)は、クライエントセッションの終了に応答して、データベースにユーザセッションデータをサーバにより保存することをさらに含む、請求項1に記載の方法。
【請求項8】
確立されたユーザセッションに状態を割り当てる工程をさらに含む、請求項1に記載の方法。
【請求項9】
工程(b)は、ユーザセッションがアクティブであることを示す確立されたユーザセッションに、識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項10】
工程(f)は、再起動されたユーザセッションがアクティブであることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項11】
工程(d)は、ユーザセッションが一時停止されていることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項12】
(g)ユーザセッション終了するためにユーザセッション終了メッセージを受信する工程と、
(h)ユーザセッションが完了したことを示すユーザセッションに識別子を割り当てる工程と、
をさらに含む、請求項1に記載の方法。
【請求項13】
保存されたユーザセッションデータを消去する工程をさらに含む、請求項12の方法。
【請求項14】
工程(e)は、
(e−a)ユーザにより操作される第1のクライエントと第2のクライエントのうち少なくとも1つから、サーバとの通信を確立する別の要求をサーバにより受信することと、
(e−b)ユーザに関連付けられ、確立されたユーザセッションの存在を、保存されたユーザセッションデータを使用して判定することと、
を含む、請求項1に記載の方法。
【請求項15】
確立されたユーザセッション存在の判定に応答して、ユーザセッションを再起動する工程をさらに含む、請求項14に記載の方法。
【請求項16】
工程(d)は、ユーザのためのユーザ識別子、ユーザを識別する名前、ユーザを認証するのに使用される方法を表す方法表示子、ユーザセッション固有の識別子、ユーザセッションが作成された時間、セッションデータのロックタイプ、タイムアウト、セッションデータおよび切断時間のうちの少なくとも1つを、サーバにより保存する工程をさらに含む、請求項1に記載の方法。
【請求項17】
工程(b)は、
(b−a)第1のクライエントからユーザ資格をサーバにより受信することと、
(b−b)ユーザ資格を使用して、ユーザの認証をすることと、
(b−c)認証クッキーを作成することと、
(b−d)認証クッキーに関連付けられたクライエントセッションオブジェクトを作成することと、
(b−e)ユーザに関連付けられたユーザセッションオブジェクトを作成することと、
(b−f)クライエントセッションをユーザセッションに関連付けることと、
をさらに含む、請求項1に記載の方法。
【請求項18】
第1のクライエントと第2のクライエントのうち少なくとも1つから、サーバとの通信を確立する別の要求を受信する工程をさらに含む、請求項17に記載の方法。
【請求項19】
別の要求でクライエントセッションを確立する前に、サーバ上のクッキーと別の要求のヘッダにおけるクッキーとを比較することをさらに含む、請求項18に記載の方法。
【請求項20】
クライエント−サーバネットワークで通信するためのサーバであって、
(a)第1のクライエントからサーバとの通信セッションを確立する第1の要求と、第2のクライエントからサーバとの通信セッションを確立する第2の要求とを受信する受信器と、
(b)サーバとの通信セッションを確立する第1の要求に応答してユーザセッションを確立する、受信器と通信するユーザセッション機構と、
(c)サーバとの通信セッションを確立する第1の要求に応答して第1のクライエントセッションを確立する、受信器と通信するクライエントセッション機構と、
(d)第1のクライエントセッションの終了に応答して、ユーザセッションデータを保存するメモリ素子と、
を含み、
ユーザセッション機構は、第2の要求を受信する受信器に応答してユーザセッションを再起動するサーバ。
【請求項21】
ユーザセッション機構はイベント操作子を含む、請求項20に記載のサーバ。
【請求項22】
ユーザセッション機構はHTTPモジュールを含む、請求項20に記載のサーバ。
【請求項23】
メモリ素子はデータベースを含む、請求項20に記載のサーバ。
【請求項24】
ユーザセッション機構は、確立されたユーザセッションに状態を割り当てる、請求項20に記載のサーバ。
【請求項25】
ユーザセッション機構は、さらにアクティブ状態、完了状態、一時停止状態のうちの少なくとも1つからなる状態を割り当てる、請求項24に記載のサーバ。
【請求項26】
クライエント−サーバネットワークで通信するためのサーバであって、
(a)ユーザにより操作される第1のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
(b)受信された要求に応答して、識別されたユーザとのユーザセッションを確立するための手段と、
(c)受信された要求に応答して、第1のクライエントとのクライエントセッションを確立するための手段と、
(d)クライエントセッションの終了に応答して、ユーザセッションデータを保存するための手段と、
(e)ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
(f)ユーザセッションを再起動するための手段と、
を含むサーバ。
【請求項27】
その中にコンピュータ可読プログラム手段を具現化する製品であって、該製品は、
(a)第1のクライエントからサーバとの通信セッションを確立する第1の要求と、第2のクライエントからサーバとの通信セッションを確立する第2の要求とを受信するためのコンピュータ可読プログラム手段と、
(b)サーバとの通信セッションを確立する第1の要求に応答して、ユーザセッションを確立するためのコンピュータ可読プログラム手段と、
(c)サーバと通信セッションを確立する第1の要求に応答して、第1のクライエントセッションを確立するためのコンピュータ可読プログラム手段と、
(d)第1のクライエントセッションの終了に応答して、ユーザセッションデータを保存するためのコンピュータ可読プログラム手段と、
を含み、
第1の要求に応答してユーザセッションを確立するためのコンピュータ可読プログラム手段は、第2の要求を受信する受信器に応答して、ユーザセッションを再起動する製品。
【請求項1】
クライエント−サーバネットワークで通信する方法であって、該方法は、
(a)ユーザにより操作される第1のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
(b)受信された要求に応答して、サーバと識別されたユーザとの間のユーザセッションを確立する工程と、
(c)受信された要求に応答して、第1のクライエントとサーバとの間のクライエントセッションを確立する工程と、
(d)クライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存する工程と、
(e)ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求をサーバにより受信する工程と、
(f)ユーザセッションを再起動する工程と、
を含む方法。
【請求項2】
工程(a)は、サーバとの通信を確立する要求をサーバにより受信することを含み、該要求はユーザを識別する、請求項1に記載の方法。
【請求項3】
ユーザ認証資格をサーバにより受信する工程をさらに含む、請求項1に記載の方法。
【請求項4】
工程(a)は、サーバとの通信を確立するハイパーテキスト転送プロトコル(http)要求をサーバにより受信することを含む、請求項1に記載の方法。
【請求項5】
工程(d)は、
(d−a)第1のクライエントから終了メッセージを受信することと、
(d−b)第1のクライエントとサーバとの間のクライエントセッションを終了することと、
(d−c)第1のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項1に記載の方法。
【請求項6】
工程(d)は、
(d−a)所定期間待機することと、
(d−b)第1のクライエントとサーバとの間のクライエントセッションを終了することと、
(d−c)第1のクライエントとサーバとの間のクライエントセッションの終了に応答して、ユーザセッションデータをサーバにより保存することと、
をさらに含む、請求項1に記載の方法。
【請求項7】
工程(d)は、クライエントセッションの終了に応答して、データベースにユーザセッションデータをサーバにより保存することをさらに含む、請求項1に記載の方法。
【請求項8】
確立されたユーザセッションに状態を割り当てる工程をさらに含む、請求項1に記載の方法。
【請求項9】
工程(b)は、ユーザセッションがアクティブであることを示す確立されたユーザセッションに、識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項10】
工程(f)は、再起動されたユーザセッションがアクティブであることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項11】
工程(d)は、ユーザセッションが一時停止されていることを示すユーザセッションに識別子を割り当てることをさらに含む、請求項8に記載の方法。
【請求項12】
(g)ユーザセッション終了するためにユーザセッション終了メッセージを受信する工程と、
(h)ユーザセッションが完了したことを示すユーザセッションに識別子を割り当てる工程と、
をさらに含む、請求項1に記載の方法。
【請求項13】
保存されたユーザセッションデータを消去する工程をさらに含む、請求項12の方法。
【請求項14】
工程(e)は、
(e−a)ユーザにより操作される第1のクライエントと第2のクライエントのうち少なくとも1つから、サーバとの通信を確立する別の要求をサーバにより受信することと、
(e−b)ユーザに関連付けられ、確立されたユーザセッションの存在を、保存されたユーザセッションデータを使用して判定することと、
を含む、請求項1に記載の方法。
【請求項15】
確立されたユーザセッション存在の判定に応答して、ユーザセッションを再起動する工程をさらに含む、請求項14に記載の方法。
【請求項16】
工程(d)は、ユーザのためのユーザ識別子、ユーザを識別する名前、ユーザを認証するのに使用される方法を表す方法表示子、ユーザセッション固有の識別子、ユーザセッションが作成された時間、セッションデータのロックタイプ、タイムアウト、セッションデータおよび切断時間のうちの少なくとも1つを、サーバにより保存する工程をさらに含む、請求項1に記載の方法。
【請求項17】
工程(b)は、
(b−a)第1のクライエントからユーザ資格をサーバにより受信することと、
(b−b)ユーザ資格を使用して、ユーザの認証をすることと、
(b−c)認証クッキーを作成することと、
(b−d)認証クッキーに関連付けられたクライエントセッションオブジェクトを作成することと、
(b−e)ユーザに関連付けられたユーザセッションオブジェクトを作成することと、
(b−f)クライエントセッションをユーザセッションに関連付けることと、
をさらに含む、請求項1に記載の方法。
【請求項18】
第1のクライエントと第2のクライエントのうち少なくとも1つから、サーバとの通信を確立する別の要求を受信する工程をさらに含む、請求項17に記載の方法。
【請求項19】
別の要求でクライエントセッションを確立する前に、サーバ上のクッキーと別の要求のヘッダにおけるクッキーとを比較することをさらに含む、請求項18に記載の方法。
【請求項20】
クライエント−サーバネットワークで通信するためのサーバであって、
(a)第1のクライエントからサーバとの通信セッションを確立する第1の要求と、第2のクライエントからサーバとの通信セッションを確立する第2の要求とを受信する受信器と、
(b)サーバとの通信セッションを確立する第1の要求に応答してユーザセッションを確立する、受信器と通信するユーザセッション機構と、
(c)サーバとの通信セッションを確立する第1の要求に応答して第1のクライエントセッションを確立する、受信器と通信するクライエントセッション機構と、
(d)第1のクライエントセッションの終了に応答して、ユーザセッションデータを保存するメモリ素子と、
を含み、
ユーザセッション機構は、第2の要求を受信する受信器に応答してユーザセッションを再起動するサーバ。
【請求項21】
ユーザセッション機構はイベント操作子を含む、請求項20に記載のサーバ。
【請求項22】
ユーザセッション機構はHTTPモジュールを含む、請求項20に記載のサーバ。
【請求項23】
メモリ素子はデータベースを含む、請求項20に記載のサーバ。
【請求項24】
ユーザセッション機構は、確立されたユーザセッションに状態を割り当てる、請求項20に記載のサーバ。
【請求項25】
ユーザセッション機構は、さらにアクティブ状態、完了状態、一時停止状態のうちの少なくとも1つからなる状態を割り当てる、請求項24に記載のサーバ。
【請求項26】
クライエント−サーバネットワークで通信するためのサーバであって、
(a)ユーザにより操作される第1のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
(b)受信された要求に応答して、識別されたユーザとのユーザセッションを確立するための手段と、
(c)受信された要求に応答して、第1のクライエントとのクライエントセッションを確立するための手段と、
(d)クライエントセッションの終了に応答して、ユーザセッションデータを保存するための手段と、
(e)ユーザにより操作される第2のクライエントから、サーバとの通信を確立する要求を受信するための手段と、
(f)ユーザセッションを再起動するための手段と、
を含むサーバ。
【請求項27】
その中にコンピュータ可読プログラム手段を具現化する製品であって、該製品は、
(a)第1のクライエントからサーバとの通信セッションを確立する第1の要求と、第2のクライエントからサーバとの通信セッションを確立する第2の要求とを受信するためのコンピュータ可読プログラム手段と、
(b)サーバとの通信セッションを確立する第1の要求に応答して、ユーザセッションを確立するためのコンピュータ可読プログラム手段と、
(c)サーバと通信セッションを確立する第1の要求に応答して、第1のクライエントセッションを確立するためのコンピュータ可読プログラム手段と、
(d)第1のクライエントセッションの終了に応答して、ユーザセッションデータを保存するためのコンピュータ可読プログラム手段と、
を含み、
第1の要求に応答してユーザセッションを確立するためのコンピュータ可読プログラム手段は、第2の要求を受信する受信器に応答して、ユーザセッションを再起動する製品。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2006−502496(P2006−502496A)
【公表日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願番号】特願2004−543123(P2004−543123)
【出願日】平成15年10月3日(2003.10.3)
【国際出願番号】PCT/US2003/031381
【国際公開番号】WO2004/034192
【国際公開日】平成16年4月22日(2004.4.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
Linux
【出願人】(502239313)サイトリックス システムズ, インコーポレイテッド (36)
【Fターム(参考)】
【公表日】平成18年1月19日(2006.1.19)
【国際特許分類】
【出願日】平成15年10月3日(2003.10.3)
【国際出願番号】PCT/US2003/031381
【国際公開番号】WO2004/034192
【国際公開日】平成16年4月22日(2004.4.22)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
Linux
【出願人】(502239313)サイトリックス システムズ, インコーポレイテッド (36)
【Fターム(参考)】
[ Back to top ]