JP4302942B2 - Asp.net httpランタイム - Google Patents
Asp.net httpランタイム Download PDFInfo
- Publication number
- JP4302942B2 JP4302942B2 JP2002192640A JP2002192640A JP4302942B2 JP 4302942 B2 JP4302942 B2 JP 4302942B2 JP 2002192640 A JP2002192640 A JP 2002192640A JP 2002192640 A JP2002192640 A JP 2002192640A JP 4302942 B2 JP4302942 B2 JP 4302942B2
- Authority
- JP
- Japan
- Prior art keywords
- request
- event
- events
- http
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
この特許文書の開示の一部には、著作権保護の対象となる材料が含まれる。著作権所有者は、特許商標庁の特許ファイルまたは記録に現れる特許文書または特許開示の何人による複製にも異議はないが、それ以外では、すべての著作権を留保する。
【0002】
本発明はハイパーテキスト転送プロトコル(HTTP)要求の処理に関する。より詳細には、本発明はHTTP要求を処理するシステムおよび方法に関する。
【0003】
【従来の技術】
図2は、従来技術でHTTP要求を処理するウェブサイトアプリケーションの機能ブロック図を示す。クライアントコンピュータ202に置かれたウェブブラウザ201は、よく知られた方法で、インターネットなどのコンピュータネットワーク203を介して、選択されたURL205に対するホストサーバコンピュータ204にHTTP要求を送信する。ホストサーバコンピュータ204に特有のアプリケーション206を実行するホストサーバコンピュータ204は、HTTP要求を受信し、その要求の内容およびアプリケーション206の処理に基づいて、要求されたウェブページ205のコンテンツにアクセスする。そのHTTP要求への応答がウェブサーバ207によってウェブブラウザ201に送られる前に、アプリケーション206は、ホストサーバコンピュータ204上で実行中のソフトウェアを使用して要求されたウェブページ205を作成し、また、そのウェブページ205のコンテンツに基づいてウェブサービスプロキシなどのウェブサービス208を作成する。
【0004】
ホストサーバコンピュータ204上で実行中のソフトウェアが、例えば要求しているユーザを認証する機能モジュール209、要求しているユーザに要求されたウェブページにアクセスする権限が付与されているかどうかを判定する機能モジュール209、応答を暗号化するための機能モジュール209などを使用して、要求されたページを作成する前および/または後に、アプリケーション206は、選択された方法で要求を処理することもできる。JAVA(登録商標)サーブレットなどの機能モジュール209は、HTTP要求を連続した方法で処理する。すなわち、機能モジュール209aは、機能モジュール209bが要求を処理する前にその要求を処理するために選択され、機能モジュール209cは、機能モジュール209bの後に要求を処理するために選択される。例えば、機能モジュール209aは、アプリケーション206に対してユーザ認証を提供することができる。一旦、ユーザが認証されると、機能モジュール209bはユーザ認証を提供することができる。これに続いて、機能モジュール209cは、要求しているユーザの認証された識別(identification)に基づく広告機能を提供することができる。
【0005】
HTTPアプリケーション開発者が、カスタムロギング、インターネット規模のセキュリティ、またはデータのキャッシングなどのカスタマイズされた機能を含めるためにモジュール209の機能を変更することによってアプリケーション206の機能を変更する必要がある場合、開発者は、機能モジュールをカスタム生成すること、および/またはサードパーティによって開発された適切な機能モジュールを使用することが必要になる場合がある。
【0006】
【発明が解決しようとする課題】
この従来の手法に伴う問題は、新しい機能モジュールが既にその場にある別の機能モジュールと矛盾するように、アプリケーション開発者は他のすべての機能モジュールの処理を完全に理解する必要があるということである。さらに、アプリケーション開発者が処理シーケンスのどこに新しい機能モジュールまたは更新された機能モジュールを挿入するかを正確に知ることは困難である。また、ウェブサイトがユーザに対して比較的高速なウェブサイトとしてみえるように、ホストサーバコンピュータ204上で実行中のソフトウェアが要求されたウェブページを作成する前に、要求しているユーザに対して機能モジュールがコンテンツおよび/またはヘッダーを提示する状況では、そのコンテンツおよび/またはヘッダーは処理に対して最早使用可能ではないので、従来型の処理シーケンスで後に機能モジュールによって実行されるいかなる要求処理も最早実行することはできない。
【0007】
HTTPアプリケーション開発者がHTTPアプリケーションに容易に機能を追加する方法が求められている。さらに、異なるモジュール開発者によって開発されたHTTPモジュールが多くのHTTPアプリケーションと共存することができるような、アプリケーション間で再利用可能な機能を作成する方法も求められている。さらに、別の機能モジュールと矛盾する可能性のある機能モジュールの連続した配置を避ける、HTTP要求の処理を提供する方法も求められている。
【0008】
【課題を解決するための手段】
本発明は、HTTPアプリケーション開発者がHTTPアプリケーションに容易に機能を追加する方法を提供する。さらに、本発明は、異なるモジュール開発者によって開発されたHTTPモジュールが多くのHTTPアプリケーションと共存することができるような、アプリケーション間で再使用可能な機能を作成する方法も提供する。本発明は、また、別の機能モジュールと矛盾する可能性のある機能モジュールの連続した配置を避ける、HTTP要求の処理を提供する方法も提供する。
【0009】
これらの利点を達成するために、本発明は、HTTPアプリケーションおよびHTTPモジュールが要求/応答サイクルの異なる段階で加わえるように、オブジェクト指向型でイベント駆動型のインフラストラクチャを公開することによって、HTTP要求に応答するためのアプリケーションランタイムを提供する。すなわち、HTTP要求の存続期間中に同期式要求イベントまたは非同期式要求イベントが発生されるとき、コールバックに対してメソッドが登録される。
【0010】
本発明によれば、HTTP要求処理ランタイムは、コンテキストオブジェクトおよびイベントパイプラインを含む。コンテキストオブジェクトは、ホストアプリケーションでクライアントアプリケーションから受け取ったHTTP要求を解析することによって作成され、そのHTTP要求を論理的に表す。コンテキストオブジェクトは、受け取ったHTTP要求に関連するプロパティ(properties)を好適にカプセル化する。コンテキストオブジェクトは、複数の要求イベントを含むイベントパイプラインによって処理される。このパイプラインは、1つのHTTP要求を一度に処理し、そのパイプラインが1つのHTTP要求の処理を完了すると、別のHTTP要求が処理される。各要求イベントは対応するイベントを有しており、要求イベントに対応するイベントが生じたとき、および少なくとも1つのアプリケーションまたはモジュールが要求イベントに関連付けて登録されるときに、その要求イベントはコールバックを生成する。各コールバックは、コンテキストオブジェクトを処理するための要求イベントに関連付けて登録される各モジュールをインスタンス生成(instantiates)する。複数の要求イベントは、決定論的な順番(deterministic order)で同期および/または非同期であるイベントを含むことが好ましい。さらに、複数の要求イベントは、エラーイベントなどの非決定論的な順番を有する少なくとも1つの要求を含むことができる。本発明によれば、モジュールには複数の要求イベントを登録することができる。
【0011】
【発明の実施の形態】
本発明は、同様の参照番号が同様の要素を示す添付の図面で例示として示されているものであって、この図面で限定されるものではない。
【0012】
本発明は、図1および3を参照してより容易に説明することができる。図1は、本発明の様々な態様を実施するために使用することができる従来型汎用デジタルコンピューティング環境の概略図である。図1では、コンピュータ100は、処理装置110、システムメモリ120、およびこのシステムメモリを含めて様々なシステム構成要素を処理装置110に結合するシステムバス130を含む。システムバス130は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャを使用するローカルバスを含めて複数タイプのバス構造のいずれかであってよい。システムメモリ120は、読み出し専用メモリ(ROM)140およびランダムアクセスメモリ(RAM)150を含む。
【0013】
コンピュータ100の要素間で、情報を例えば起動時中に転送するために役立つ基本ルーチンを含んでいる基本入出力システム160(BIOS)は、ROM140に記憶されている。コンピュータ100は、ハードディスク(図示せず)に対して読み出しおよび書き込みを行うためのハードディスクドライブ170、取り外し可能磁気ディスク190に対して読み出しおよび書き込みを行うための磁気ディスクドライブ180、およびCD−ROMまたは他の光学媒体などの取り外し可能光学ディスク192に対して読み出しおよび書き込みを行うための光学ディスクドライブ191も含む。ハードディスクドライブ170、磁気ディスクドライブ180、および光学ディスクドライブ191は、それぞれハードディスクドライブインターフェース192、磁気ディスクドライブインターフェース193、および光学ディスクドライブインターフェース194によってシステムバス130に接続されている。これらのドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ100のための他のデータの不揮発性記憶装置を提供する。コンピュータによってアクセス可能なデータを記憶することができる別のタイプのコンピュータ可読媒体、例えば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、Bemoulliのカートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)なども例示的動作環境内で使用することができることが、当業者には明らかになろう。
【0014】
オペレーティングシステム195、1つまたは複数のアプリケーションプログラム196、他のプログラムモジュール197およびプログラムデータ198を含めていくつかのプログラムモジュールを、ハードディスクドライブ170、磁気ディスク190、光学ディスク192、ROM140またはRAM150に記憶することができる。ユーザは、キーボード101およびポインティングデバイス102などの入力装置を介してコンピュータ100にコマンドおよび情報を入力することができる。その他の入力装置(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含むことができる。これらおよび他の入力装置は、システムバスに結合されているシリアルポートインターフェース106を介して処理装置110に接続されることが多いが、他のインターフェース、例えばパラレル・ポート、ゲーム・ポート、またはユニバーサルシリアルバス(USB)などによって接続することもできる。さらに、これらの装置は、適切なインターフェース(図示せず)を介してシステムバス130に直接的に結合することができる。モニタ107または他のタイプの表示装置を、ビデオアダプタ108などのインターフェースを介してシステムバス130に接続することもできる。パーソナルコンピュータは、通常、モニタに加えてスピーカーおよびプリンタなどの他の周辺出力装置(図示せず)を含む。
【0015】
コンピュータ100は、遠隔コンピュータ109などの1つまたは複数の遠隔コンピュータへの論理接続によってネットワーク接続された環境で動作することができる。遠隔コンピュータ109は、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通ネットワークノードであってよく、通常は、コンピュータ100に関して述べた上記要素の多くのものまたはその全てを含む。但し、図1には記憶装置111しか示していない。図1に示す論理接続には、ローカルエリアネットワーク(LAN)112およびワイドエリアネットワーク(WAN)113が含まれる。このようなネットワーク接続された環境は、事務所、企業内コンピュータネットワーク、イントラネットおよびインターネットでは一般的なものである。
【0016】
LANネットワーク接続環境で使用されるとき、コンピュータ100は、ネットワークインターフェースまたはアダプタ114を介してローカルエリアネットワーク112に接続される。WANネットワーク接続環境で使用されるとき、パーソナルコンピュータ100は、通常、モデム115、またはインターネットなどのワイドエリアネットワーク113を介して通信を確立する他の装置を含む。モデム115は内部モデムであっても外部モデムであってもよく、シリアルポートインターフェース106を介してシステムバス130に接続される。ネットワーク接続された環境では、パーソナルコンピュータ100に関して述べたプログラムモジュール、またはその一部は遠隔記憶装置に記憶することができる。
【0017】
図示したネットワーク接続は例示的なものであって、コンピュータ間に通信リンクを確立する他の技術を使用することができることも理解されよう。TCP/IP、Ethernet(登録商標)、FTP、HTTPなどの様々な周知のプロトコルのいずれかの存在が想定され、システムは、ユーザに対してウェブベースのサーバからウェブページを取り出すことを可能にするためにクライアント・サーバ構成で動作することができる。ウェブページ上にデータを表示し、かつ操作するために、様々な従来型ウェブブラウザのどれでも使用することができる。
【0018】
本発明の主要な態様は、HTTP要求に応答するイベントベースのアプリケーションランタイムを提供する。より具体的には、本発明のASP.NET HTTPランタイムは、要求/応答サイクルの異なる段階で加わる高機能のアプリケーションを作成するために、アプリケーション開発者に対してオブジェクト指向型でイベント駆動型のインフラストラクチャを公開する。例えば、本発明のASP.NET HTTPランタイムによって、アプリケーション開発者はHTTPアプリケーションを開発することができ、および/またはモジュール開発者は、任意の.NET言語で書かれたアプリケーションを使用して個々のHTTP要求をインターセプトし、それによって加わり、および/またはそれを変更するための再使用可能なHTTPモジュールを開発することができる。これを達成するために、本発明は、HTTPアプリケーション開発者および/またはHTTPモジュール開発者が、HTTP要求の存続期間中の特定の段階で呼び出されるメソッドをアプリケーションに登録することを可能にする。メソッドが登録されるこのインフラストラクチャは、従来型ウェブサーバのアプリケーションプログラムインターフェース(API)フィルタに対する論理.NETの代替品である。さらに、本発明は、ASP.NETの機能を変更することを可能にする。例えば、ASP.NETが特定のエリア内で十分な機能を提供しない場合、開発者は、基礎となるインフラストラクチャに関してより多くの知識を有する開発者の一部に対して準備されたレベルで、基礎となるアプリケーションインフラストラクチャを変更することができる。
【0019】
図3は、本発明によるASP.NET HTTPランタイムを使用したHTTP要求を処理するウェブサイトアプリケーションの機能ブロック図である。ASP.NET HTTP要求処理ランタイムのアーキテクチャは、HTTP要求からHTTPContextオブジェクトを作成するアプリケーションと、HTTPContextオブジェクトの存続期間中(すなわち、HTTP要求の存続期間中)にコールバックを生成するイベントパイプラインとを提供する。HTTPContextオブジェクトは、受け取ったHTTP要求に関連付けられており、その要求を処理するために必要なすべてのプロパティをカプセル化することによってその受け取ったHTTP要求を論理的に表す。コールバックは、HTTPアプリケーションによって、また、HTTPモジュールが初期化されたときにイベントに登録するHTTPモジュールによって使用される。GLOBAL.ASAXは進行中にコンパイルされたものであり、いかなるパイプラインイベントに対するイベントハンドラをも含むことができるアプリケーションコードを含んでいるので、このGLOBAL.ASAXはイベントの登録には必要ではない。このイベントハンドラは、命名規則によって自動的にフックされる。例えば、アプリケーションコード(GLOBAL.ASAX内にあるか、または事前コンパイルされている)がApplication_BeginRequestと命名されたメソッドを含んでいるとき、そのアプリケーションコードは、BeginRequestイベントに自動的にフックアップされることになる。したがって、イベントは、モジュールでもアプリケーションコードでも処理することができる。モジュールは複数のアプリケーション間で再使用可能なので、モジュールを使用することが好ましい。本発明は、受け取った複数のHTTP要求を処理するためのイベントパイプラインのインスタンシエーションを生成する。
【0020】
イベントパイプラインは、要求イベントが発生されるときにコールバックを生成するための複数の要求イベントを含むイベントベースのアーキテクチャを提供する。1つまたは複数の要求イベントが登録される各HTTPモジュールは、パイプラインがインスタンス生成される(instantiated)ときにインスタンス生成される。したがって、アプリケーション開発者は、要求の存続期間中に選択されたイベントで要求をインターセプトし、それによって加わり、またはそれを変更するアプリケーションを開発することができる。同様に、HTTPモジュール開発者は、要求の存続期間中に選択されたイベントで要求をインターセプトし、これによって加わり、またはこれを変更するHTTPモジュールを開発することができる。さらに、アプリケーションは、発生される要求イベントに基づいてResponse.End()メソッドを呼び出すことによって要求のさらなる処理を終了することができる。実行される最後のイベントは、モジュールがクリーンアップ操作を実行することができるように、常にEndRequestイベントである。
【0021】
再度図3を参照すると、実行中のホスト、例えばIIS(インターネット情報サーバ)5またはIIS6はHTTP要求を受け取る(図3には示さず)。受け取られた要求は本発明のASP.NETランタイムに渡され、そこでこの要求は周知の方法で解析され、要求を処理するために必要となる受け取られたHTTP要求に関連するすべてのプロパティをカプセル化するHTTPContextオブジェクトを作成する。アプリケーションがインスタンス生成され、要求の処理がHTTPハンドラ「方向に」イベントパイプラインを通って(要求イベント301および302によって示す)進む。要求の存続期間はイベントパイプラインを通って進むので、決定論的な要求イベント(deterministic request event)のそれぞれが発生される。特定の要求イベントが登録されるHTTPモジュール、またはGlobal.asaxに含まれているイベントシンクを有するHTTPモジュールは、特定の要求イベントが発生されるときに呼び出される。要求されたウェブページをHTTPハンドラが生成した後、処理はイベントパイプラインを通して続行する。すべての要求イベントの発生が完了し、すべてのHTTPモジュールが要求を処理し終わると、ホストは、要求された(かつ処理された)ウェブページを送ることによって要求に応答する。
【0022】
図3には3つの要求イベント301、302および303と、3つのHTTPモジュール304、305および306しか示していないが、使用される要求イベントおよびHTTPモジュールの数はこれ以上であってもこれ以下であってもよいことを理解されたい。複数のHTTPモジュールに特定の要求イベントを登録できることを理解されたい。図3は、HTTPモジュール304〜306への要求イベント301〜303の例示的登録を示す。HTTPモジュールと要求イベントとの間に延びた線は登録を示している。図3では、3つの例示的HTTPモジュール304、305および306には要求イベント302が登録されており、したがって3つのモジュール304〜306はすべて、要求イベント302によって発生される同じコールバックに基づいて1つのHTTP要求を処理する。HTTPモジュール305には、1つの要求イベントだけが登録されているように示されている。HTTPモジュールは、そのHTTPモジュールがそのモジュールに登録されたモジュールと同じ数だけコールバックを受け取るように、複数の要求イベントを登録することも可能である。例えば、図3は、HTTPモジュール304に要求イベント301および302が登録されていることを示している。同様に、HTTPモジュール306には要求イベント302および303が登録されている。
【0023】
本発明によれば、イベントパイプラインは、10個の決定論的な要求イベントと、3個の非決定論的な要求イベント(non−deterministic request event)とを含むことが好ましい。さらに、決定論的な要求イベントは同期式要求イベントであっても非同期式要求イベントであってもよい。(同期式)決定論的なイベントには、好ましい順番で以下のものが含まれる。
BeginRequest
AuthenticateRequest
AuthorizeRequest
ResolveRequestCache
AcquireRequestState
PreRequestHandlerExecute
PostRequestHandlerExecute
ReleaseRequestState
UpdateRequestCacheEndRequest
EndRequest
【0024】
当然ながら、決定論的な要求イベントの順番は、アプリケーションの要件に応じて再構成することができる。非決定論的な要求イベントには、以下のものが含まれる。
Error
PreSendRequestContent
PreSendRequesrHeaders
コールバックを生成するために、イベントパイプラインはこれ以上またはこれ以下の要求を含むことができ、および/またはその他の決定論的な要求イベントおよび非決定論的な要求イベントを含むことができることも理解されたい。
【0025】
HTTP要求の処理の開始時にBeginRequestイベントが発生される。AuthenticateRequestイベントは、アプリケーションがユーザの認証を必要とするHTTP要求の存続期間中のある時点で発生される。AuthorizeRequestイベントは、ユーザに特定の要求に対する応答を受け取る権限が付与されているかどうかをアプリケーションが判定する必要があるときに発生される。ResolveRequestCacheイベントは、要求への応答のすべてがキャッシュ済みであるかどうかを判定することがアプリケーションに要求されているときに発生される。これによって、要求されたページを作成し、また、要求しているユーザに応答を戻すために必要となる時間が短縮される場合がある。この時点で、HTTPハンドラが作成される。AcquireRequestStateイベントは、クライアント接続に関連付けられた付加的状態を取得するためと、ASP.NETセッション状態を列挙(list)するために発生される。個別設定モジュールは、例えばAcquireRequestStateイベントを使用することができる。AcquireRequestStateイベントはHTTPハンドラが作成された後に発生され、したがってモジュールはHTTPハンドラを検査し、どの種類の状態が必要とされているかを判断することができる。PreRequestHandlerExecuteイベントは、要求ハンドラが要求されたウェブページを作成する前に発生される。同様にして、PostRequestHandlerExecuteイベントは、要求されたウェブページを要求ハンドラが作成し終わったときに発生される。ReleaseRequestStateイベントは、AcquireRequestStateで取得されたいかなる状態の変化をも保存する機会をモジュールに与えるために発生される。例えば、セッション状態モジュールはReleaseRequestStateイベントを使用してセッションデータを保存することができる。UpdateRequestCacheイベントは、応答がキャッシュ可能な場合、(同じページに対する後続のHTTP要求に対して)後でその応答をResolveRequestCache内で発見できるように、その要求の処理中の、応答を保存するためにキャッシュが更新されるべきときに発生される。最後に、要求の処理が完了したときにEndRequestイベントが発生される。
【0026】
例えばアプリケーションコードによってキャッチされない例外条件が生成されるなどのエラー状態が発生したときは、非決定論的なErrorイベントが発生される。PreSendRequestContentイベントは、HTTPハンドラが要求を処理する前に、要求しているクライアントにコンテンツが送られ始めると発生される。同様に、PreSendRequestHeadersイベントは、HTTPハンドラが要求を処理する前に、要求しているクライアントにヘッダが送られ始めると発生される。PreSendRequestContent要求イベントおよびPreSendRequestHeader要求イベントの目的は、要求しているクライアントアプリケーションにコンテンツおよび/またはヘッダが送られる前に、そのコンテンツおよび/またはヘッダを別のメソッドが処理できるようにすることである。上記で指摘した通り、要求されたウェブページをHTTPハンドラが作成する前に機能モジュールがコンテンツおよび/またはヘッダを提示するという状況においては、そのコンテンツおよび/またはヘッダは処理のためには最早使用可能ではないので、従来型の処理シーケンスでは後で行われるような機能モジュールによって実行されるいかなる処理も実行されない。
【0027】
Interceptionイベントは、インテリジェントエラー処理コードと共にアプリケーションをラッピングするために有効に使用することができる。アプリケーションで何らかの予期せぬことが発生し、Errorイベントが発生される状況において、本発明は、その予期せぬ状況をどのように処理するかを決定するためのフレキシビリティを開発者に提供する。例えば、現行でログオンしているユーザ全員の現行の状態は、エラーをログしてシステム管理者に通知することに加えて、XMLファイルにログすることもできる。エラー状態が訂正され、アプリケーションが正常に実行され始めるとき、アプリケーションは、XMLファイルを使用したエラー状態が原因でドロップしたエンドユーザにコンタクトするように設計することができる。
【0028】
Interceptionイベントは、Global.asaxアプリケーションファイルを使用して開発することができるが、IHttpModuleインターフェースを実施する事前コンパイルされた構成要素であってもよい。Microsoft(登録商標)のVISUALBASICブランドのプログラミング言語に準拠した以下の疑似コードは例示的なGlobal.asaxを示している。
【0029】
HTTPモジュールは、System.Web.IHttpModuleインターフェースを実施するクラスとして作成されており、任意のHTTPアプリケーションイベントに同期するためのInit()メソッドを使用する。以下の疑似コードはHTTPモジュールの一例である。
HTTPモジュールはコンパイルされ、.Net Library DLLが「bin」ディレクトリにあるアプリケーションのvrootの下に置かれる。HTTPモジュールは以下の例示的疑似コードを使用してconfig.webに登録される。
【0030】
ASP.NETプロセスを実行するプロセス中では、コードを実行するためにスレッドが使用される。スレッドはリソースであり、ASP.NETが使用することができるスレッドは無数にある。
【0031】
本発明によれば、ASP.NETは、アプリケーション開発者の制御下でアプリケーションの存続期間を通してスレッドの数を拡張、短縮するスレッドプールを作成して管理する。
【0032】
場合によっては、ネットワークI/Oなどのアプリケーションコードはプロセスでスレッドをストールする可能性がある。これは、そのスレッドが、この比較的遅いネットワークI/Oの動作が完了するまで待機する(すなわち、スレッドがブロックされる)必要があるからである。スレッドがブロックされると、そのスレッドは要求に応えるために使用することはできず、したがって、その要求は要求のキューに入れられ、アプリケーションのパフォーマンスを低下させることになる。これは、すべてのスレッドが、待機中に作業を行うのではなく、ブロックされるからである。このような状況を回避するため、本発明は、非同期式イベントに対するサポートと同期式イベントに対するサポートを提供する。したがって、本発明は、非同期式IOを容易にするために、ウェブサービスプロキシなどの、ネットワーククラスがI/O完了ポートをサポートするネットワークを介して操作を実行するアプリケーションをサポートする。
【0033】
本発明は、それぞれが同期式決定論的な要求イベントに対応する10個の非同期式要求イベントもサポートする。非同期式要求イベントは以下の順番で発生される。
AddOnBeginRequestAsync
AddOnAuthenticateRequsetAsync
AddOnAuthorizeRequestAsync
AddOnResolveRequestCacheAsync
AddOnAcquireRequesrStateAsync
AddOnPreRequestHandlerExecuteAsync
AddOnPostRequestHandlerExecuteAsync
AddOnReleaseRequestStateAsync
AddOnUpdateRequestCacheAsync
AddOnEndRequestAsync
【0034】
global.asax内の非同期式イベントを使用するために、イベントのプロトタイプは、HTTPアプリケーション内に仮想(virtual)としてマーク付けされているInit()メソッドを専用コードで置き換えることによって、イベントパイプライン内に手動で作成またはワイヤアップしなければならない。例えばOnBeginRequestイベントの非同期式バージョンであるAddOnBeginRequestAsyncイベントをワイヤアップするには、ApplicationInstanceのAddOnBeginRequestAsyncメソッドが呼び出されて2つのイベントハンドラ内に渡される場合がある。以下の例示的疑似コードはこれを示している。
【0035】
上記の例示的疑似コードでは、イベントの実行中に呼び出される2つのメンバメソッド(BeginおよびEnd)内に渡すことによって新しいBeginEventHandlerおよび新しいEndEventHandlerが作成される。アプリケーション開発者は、両方のイベントハンドラを実施することが必要となる場合もある。例えば、Begin()ハンドラは、別のスレッドで行われる以下の例示的疑似コードで示すように、SimpleAsyncResultと定義されるカスタムクラスのインスタンスを使用する。
【0036】
IAsyncResultインターフェースを実施するクラスの例示的実施態様を以下の疑似コードで示す。
【0037】
以下の例示的疑似コードによって示すように、必要に応じていかなるオープンリソースをもクリーンアップするためにEndイベントを使用することができる。
【0038】
ASP.NETは同期式アプリケーションイベントおよび非同期式アプリケーションイベントの両方をサポートするので、アプリケーション開発者はアプリケーションを構築するためにより多くの選択肢を有する。イベントを非同期式になるように符号化することによって、ASP.NETのワーカースレッドを、非同期式スレッド上で実行されるコードが完了するまで他の要求に応えるように解放する。これによって、要求に応えるために使用されるASP.NETスレッドはブロックされないので、より優れた拡張性が得られる。
【0039】
本発明は、本発明の実行に現時点で好適なモードを含めて特定の例示に関して説明したが、当業者ならば、上記のシステムおよび技術には、頭記の特許請求の範囲に記載の本発明の趣旨および範囲に含まれる無数の変形形態および並べ替えがあることが理解されよう。
【図面の簡単な説明】
【図1】本発明の様々な態様を実施するために使用することができる従来型汎用デジタルコンピューティング環境の概略図である。
【図2】従来の方法でHTTP要求を処理するウェブサイトアプリケーションの機能ブロック図である。
【図3】本発明によるASP.NET HTTPランタイムを使用してHTTP要求を処理するウェブサイトアプリケーションの機能ブロック図である。
【符号の説明】
100 コンピュータ
120 システムメモリ
130 システムバス
202 クライアントコンピュータ
204 ホストサーバコンピュータ
206 アプリケーション
301 要求イベント
302 要求イベント
303 要求イベント
304 HTTPモジュール
305 HTTPモジュール
306 HTTPモジュール
Claims (32)
- コンピュータを、
ホストアプリケーションでクライアントアプリケーションから受け取ったハイパーテキスト転送プロトコル(HTTP)要求を論理的に表す手段であって、前記受け取ったHTTP要求に関連する少なくとも1つのプロパティをカプセル化する手段、並びに、
該手段に対応する手段であって、各要求イベントは対応するイベントを有し、及び、前記要求イベントに対応する前記イベントが生じたときに前記要求イベントに関連付けてアプリケーションとモジュールが登録されていればコールバックを生成し、各コールバックが、前記要求イベントに関連付けて登録される各アプリケーションと各モジュールを開始して前記表す手段を処理する手段
として機能させるプログラム。 - 前記複数の要求イベントは決定論的な順番(deterministic order)を有することを特徴とする請求項1に記載のプログラム。
- 前記複数の要求イベントのうち少なくとも1つは同期式要求イベントであることを特徴とする請求項2に記載のプログラム。
- 前記複数の要求イベントのうち少なくとも1つは非同期式要求イベントであることを特徴とする請求項2に記載のプログラム。
- 前記複数の要求イベントは非決定論的な順番(non-deterministic order)を有する少なくとも1つの要求イベントをさらに含むことを特徴とする請求項2に記載のプログラム。
- 前記複数の要求イベントは非決定論的な順番を有することを特徴とする請求項1に記載のプログラム。
- 前記複数の非決定論的な順番の要求イベントはエラーイベントを含むことを特徴とする請求項6に記載のプログラム。
- モジュールが複数の要求イベントに関連付けられて登録されることを特徴とする請求項1に記載のプログラム。
- 前記複数の要求イベントを有する手段は、前記ホストアプリケーションでクライアントアプリケーションから受け取った各HTTP要求について該手段の別個のインスタンスであることを特徴とする請求項1に記載のプログラム。
- 前記カプセル化する手段は、前記受け取ったHTTP要求を解析して、前記HTTP要求を論理的に表すことを特徴とする請求項1に記載のプログラム。
- ハイパーテキスト転送プロトコル(HTTP)要求を処理する方法であって、
ホストアプリケーションでクライアントアプリケーションから受け取ったHTTP要求を論理的に表し、前記受け取った要求に関連する少なくとも1つのプロパティをカプセル化するコンテキストオブジェクトを形成するステップと、
前記コンテキストオブジェクトに対応し、それぞれが対応するイベントを有する複数の要求イベントを有するイベントパイプラインを形成するステップと、
要求イベントに対応するイベントが生じ且つ前記要求イベントに関連してアプリケーションとモジュールが登録されたときにコールバックを生成するステップと、
前記コンテキストオブジェクトを処理するための前記コールバックに応答して、前記要求イベントに関連付けて登録される各アプリケーションと各モジュールを開始するステップと
を含むことを特徴とする方法。 - 少なくとも1つの選択された要求イベントに関連付けてモジュールを登録するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 選択された要求イベントに関連付けて複数のモジュールを登録するステップをさらに含むことを特徴とする請求項11に記載の方法。
- 前記複数の要求イベントは決定論的な順番を有することを特徴とする請求項11に記載の方法。
- 前記複数の要求イベントのうち少なくとも1つは同期式要求イベントであることを特徴とする請求項14に記載の方法。
- 前記複数の要求イベントのうち少なくとも1つは非同期式要求イベントであることを特徴とする請求項14に記載の方法。
- 前記複数の要求イベントは非決定論的な順番を有する少なくとも1つの要求イベントをさらに含むことを特徴とする請求項16に記載の方法。
- 前記複数の要求イベントは非決定論的な順番を有することを特徴とする請求項11に記載の方法。
- 前記複数の非決定論的な順番の要求イベントはエラーイベントを含むことを特徴とする請求項18に記載の方法。
- 前記コンテキストオブジェクトに対応する前記イベントパイプラインを形成する前記ステップでは、前記ホストアプリケーションでクライアントアプリケーションから受け取った各HTTP要求について別個のインスタンスとして前記イベントパイプラインを形成することを特徴とする請求項11に記載の方法。
- 前記コンテキストオブジェクトを形成する前記ステップは、前記受け取ったHTTP要求を解析して前記コンテキストオブジェクトを形成するステップを含むことを特徴とする請求項11に記載の方法。
- コンピュータを、
ホストアプリケーションでクライアントアプリケーションから受け取ったハイパーテキスト転送プロトコル(HTTP)要求を論理的に表し、前記受け取った要求に関連する少なくとも1つのプロパティをカプセル化するコンテキストオブジェクトを形成する手段、
前記コンテキストオブジェクトに対応し、それぞれが対応するイベントを有する複数の要求イベントを有するイベントパイプラインを形成する手段、
要求イベントに対応するイベントが生じ且つ前記要求イベントに関連してアプリケーションとモジュールが登録されたときにコールバックを生成する手段、並びに、
前記コンテキストオブジェクトを処理するための前記コールバックに応答して、前記要求イベントに関連付けて登録される各アプリケーションと各モジュールを開始する手段
として機能させるプログラムを含むコンピュータ可読媒体。 - 前記プログラムは前記コンピュータを、少なくとも1つの選択された要求イベントに関連付けてモジュールを登録する手段としてさらに機能させることを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記プログラムは前記コンピュータを、選択された要求イベントに関連付けて複数のモジュールを登録する手段としてさらに機能させることを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記複数の要求イベントは決定論的な順番を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記複数の要求イベントのうち少なくとも1つは同期式要求イベントであることを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記複数の要求イベントのうち少なくとも1つは非同期式要求イベントであることを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記複数の要求イベントは非決定論的な順番を有する少なくとも1つの要求イベントをさらに含むことを特徴とする請求項25に記載のコンピュータ可読媒体。
- 前記複数の要求イベントは非決定論的な順番を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記複数の非決定論的な順番の要求イベントはエラーイベントを含むことを特徴とする請求項29に記載のコンピュータ可読媒体。
- 前記イベントパイプラインを形成する前記手段は、ホストアプリケーションでクライアントアプリケーションから受け取った各HTTP要求について別個のインスタンスとして前記イベントパイプラインを形成することを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記コンテキストオブジェクトを形成する前記手段は、前記受け取ったHTTP要求を解析して、前記コンテキストオブジェクトを形成することを特徴とする請求項22に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/894,828 | 2001-06-29 | ||
US09/894,828 US7162723B2 (en) | 2001-06-29 | 2001-06-29 | ASP.NET HTTP runtime |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003076560A JP2003076560A (ja) | 2003-03-14 |
JP4302942B2 true JP4302942B2 (ja) | 2009-07-29 |
Family
ID=25403577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002192640A Expired - Fee Related JP4302942B2 (ja) | 2001-06-29 | 2002-07-01 | Asp.net httpランタイム |
Country Status (8)
Country | Link |
---|---|
US (2) | US7162723B2 (ja) |
EP (1) | EP1271883B1 (ja) |
JP (1) | JP4302942B2 (ja) |
AT (1) | ATE326106T1 (ja) |
DE (1) | DE60211254T2 (ja) |
DK (1) | DK1271883T3 (ja) |
ES (1) | ES2263707T3 (ja) |
PT (1) | PT1271883E (ja) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6985946B1 (en) * | 2000-05-12 | 2006-01-10 | Microsoft Corporation | Authentication and authorization pipeline architecture for use in a web server |
US6792607B1 (en) | 2000-05-18 | 2004-09-14 | Microsoft Corporation | Databinding using server-side control objects |
US6961750B1 (en) | 2000-05-18 | 2005-11-01 | Microsoft Corp. | Server-side control objects for processing client-side user interface elements |
US6757900B1 (en) | 2000-05-18 | 2004-06-29 | Microsoft Corporation | State management of server-side control objects |
US7013340B1 (en) * | 2000-05-18 | 2006-03-14 | Microsoft Corporation | Postback input handling by server-side control objects |
US6990653B1 (en) | 2000-05-18 | 2006-01-24 | Microsoft Corporation | Server-side code generation from a dynamic web page content file |
US7380250B2 (en) * | 2001-03-16 | 2008-05-27 | Microsoft Corporation | Method and system for interacting with devices having different capabilities |
US7493397B1 (en) * | 2001-06-06 | 2009-02-17 | Microsoft Corporation | Providing remote processing services over a distributed communications network |
US6898604B1 (en) | 2001-06-29 | 2005-05-24 | Microsoft Corporation | XML serialization and deserialization |
US7120897B2 (en) * | 2001-07-10 | 2006-10-10 | Microsoft Corporation | User control objects for providing server-side code generation from a user-defined dynamic web page content file |
US7103810B2 (en) * | 2002-04-18 | 2006-09-05 | International Business Machines Corporation | System for the tracking of errors in a communication network enabling users to selectively bypass system error logs and make real-time responses to detected errors |
US20030233477A1 (en) * | 2002-06-17 | 2003-12-18 | Microsoft Corporation | Extensible infrastructure for manipulating messages communicated over a distributed network |
US7603430B1 (en) | 2002-07-09 | 2009-10-13 | Vignette Corporation | System and method of associating events with requests |
US7461120B1 (en) | 2002-07-09 | 2008-12-02 | Vignette Corporation | Method and system for identifying a visitor at a website server by requesting additional characteristic of a visitor computer from a visitor server |
US8117264B1 (en) | 2002-10-07 | 2012-02-14 | Yahoo! Inc. | Email system |
US7574653B2 (en) * | 2002-10-11 | 2009-08-11 | Microsoft Corporation | Adaptive image formatting control |
US9614772B1 (en) | 2003-10-20 | 2017-04-04 | F5 Networks, Inc. | System and method for directing network traffic in tunneling applications |
US7596782B2 (en) * | 2003-10-24 | 2009-09-29 | Microsoft Corporation | Software build extensibility |
US7890604B2 (en) * | 2004-05-07 | 2011-02-15 | Microsoft Corproation | Client-side callbacks to server events |
US20050251380A1 (en) * | 2004-05-10 | 2005-11-10 | Simon Calvert | Designer regions and Interactive control designers |
US9026578B2 (en) * | 2004-05-14 | 2015-05-05 | Microsoft Corporation | Systems and methods for persisting data between web pages |
US8065600B2 (en) | 2004-05-14 | 2011-11-22 | Microsoft Corporation | Systems and methods for defining web content navigation |
US7464386B2 (en) * | 2004-05-17 | 2008-12-09 | Microsoft Corporation | Data controls architecture |
US20060020883A1 (en) * | 2004-05-28 | 2006-01-26 | Microsoft Corporation | Web page personalization |
US8156448B2 (en) * | 2004-05-28 | 2012-04-10 | Microsoft Corporation | Site navigation and site navigation data source |
US7530058B2 (en) * | 2004-05-28 | 2009-05-05 | Microsoft Corporation | Non-compile pages |
US7657618B1 (en) * | 2004-10-15 | 2010-02-02 | F5 Networks, Inc. | Management of multiple client requests |
US8429655B2 (en) * | 2005-04-29 | 2013-04-23 | Microsoft Corporation | System and method for asynchronous processing in page lifecycle |
US7721278B2 (en) * | 2005-05-27 | 2010-05-18 | Microsoft Corporation | Modular server architecture for multi-environment HTTP request processing |
US7971198B2 (en) * | 2005-06-08 | 2011-06-28 | Unoweb Inc. | Method for global resource sharing having logically linked means and integrated functionality for building solutions |
JP4852906B2 (ja) * | 2005-06-24 | 2012-01-11 | 富士ゼロックス株式会社 | 連携処理システム及び装置 |
US8418233B1 (en) | 2005-07-29 | 2013-04-09 | F5 Networks, Inc. | Rule based extensible authentication |
US8533308B1 (en) | 2005-08-12 | 2013-09-10 | F5 Networks, Inc. | Network traffic management through protocol-configurable transaction processing |
US8565088B1 (en) | 2006-02-01 | 2013-10-22 | F5 Networks, Inc. | Selectively enabling packet concatenation based on a transaction boundary |
US7962922B2 (en) * | 2006-08-28 | 2011-06-14 | Microsoft Corporation | Delivering callbacks into secure application areas |
US9106606B1 (en) | 2007-02-05 | 2015-08-11 | F5 Networks, Inc. | Method, intermediate device and computer program code for maintaining persistency |
US8230052B2 (en) * | 2007-02-14 | 2012-07-24 | Microsoft Corporation | Module diagnostic toolkit for client-server based protocols |
US20090276791A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Techniques for facilitating server callbacks |
US9832069B1 (en) | 2008-05-30 | 2017-11-28 | F5 Networks, Inc. | Persistence based on server response in an IP multimedia subsystem (IMS) |
US9130846B1 (en) | 2008-08-27 | 2015-09-08 | F5 Networks, Inc. | Exposed control components for customizable load balancing and persistence |
US9356991B2 (en) | 2010-05-10 | 2016-05-31 | Litera Technology Llc | Systems and methods for a bidirectional multi-function communication module |
US8645490B2 (en) | 2010-06-08 | 2014-02-04 | Microsoft Corporation | Web site implementation by mapping expression evaluation |
US8938721B2 (en) | 2010-07-21 | 2015-01-20 | Microsoft Corporation | Measuring actual end user performance and availability of web applications |
US9420022B2 (en) | 2010-12-17 | 2016-08-16 | Microsoft Technology Licensing, Llc | Media requests to counter latency and minimize network bursts |
US9946581B2 (en) | 2010-12-17 | 2018-04-17 | Microsoft Technology Licensing, Llc | Exposing server functions to browser code |
CN103179173B (zh) * | 2011-12-26 | 2018-03-02 | 腾讯科技(深圳)有限公司 | 超文本传输系统、客户端和超文本传输方法 |
US10025689B2 (en) | 2016-01-22 | 2018-07-17 | International Business Machines Corporation | Enhanced policy editor with completion support and on demand validation |
US10191911B2 (en) * | 2017-05-27 | 2019-01-29 | Plesk International Gmbh | Permanent website hosting on mobile devices |
CN111600920B (zh) * | 2019-02-21 | 2024-03-05 | 北京京东尚科信息技术有限公司 | 基于js的数据请求代理方法、装置、设备及可读存储介质 |
Family Cites Families (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US279151A (en) * | 1883-06-12 | Thill loop or tug | ||
US286133A (en) * | 1883-10-02 | Systems | ||
US3937925A (en) * | 1974-06-25 | 1976-02-10 | Ibm Corporation | Modular transaction terminal with microprocessor control |
US3956615A (en) * | 1974-06-25 | 1976-05-11 | Ibm Corporation | Transaction execution system with secure data storage and communications |
US4186871A (en) * | 1978-03-01 | 1980-02-05 | International Business Machines Corporation | Transaction execution system with secure encryption key storage and communications |
US4847785A (en) * | 1985-01-22 | 1989-07-11 | International Business Machines Corp. | Interactive display for trend or bar graph |
US4807154A (en) * | 1987-01-29 | 1989-02-21 | International Business Machines Corporation | Method for developing automatic replies in an interactive electronic calendaring system |
US4949300A (en) * | 1988-01-07 | 1990-08-14 | International Business Machines Corporation | Sharing word-processing functions among multiple processors |
US4979148A (en) * | 1988-12-09 | 1990-12-18 | International Business Machines Corporation | Increasing options in mapping ROM in computer memory space |
JPH0778728B2 (ja) * | 1990-12-21 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ヘルプ・パネルのアップロード処理自動化方法 |
US5517655A (en) * | 1991-04-26 | 1996-05-14 | Hewlett-Packard Company | Method for monitoring transactions in an object-oriented environment |
CA2061298C (en) * | 1992-02-17 | 1996-12-03 | Douglas J. Mortson | Method for detecting critical failures during the building of complex computer programs from source code parts |
US5388156A (en) * | 1992-02-26 | 1995-02-07 | International Business Machines Corp. | Personal computer system with security features and method |
US5918007A (en) * | 1992-05-27 | 1999-06-29 | International Business Machines Corporation | Trusted personal computer system with limited accessibility |
GB2269722A (en) * | 1992-08-14 | 1994-02-16 | Ibm | Communications device |
US5299315A (en) * | 1992-09-17 | 1994-03-29 | International Business Machines Corp. | Personal computer with programmable threshold FIFO registers for data transfer |
US5465332A (en) * | 1992-09-21 | 1995-11-07 | International Business Machines Corporation | Selectable 8/16 bit DMA channels for "ISA" bus |
JP2511233B2 (ja) | 1993-02-12 | 1996-06-26 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 画像表示装置 |
US5812996A (en) | 1994-07-12 | 1998-09-22 | Sybase, Inc. | Database system with methods for optimizing query performance with a buffer manager |
US5706505A (en) * | 1994-08-19 | 1998-01-06 | Microsoft Corporation | Method and system for binding data in a computer system |
US5675520A (en) * | 1995-03-30 | 1997-10-07 | Microsoft Corporation | Method for extending a common user interface |
US5911068A (en) * | 1995-03-30 | 1999-06-08 | Microsoft Corporation | Container independent control architecture |
US5548340A (en) * | 1995-05-31 | 1996-08-20 | International Business Machines Corporation | Intelligent television receivers combinations including video displays, and methods for diversion of television viewers by visual image modification |
US5940847A (en) * | 1995-06-07 | 1999-08-17 | Microsoft Corporation | System and method for automatically correcting multi-word data entry errors |
US5956489A (en) * | 1995-06-07 | 1999-09-21 | Microsoft Corporation | Transaction replication system and method for supporting replicated transaction-based services |
US5745103A (en) * | 1995-08-02 | 1998-04-28 | Microsoft Corporation | Real-time palette negotiations in multimedia presentations |
US5732267A (en) * | 1995-08-02 | 1998-03-24 | Microsoft Corporation | Caching/prewarming data loaded from CD-ROM |
US5664228A (en) * | 1995-08-09 | 1997-09-02 | Microsoft Corporation | Portable information device and system and method for downloading executable instructions from a computer to the portable information device |
US5878141A (en) * | 1995-08-25 | 1999-03-02 | Microsoft Corporation | Computerized purchasing system and method for mediating purchase transactions over an interactive network |
US5732256A (en) * | 1995-08-30 | 1998-03-24 | Microsoft Corporation | CD-ROM optimization and stream splitting |
DE69621197T2 (de) | 1995-09-06 | 2002-11-07 | Seiko Epson Corp | Peripheriegerätsteuerungssystem mit einer Mehrheit von Objekten |
US5774670A (en) * | 1995-10-06 | 1998-06-30 | Netscape Communications Corporation | Persistent client state in a hypertext transfer protocol based client-server system |
US5793982A (en) * | 1995-12-07 | 1998-08-11 | International Business Machine Corporation | Validating an installation plan containing multiple transports and redirectors by adding data structure of the modules to the plan if the indicated transport and redirector modules are unavailable |
US5855020A (en) * | 1996-02-21 | 1998-12-29 | Infoseek Corporation | Web scan process |
DE19607971C2 (de) * | 1996-03-01 | 1998-01-02 | Gore W L & Ass Gmbh | Leitungskoppler |
US6038551A (en) * | 1996-03-11 | 2000-03-14 | Microsoft Corporation | System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer |
US5928323A (en) * | 1996-05-30 | 1999-07-27 | Sun Microsystems, Inc. | Apparatus and method for dynamically generating information with server-side software objects |
US5961601A (en) | 1996-06-07 | 1999-10-05 | International Business Machines Corporation | Preserving state information in a continuing conversation between a client and server networked via a stateless protocol |
US5638176A (en) * | 1996-06-25 | 1997-06-10 | International Business Machines Corporation | Inexpensive interferometric eye tracking system |
US5835724A (en) * | 1996-07-03 | 1998-11-10 | Electronic Data Systems Corporation | System and method for communication information using the internet that receives and maintains information concerning the client and generates and conveys the session data to the client |
US6115744A (en) * | 1996-07-30 | 2000-09-05 | Bea Systems, Inc. | Client object API and gateway to enable OLTP via the internet |
US5897622A (en) | 1996-10-16 | 1999-04-27 | Microsoft Corporation | Electronic shopping and merchandising system |
US5953524A (en) | 1996-11-22 | 1999-09-14 | Sybase, Inc. | Development system with methods for runtime binding of user-defined classes |
US5991802A (en) | 1996-11-27 | 1999-11-23 | Microsoft Corporation | Method and system for invoking methods of objects over the internet |
US6401099B1 (en) * | 1996-12-06 | 2002-06-04 | Microsoft Corporation | Asynchronous binding of named objects |
US5748890A (en) | 1996-12-23 | 1998-05-05 | U S West, Inc. | Method and system for authenticating and auditing access by a user to non-natively secured applications |
US6032207A (en) | 1996-12-23 | 2000-02-29 | Bull Hn Information Systems Inc. | Search mechanism for a queue system |
US6006230A (en) * | 1997-01-15 | 1999-12-21 | Sybase, Inc. | Database application development system with improved methods for distributing and executing objects across multiple tiers |
CA2198189C (en) * | 1997-02-21 | 2001-05-29 | Ibm Canada Limited-Ibm Canada Limitee | Internet browser based data entry architecture |
US6334157B1 (en) * | 1997-03-11 | 2001-12-25 | Microsoft Corporation | Programmatically providing direct access to user interface elements of an application program |
US6212192B1 (en) | 1997-03-14 | 2001-04-03 | Itxc, Inc. | Method and apparatus for synchronizing information browsing among multiple systems |
US6253228B1 (en) | 1997-03-31 | 2001-06-26 | Apple Computer, Inc. | Method and apparatus for updating and synchronizing information between a client and a server |
JP3155489B2 (ja) * | 1997-04-16 | 2001-04-09 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | サスペンション・アセンブリ及びディスク・ドライブ装置 |
US6014637A (en) * | 1997-04-30 | 2000-01-11 | International Business Machines Corporation | Object oriented framework mechanism for fulfillment requirements management |
US5983227A (en) | 1997-06-12 | 1999-11-09 | Yahoo, Inc. | Dynamic page generator |
CA2210755C (en) | 1997-07-17 | 2003-12-23 | Ibm Canada Limited - Ibm Canada Limitee | Creating proxies for distribution of beans and event objects |
GB2327786B (en) | 1997-07-31 | 2002-04-03 | Ibm | Method and apparatus for strategic compilation of source programs into two or more target languages |
US6138150A (en) * | 1997-09-03 | 2000-10-24 | International Business Machines Corporation | Method for remotely controlling computer resources via the internet with a web browser |
US5940075A (en) | 1997-09-30 | 1999-08-17 | Unisys Corp. | Method for extending the hypertext markup language (HTML) to support enterprise application data binding |
US6253234B1 (en) * | 1997-10-17 | 2001-06-26 | International Business Machines Corporation | Shared web page caching at browsers for an intranet |
US6014666A (en) | 1997-10-28 | 2000-01-11 | Microsoft Corporation | Declarative and programmatic access control of component-based server applications using roles |
US6460071B1 (en) * | 1997-11-21 | 2002-10-01 | International Business Machines Corporation | System and method for managing client application state in a stateless web browser environment |
US6279151B1 (en) | 1998-01-20 | 2001-08-21 | International Business Machines Corporation | Method and apparatus for remote source code inclusion |
US6076108A (en) | 1998-03-06 | 2000-06-13 | I2 Technologies, Inc. | System and method for maintaining a state for a user session using a web system having a global session server |
JPH11301049A (ja) * | 1998-03-27 | 1999-11-02 | Internatl Business Mach Corp <Ibm> | プリンタ、プリンタ・システム、印字属性を変更して印字をおこなう方法、プリンタを制御するプログラムを格納した記録媒体 |
US6167524A (en) * | 1998-04-06 | 2000-12-26 | International Business Machines Corporation | Apparatus and method for efficient battery utilization in portable personal computers |
US6101607A (en) * | 1998-04-24 | 2000-08-08 | International Business Machines Corporation | Limit access to program function |
US6185608B1 (en) | 1998-06-12 | 2001-02-06 | International Business Machines Corporation | Caching dynamic web pages |
US6121968A (en) * | 1998-06-17 | 2000-09-19 | Microsoft Corporation | Adaptive menus |
US6373841B1 (en) | 1998-06-22 | 2002-04-16 | Agilent Technologies, Inc. | Integrated LAN controller and web server chip |
US6463442B1 (en) * | 1998-06-30 | 2002-10-08 | Microsoft Corporation | Container independent data binding system |
US6343148B2 (en) * | 1998-07-22 | 2002-01-29 | International Business Machines Corporation | Process for utilizing external handwriting recognition for personal data assistants |
US6205480B1 (en) | 1998-08-19 | 2001-03-20 | Computer Associates Think, Inc. | System and method for web server user authentication |
US6246422B1 (en) * | 1998-09-01 | 2001-06-12 | Sun Microsystems, Inc. | Efficient method for storing texture maps in multi-bank memory |
US6389414B1 (en) * | 1998-09-21 | 2002-05-14 | Microsoft Corporation | Internal database validation |
US6397253B1 (en) | 1998-10-06 | 2002-05-28 | Bull Hn Information Systems Inc. | Method and system for providing high performance Web browser and server communications |
US6218958B1 (en) * | 1998-10-08 | 2001-04-17 | International Business Machines Corporation | Integrated touch-skin notification system for wearable computing devices |
US6460141B1 (en) | 1998-10-28 | 2002-10-01 | Rsa Security Inc. | Security and access management system for web-enabled and non-web-enabled applications and content on a computer network |
US6487590B1 (en) * | 1998-10-30 | 2002-11-26 | Lucent Technologies Inc. | Method for controlling a network element from a remote workstation |
US6363352B1 (en) * | 1998-11-13 | 2002-03-26 | Microsoft Corporation | Automatic scheduling and formation of a virtual meeting over a computer network |
US6487665B1 (en) | 1998-11-30 | 2002-11-26 | Microsoft Corporation | Object security boundaries |
US6564251B2 (en) * | 1998-12-03 | 2003-05-13 | Microsoft Corporation | Scalable computing system for presenting customized aggregation of information |
US6178461B1 (en) | 1998-12-08 | 2001-01-23 | Lucent Technologies Inc. | Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects |
US6351767B1 (en) | 1999-01-25 | 2002-02-26 | International Business Machines Corporation | Method and system for automatically caching dynamic content based on a cacheability determination |
US6353447B1 (en) * | 1999-01-26 | 2002-03-05 | Microsoft Corporation | Study planner system and method |
US6412008B1 (en) * | 1999-01-28 | 2002-06-25 | International Business Machines Corporation | System and method for cooperative client/server customization of web pages |
US6326957B1 (en) * | 1999-01-29 | 2001-12-04 | International Business Machines Corporation | System and method for displaying page information in a personal digital notepad |
US6591272B1 (en) * | 1999-02-25 | 2003-07-08 | Tricoron Networks, Inc. | Method and apparatus to make and transmit objects from a database on a server computer to a client computer |
US6354477B1 (en) * | 1999-06-08 | 2002-03-12 | International Business Machines Corporation | Mobile computing bag |
US6557038B1 (en) | 1999-06-30 | 2003-04-29 | International Business Machines Corporation | Method and apparatus for maintaining session states |
US6505238B1 (en) * | 1999-08-19 | 2003-01-07 | International Business Machines Corporation | Method and system for implementing universal login via web browser |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US6430575B1 (en) * | 1999-09-10 | 2002-08-06 | Xerox Corporation | Collaborative document management system with customizable filing structures that are mutually intelligible |
US6546516B1 (en) * | 1999-11-22 | 2003-04-08 | International Business Machines Corporation | Method and apparatus for measuring timing characteristics of message-oriented transports |
US6633416B1 (en) * | 2000-01-10 | 2003-10-14 | International Business Machines Corporation | Computer scanner for three-dimensional objects |
US6560618B1 (en) * | 2000-03-22 | 2003-05-06 | International Business Machines Corporation | On-demand generation, packaging, and delivery of archive files |
US6687735B1 (en) * | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
US6622168B1 (en) | 2000-04-10 | 2003-09-16 | Chutney Technologies, Inc. | Dynamic page generation acceleration using component-level caching |
US7228346B1 (en) * | 2000-04-21 | 2007-06-05 | Sun Microsystems, Inc. | IDL event and request formatting for corba gateway |
US6990653B1 (en) * | 2000-05-18 | 2006-01-24 | Microsoft Corporation | Server-side code generation from a dynamic web page content file |
US6996809B2 (en) * | 2000-07-10 | 2006-02-07 | Microsoft Corporation | Method and apparatus for providing instrumentation data to an instrumentation data source from within a managed code environment |
US6732364B1 (en) * | 2000-07-14 | 2004-05-04 | International Business Machines Corporation | Mechanism for developing and dynamically deploying awarelets |
US6772408B1 (en) * | 2000-11-22 | 2004-08-03 | Hyperion Solutions Corporation | Event model using fixed-format text strings to express event actions |
US6606418B2 (en) * | 2001-01-16 | 2003-08-12 | International Business Machines Corporation | Enhanced compression of documents |
US20020120677A1 (en) * | 2001-02-23 | 2002-08-29 | Goward Philip J. | Method and apparatus for using a servlet to interoperate with server pages |
US6725219B2 (en) * | 2001-03-13 | 2004-04-20 | Seiko Epson Corporation | Internet presentation system |
CN100389428C (zh) * | 2001-10-24 | 2008-05-21 | Nik软件公司 | 用于利用图像基准点处理数字图像的方法和设备 |
-
2001
- 2001-06-29 US US09/894,828 patent/US7162723B2/en not_active Expired - Fee Related
-
2002
- 2002-06-14 EP EP02013186A patent/EP1271883B1/en not_active Expired - Lifetime
- 2002-06-14 AT AT02013186T patent/ATE326106T1/de active
- 2002-06-14 DK DK02013186T patent/DK1271883T3/da active
- 2002-06-14 PT PT02013186T patent/PT1271883E/pt unknown
- 2002-06-14 DE DE60211254T patent/DE60211254T2/de not_active Expired - Lifetime
- 2002-06-14 ES ES02013186T patent/ES2263707T3/es not_active Expired - Lifetime
- 2002-07-01 JP JP2002192640A patent/JP4302942B2/ja not_active Expired - Fee Related
-
2007
- 2007-01-09 US US11/621,435 patent/US7603676B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
ES2263707T3 (es) | 2006-12-16 |
US20070174845A1 (en) | 2007-07-26 |
ATE326106T1 (de) | 2006-06-15 |
EP1271883A2 (en) | 2003-01-02 |
DE60211254D1 (de) | 2006-06-14 |
EP1271883B1 (en) | 2006-05-10 |
DE60211254T2 (de) | 2006-09-14 |
US7162723B2 (en) | 2007-01-09 |
PT1271883E (pt) | 2006-09-29 |
JP2003076560A (ja) | 2003-03-14 |
EP1271883A3 (en) | 2004-03-24 |
US7603676B2 (en) | 2009-10-13 |
US20030018827A1 (en) | 2003-01-23 |
DK1271883T3 (da) | 2006-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4302942B2 (ja) | Asp.net httpランタイム | |
JP4005667B2 (ja) | サーブレットを処理する方法及び装置 | |
US9654548B2 (en) | Intelligent network streaming and execution system for conventionally coded applications | |
CA2279382C (en) | Web request broker controlling multiple processes | |
US8468541B2 (en) | Event driven sendfile | |
JP3853592B2 (ja) | 分散ウェブアプリケーションサーバ | |
US7587447B2 (en) | Systems, methods and computer programs for implementing and accessing web services | |
US7082604B2 (en) | Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents | |
US7769825B2 (en) | System and method for web services Java API-based invocation | |
US7571208B2 (en) | Creating proxies from service description metadata at runtime | |
US7028091B1 (en) | Web server in-kernel interface to data transport system and cache manager | |
Ganger et al. | Fast and flexible application-level networking on exokernel systems | |
CA2397865A1 (en) | Improved method and system of state management for data communications | |
US7849472B1 (en) | System for instrumenting resources utilizing WS-management resource MBean wrappers for JAXB beans | |
US8499023B1 (en) | Servlet-based grid computing environment using grid engines and switches to manage resources | |
WO2004003770A1 (en) | System and method for web services java api-based invocation | |
Nacar et al. | Developing a secure grid computing environment shell engine: containers and services | |
Guthrie et al. | Asp. net http runtime | |
Guide | Unicenter® SOLVE: CPT™ | |
Goto et al. | World-wide web server with application layer queue: system and object-oriented software architecture | |
Guo | Developing network server applications using generative design patterns | |
Mahmoud | Design and Implementation of a Web-based Distributed Computing System | |
Nagel et al. | Socket Programming in. NET | |
Hadjiefthymiades et al. | Information Data Acquisition on the World Wide Web During Heavy Client/Server Traffic Periods | |
Allcock | Programming with the Globus Toolkit GridFTP Client Library |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050613 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050613 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070921 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20071221 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20071227 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080107 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080121 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080124 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080221 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080226 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080319 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080819 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081118 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081121 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20081217 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20081222 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090116 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090219 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090324 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090423 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120501 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4302942 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130501 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |