(57)【要約】ウェブアプリケーションのパフォーマンスを監視するための技術が提供される。ウェブアプリケーションを求める要求がアプリケーションサーバにて受け取られる。アプリケーションサーバにおける応答パイプラインが、要求されたウェブアプリケーションに対応するクライアントアプリケーションコードを生成する。クライアントアプリケーションコードは、応答パイプラインにおいてインターセプトされる。計測コードが、インターセプトされたクライアントアプリケーションコードに挿入されて計測済クライアントアプリケーションコードが生成される。計測コードは、計測済クライアントアプリケーションコードがクライアントにおいてレンダリングされてクライアントにおいてパフォーマンス情報がキャプチャされる時に、実行されるべく構成され、かつ、キャプチャされたパフォーマンス情報をクライアントから送信するべく構成される。
2013532865.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のサーバにおける方法であって、
応答パイプライン内でクライアントアプリケーションコードをインターセプトするステップであって、前記クライアントアプリケーションコードは、ウェブアプリケーションを求めるクライアントからの要求に応答して生成される、インターセプトするステップと、
計測コードを前記インターセプトしたクライアントアプリケーションコードに挿入し、計測済クライアントアプリケーションコードを生成するステップであって、前記計測コードは、前記計測済クライアントアプリケーションコードが前記クライアントにおいてレンダリングされ、前記クライアントにおいてパフォーマンス情報をキャプチャする時に、実行されるように構成され、かつ、前記キャプチャしたパフォーマンス情報を前記クライアントから送信するように構成される、生成するステップと、
送信されるべき前記計測済クライアントアプリケーションコードを前記クライアントに提供するステップと
を含むことを特徴とする方法。
【請求項２】
前記インターセプトするステップは、
前記クライアントアプリケーションコードを前記応答パイプラインの応答フィルタにおいて受信するステップと、
前記応答フィルタにおいて、前記クライアントアプリケーションコードが計測コードを受信するための所定の基準を満たすことを判定するステップと
を含み、前記挿入するステップは、
前記応答フィルタを使用して前記計測コードを前記クライアントアプリケーションコードに挿入するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ウェブアプリケーションを求める要求は、前記応答パイプラインにおいて複数のＨＴＴＰ（ハイパーテキスト転送プロトコル）モジュールおよびＨＴＴＰハンドラを使用して処理され、前記インターセプトするステップは、
前記クライアントアプリケーションコードを前記複数のＨＴＴＰモジュールの内のＨＴＴＰモジュールにおいて受信するステップを含み、前記挿入するステップは、
前記ＨＴＴＰモジュールを使用して前記計測コードを前記クライアントアプリケーションコードに挿入するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記インターセプトするステップは、
前記クライアントアプリケーションコードを前記応答パイプラインのプロファイラにおいて受信するステップと、
前記プロファイラにおいて、前記クライアントアプリケーションコードが計測コードを受信するための所定の基準を満たすことを判定するステップと
を含み、前記挿入するステップは、
前記プロファイラを使用して前記計測コードを前記クライアントアプリケーションコードに挿入するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記挿入するステップは、前記クライアントアプリケーションコードのページコードを変更するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記クライアントアプリケーションコードを分析し、監視すべき、前記クライアントアプリケーションコードの１つまたは複数の属性を決定するステップと
前記クライアントアプリケーションコードの前記１つまたは複数の属性を監視するように前記計測コードを構成するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記クライアントのブラウザのタイプ、前記クライアントのロケール、またはクライアントの言語の内の少なくとも１つに関するデータをキャプチャするように前記計測コードを構成するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記計測済クライアントアプリケーションコードによりキャプチャされたパフォーマンス情報を前記クライアントから受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項９】
コンピュータプログラム論理が記録されるコンピュータ可読媒体を備えるコンピュータプログラム製品であって、
プロセッサが請求項１から８のいずれかを実行することを可能にするためのコンピュータプログラム論理手段を含むことを特徴とするコンピュータプログラム製品。
【請求項１０】
データストリームを生成し、クライアントからのウェブアプリケーションを求める要求に応答してクライアントに対してクライアントアプリケーションコードを提供するように構成される応答パイプラインと、
前記応答パイプライン内で前記クライアントアプリケーションコードをインターセプトするように構成されるアプリケーションスキャニングモジュールと、
計測コードを、前記インターセプトしたクライアントアプリケーションコードに挿入し、計測済クライアントアプリケーションコードを生成するように構成される計測挿入モジュールであって、前記計測コードは、前記計測済クライアントアプリケーションコードが前記クライアントにおいてレンダリングされ、前記クライアントにおいてパフォーマンス情報をキャプチャする時に、実行されるように構成され、かつ、前記キャプチャされたパフォーマンス情報を前記クライアントから送信するように構成される、計測挿入モジュールモジュールと
を備え、前記応答パイプラインは、送信されるべき前記計測済クライアントアプリケーションコードを前記クライアントに提供するように構成されることを特徴とするサーバ。
【請求項１１】
前記アプリケーションスキャニングモジュールおよび前記計測挿入モジュールは応答フィルタに含まれ、前記アプリケーションスキャニングモジュールは、前記クライアントアプリケーションコードが計測コードを受信するための所定の基準を満たすかどうかを判定するように構成され、前記計測挿入モジュールは、前記クライアントアプリケーションコードが前記所定の基準を満たす場合、前記計測コードを前記クライアントアプリケーションコードに挿入するように構成されることを特徴とする請求項１０に記載のサーバ。
【請求項１２】
前記ウェブアプリケーションを求める要求は、応答パイプラインにおいて複数のＨＴＴＰ（ハイパーテキスト転送プロトコル）モジュールおよびＨＴＴＰハンドラを使用して処理され、前記アプリケーションスキャニングモジュールおよび前記計測挿入モジュールは、前記複数のＨＴＴＰモジュールの内のＨＴＴＰモジュールに含まれ、前記計測挿入モジュールは、前記計測コードを前記クライアントアプリケーションコードに挿入するように構成されることを特徴とする請求項１０に記載のサーバ。
【請求項１３】
前記アプリケーションスキャニングモジュールおよび前記計測挿入モジュールは、プロファイラに含まれることを特徴とする請求項１０に記載のサーバ。
【請求項１４】
前記計測挿入モジュールは、前記クライアントアプリケーションコードのページコードを変更するように構成されることを特徴とする請求項１０に記載のサーバ。
【請求項１５】
キャプチャされたパフォーマンス情報を前記計測済クライアントアプリケーションコードから受信するように構成されるパフォーマンスデータ受信モジュールをさらに備え、前記パフォーマンスデータ受信モジュールは、クライアントの分類から受信されるキャプチャされたパフォーマンス情報をサンプリングし、１組のクライアントに関連するデータセットを生成し、かつ、前記１組のクライアントに関連するデータセットを分析するように構成されることを特徴とする請求項１０に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブアプリケーションの実際のエンドユーザのパフォーマンスおよびアベイラビリティの計測に関する。
【背景技術】
【０００２】
ウェブアプリケーションとは、インターネットなどのネットワークを介してアクセスされてクライアントコンピュータシステムにおいて実行されるアプリケーションである。ウェブアプリケーションは種々の形式を持つことができ、例えば、Ｊａｖａ（登録商標）アプレットなどがあり、ブラウザがサポートする言語でコード化され（例えば、Ｊａｖａスクリプトなどであって、ブラウザがレンダリングするＨＴＭＬ（ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）などのマークアップ言語と組み合わされる）、または、他の形式を持つこともできる。ウェブブラウザを使用して、ウェブアプリケーションをアプリケーションサーバから検索することや、クライアントコンピュータシステムにおいて検索されたウェブアプリケーションコードをレンダリングすることによりウェブアプリケーションを実行することができる。
【０００３】
ウェブアプリケーションは、ウェブブラウザのアベイラビリティの広がりによりさらに普及してきている。さらに、ウェブアプリケーションは、個々に多数のクライアントコンピュータにおけるよりも、アプリケーションサーバにおいて維持かつ更新されることで有利となる。多数のタイプのウェブアプリケーションが存在し、メディアプレーヤ、ウェブメール、オンライン小売販売、オンラインオークション、ウィキ、および多く他のタイプがこれに含まれる。用語「Ｗｅｂ２．０」は通常、対話型情報の共有、相互運用、ユーザ中心の設計、およびＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ上での協調を円滑にするウェブアプリケーションに関連する。Ｗｅｂ２．０のウェブサイトでは、そのユーザはウェブサイトのコンテンツの貢献者としてお互いに対話することができ、与えられた情報の受動的な閲覧にユーザが制限されるウェブサイトとは対照的である。
【０００４】
多くの組織がＷｅｂ２．０の技術を利用するウェブアプリケーションを開発してよりリッチでより複雑な対話を形成するようになり、ウェブアプリケーションのパフォーマンスおよびアベイラビリティを効果的に監視する能力がより重要になってきている。ウェブアプリケーションのパフォーマンスを判定する従来の手法では典型的には、規則的な間隔をおいてウェブアプリケーションのコンテンツのテスト転送を実行すること（「代理トランザクション」）、または、サーバ側の操作に基づくメトリックをキャプチャすること、が含まれる。しかし、代理トランザクションもサーバ側メトリックのキャプチャも、クライアントコンピュータシステムにおけるエンドユーザの経験の質を示さない。正確かつ許容応答時間内にページがクライアントに配信されたかどうかを単に計測するだけでは、クライアントにおけるエンドユーザの観点からウェブアプリケーションが利用可能（アベイラブル）でありかつ良好に実行されたかどうかは正しく示されない。ＡＪＡＸ（エイジャックス）（ａｓｙｎｃｈｒｏｎｏｕｓ  ＪａｖａＳｃｒｉｐｔ（登録商標）  ａｎｄ  ＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）（非同期ＪａｖａスクリプトおよびＸＭＬ））、カリフォルニア州サンノゼのアドビシステムズ社が開発したアドベ「登録商標」フラッシュ「登録商標」、ワシントン州レドモンドのマイクロソフト社が開発したマイクロソフト「登録商標」シルバーライト（商標）、等の技術は、クライアント側の処理を使用してウェブアプリケーションの複雑な対話を制御することができる。しかし、そのようなクライアント側の処理では、サーバにおいて直接監視することができず、従って、そのようなクライアント側の処理のパフォーマンスは従来の手法の使用では判定できない。
【発明の概要】
【０００５】
この「発明の概要」は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この「発明の概要」は、特許請求の主題の重要な特徴または主要な特徴を確認することを意図しておらず、特許請求の主題の範囲を制限するものとして使用されることも意図していない。
【０００６】
ウェブアプリケーションのパフォーマンスを監視するための方法、システム、およびコンピュータプログラム製品が、本明細書において提供される。ウェブアプリケーションが、クライアントコンピュータシステムにおいて監視されることが可能にされ、また、クライアントにおけるウェブアプリケーションに関するキャプチャされたパフォーマンス情報が、サーバに対して提供されることが可能にされる。提供されるパフォーマンス情報により、クライアント側のウェブアプリケーションのパフォーマンスがエンドユーザの観点から分析されることが可能にされる。
【０００７】
一実施形態において、ウェブアプリケーションを求める要求がアプリケーションサーバにて受け取られる。要求されたウェブアプリケーションに対応するクライアントアプリケーションコードが、生成される。生成されたクライアントアプリケーションコードは、インターセプトされる。計測コードが、インターセプトされたクライアントアプリケーションコードに挿入されて、計測済クライアントアプリケーションコードが生成される。計測コードは、計測済クライアントアプリケーションコードがクライアントにおいてレンダリングされてクライアントにおいてパフォーマンス情報がキャプチャされる時に、実行されるべく構成され、かつ、キャプチャされたパフォーマンス情報をクライアントから送信するべく構成される。
【０００８】
別の実装において、アプリケーションサーバには、応答パイプライン、アプリケーションスキャニングモジュール、および計測挿入モジュールが含まれる。応答パイプラインは、クライアントからのウェブアプリケーションを求める要求に応答してクライアントに対して提供されるクライアントアプリケーションコードを含むデータストリームを生成するべく構成される。アプリケーションスキャニングモジュールは、応答パイプライン内でクライアントアプリケーションコードをインターセプトするべく構成される。計測挿入モジュールは、計測コードを、インターセプトされたクライアントアプリケーションコードに挿入して計測済クライアントアプリケーションコードを生成するべく構成される。計測コードは、計測済クライアントアプリケーションコードがクライアントにおいてレンダリングされてクライアントにおいてパフォーマンス情報がキャプチャされる時に実行されるべく構成され、かつ、キャプチャされたパフォーマンス情報をクライアントから送信するべく構成される。
【０００９】
応答パイプラインは、計測済クライアントアプリケーションコードを生成するべく種々の様式で構成されて良く、該様式には応答フィルタ、ＨＴＴＰ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）モジュール、プロファイラ、または他の技術を使用することが含まれる。
【００１０】
さらなる実装において、クライアントは、ウェブアプリケーションを求めてサーバに要求を送信して良い。クライアントは、要求に応答したサーバから計測済クライアントアプリケーションコードを受け取ることができる。計測済クライアントアプリケーションコードは、ウェブアプリケーションを実装するべく構成され、かつ、サーバにおいて計測済クライアントアプリケーションコードに挿入される計測コードを含む。計測コードは、計測済クライアントアプリケーションコードがクライアントにおいてレンダリングされる時に、実行されてクライアントにおいてパフォーマンス情報がキャプチャされるように構成され、かつ、キャプチャされたパフォーマンス情報をクライアントから送信するべく構成される。
【００１１】
さらなる実装において、管理サーバにはパフォーマンスデータ受信モジュールが含まれて良い。パフォーマンスデータ受信モジュールは、キャプチャされたパフォーマンス情報をクライアントにおいて計測済クライアントアプリケーションコードから受け取るべく構成される。
【００１２】
クライアントコンピュータシステムにおいてウェブアプリケーションのパフォーマンスを監視するためのコンピュータプログラム製品についても本明細書において記載され、さらなる実施形態についても本明細書に記載される通りである。
【００１３】
本発明のさらなる特徴および利点、のみならず、本発明の種々の実施形態の構造および操作が、添付の図面を参照して以下に詳細に記載される。本発明は、本明細書に記載される特定の実施形態に限定されないことに留意されたい。そのような実施形態は、例示の目的のみのために本明細書において提示される。追加の実施形態は、本明細書に含有される技術に基づき当業者には明らかとなろう。
【図面の簡単な説明】
【００１４】
添付の図面は、本明細書に組み込まれ明細書の一部を形成するものであり、本発明を例示し、かつ、さらに、記載と共に本発明の原理を説明すること、および、当業者が本発明を成し使用することを可能にすること、の助けとなる。
【図１】一例の実施形態に従うデータ通信システムのブロック図である。
【図２】一実施形態に従う、図１のデータ通信システムの一例のブロック図である。
【図３】一例の実施形態に従う、計測済ウェブアプリケーションを提供するための流れ図である。
【図４】一例の実施形態に従う、計測済ウェブアプリケーションがウェブアプリケーション要求に応答して生成される、図２のデータ通信システムを示す図である。
【図５】一例の実施形態に従う、管理サーバのブロック図である。
【図６】一例の実施形態に従う、アプリケーション計測モジュールのブロック図である。
【図７】実施形態に従う、応答パイプラインの例を示すブロック図である。
【図８】実施形態に従う、応答パイプラインの例を示すブロック図である。
【図９】実施形態に従う、応答パイプラインの例を示すブロック図である。
【図１０】一例の実施形態に従う、要求されたウェブアプリケーションに対応する計測済クライアントアプリケーションコードがクライアントで受け取られる、図２のデータ通信システムを示す図である。
【図１１】一例の実施形態に従う、計測済ウェブアプリケーションをクライアントにおいて扱うための流れ図である。
【図１２】一例の実施形態に従う、計測済クライアントアプリケーションコードのブロック図である。
【図１３】一例の実施形態に従う、キャプチャされたパフォーマンス情報を管理サーバにおいて扱うための流れ図である。
【図１４】本発明の実施形態を実装するために使用されて良い例示のコンピュータのブロック図である。
【００１５】
本発明の特徴および利点については、以下に記載される詳細な説明と図面からさらに明らかになるであろう。図面では同様の参照記号は全体を通して対応する要素を表す。図面において、同様の参照番号は概して、同一、機能的に同様、および／または、構造的に同様の要素を示す。最初に要素が出現する図面が、対応する参照番号の最左の桁により示される。
【発明を実施するための形態】
【００１６】
Ｉ．導入  
本明細書では、本発明の特徴が組み込まれる１つまたは複数の実施形態を開示する。開示される実施形態は、単に本発明を例示するのみである。本発明の範囲は開示される実施形態に限定されない。本発明は本明細書に添付される請求項により定義される。
【００１７】
明細書において「一実施形態」「実施形態」「一例の実施形態」等を参照することにより、記載される実施形態が特定の特徴、構造、または特性を含んで良いが、全ての実施形態が必ずしもその特定の特徴、構造、または特性を含まなくとも良い、ということが示される。また、そのような語句が必ずしも同一の実施形態を参照しているわけではない。さらに、特定の特徴、構造、または特性が実施形態との関連で記載される時、そのような特徴、構造、または特性が、明示的に記載されるかどうかに関わらず他の実施形態に関連してもたらされることは、当業者の知見の範囲内であるものと考えられる。
【００１８】
ＩＩ．例示の実施形態
実施形態により、クライアントまたはエンドユーザの観点からウェブアプリケーションのパフォーマンスを監視するための技術が提供される。そのような実施形態により、サーバ側ベースの従来の技術に比べて、改善されたウェブアプリケーション監視が可能とされる。さらに、実施形態により、異なるネットワーク条件下で、異なるクライアントコンピュータ構成を用いたウェブアプリケーション監視が可能とされる。
【００１９】
インターネット全体に渡るネットワークのスピードおよび品質における違いにより、エンドユーザに対するウェブアプリケーションの機能性が低速にされたり中断されたりする。さらに、サーバ、キャッシュ、および／またはクライアント構成要素を組み合わせてウェブアプリケーションサーバを設けることができるので、それぞれがウェブアプリケーションのパフォーマンスの品質に影響を与えかねない。クライアントで使用される多様な装置およびブラウザがウェブアプリケーションコンテンツをレンダリングする時には、さらなるパフォーマンスのばらつきが明白になる。装置のタイプ、ブラウザのタイプ、ネットワーク構成、ならびに、他のサーバ側、ネットワーク、およびクライアント側の属性は常に変化している。従来のサーバ側のメトリックが使用されて、コンテンツをクライアントに送信するために使用される時間が判定されるかもしれないが、それぞれ異なるクライアント装置またはブラウザでは、クライアントがどのようにパフォーマンスおよびアベイラビリティを感知するのかが異なるかもしれない。従って、ウェブアプリケーションのパフォーマンスおよびアベイラビリティの実態を取得するために、実施形態では、ウェブアプリケーションのパフォーマンスが実際のエンドユーザの観点から監視されることを可能にする。
【００２０】
実施形態では、種々の様式でクライアント側ウェブアプリケーション監視を可能にすることができる。例えば、一実施形態において、計測コード（例えば、１つまたは複数のスクリプト）が、アプリケーションサーバによりウェブアプリケーションのページに追加されて良い。例えば、ウェブアプリケーション要求に応答してクライアントに通常配信されるウェブアプリケーションデータのストリームは、所定のポリシーに基づき変更されて、計測コードがストリームに追加される。計測コードがクライアント上で実行されると、計測コードがメトリックおよびデータを収集する。例えば、計測コードは、クライアント、例えばクライアントのブラウザにおいてウェブアプリケーションのページがレンダリングされる時、ウェブアプリケーションページのパフォーマンス／アベイラビリティのメトリックを収集および計算するべく構成されて良い。ページのパフォーマンス／アベイラビリティのメトリックが収集された後、計測コードはサービス側のエンドポイントを呼び出し、収集した情報をサービス側のエンドポイントに渡すことができる。
【００２１】
このように、実施形態では、計測コードをアプリケーション開発時または実行時にウェブページレベルで追加することができ、例えば、ウェブアプリケーション関連のトラフィックを、アプリケーションサーバにおいて応答パイプライン（例えば、ＨＴＴＰパイプライン）を通過させる時に、計測コードをウェブアプリケーションのページに自動的に注入することにより行う。
【００２２】
実施形態により種々の利点が提供される。例えば、実施形態により、ＡＪＡＸ（ａｓｙｎｃｈｒｏｎｏｕｓ  ＪａｖａＳｃｒｉｐｔ  ａｎｄ  ＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ））、アドビ「登録商標」フラッシュ「登録商標」、およびマイクロソフト「登録商標」シルバーライト（商標）などのＷｅｂ２．０技術が含まれるウェブ技術に大きく依存するアプリケーションを監視する能力を操作マネージャが有することができる。計測コードは、クライアントの観点からのそのようなウェブ技術のページのアベイラビリティおよび応答時間などのパフォーマンス情報をキャプチャするべく、また、このデータを、ウェブサービスエンドポイントを介するなどして種々の方法で監視システムに利用可能にするべく構成されて良い。
【００２３】
例示の実施形態が以下の項でさらに詳細に記載される。
【００２４】
Ａ．計測済ウェブアプリケーションを提供するための例示のシステムおよび方法
実施形態において、クライアントコンピュータシステムからウェブアプリケーションが要求されると、ウェブアプリケーションに計測コードが与えられ、計測済ウェブアプリケーションがクライアントコンピュータシステムに配信される。計測済ウェブアプリケーションは、種々の様式でクライアント要求に応答してクライアントコンピュータシステムに与えられる。例えば、図１は、一例の実施形態に従う、データ通信システム１００のブロック図を示す。図１に示すように、システム１００には、クライアント１０２、アプリケーションサーバ１０４、およびネットワーク１１６が含まれる。システム１００は以下で説明され、計測済ウェブアプリケーションを含むウェブアプリケーションのクライアントへの配信が例示される。
【００２５】
クライアント１０２は、任意のタイプのコンピュータ装置であって良く、デスクトップコンピュータ（例えば、パーソナルコンピュータ）、モバイルコンピュータもしくはコンピュータ装置（例えば、パーム「登録商標」装置、ＲＩＭ社のブラックベリー「登録商標」装置、ＰＤＡ（携帯情報端末）、ラップトップコンピュータ、ノートブックコンピュータなど）、スマートフォン、または他のタイプのコンピュータ装置などが含まれる。アプリケーションサーバ１０４には１つまたは複数のサーバが含まれて良く、本明細書に記載される任意のタイプのコンピュータ装置またはウェブアプリケーションを扱うことができる既知の任意のタイプのコンピュータ装置とすることができる。クライアント１０２およびアプリケーションサーバ１０４は、ネットワーク１１６により通信可能に連結される。ネットワーク１１６には、１つまたは複数の通信リンクおよび／または通信ネットワークが含まれて良く、例えば、ＰＡＮ（パーソナルエリアネットワーク）、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、またはインターネット等のネットワークの組み合わせなどが含まれる。第１の通信リンク１２２および第２の通信リンク１２４は、それぞれクライアント１０２およびアプリケーションサーバ１０４をネットワーク１１６に連結させるもので、任意の数の通信リンクを含んで良く、ＩＥＥＥ８０２．１１無線ＬＡＮ（ＷＬＡＮ）無線リンク、Ｗｉ−ＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ）リンク、セルラーネットワークリンク、無線パーソナルエリアネットワーク（ＰＡＮ）リンク（例えば、ブルートゥース（商標）リンク）、イーサネット（登録商標）リンク、ＵＳＢリンク、などの有線および／または無線のリンクが含まれる。
【００２６】
システム１００は、クライアント１０２などのクライアントコンピュータシステムがアプリケーションサーバ１０４からウェブアプリケーションを検索することを可能にするべく構成される。例えば図１に示すように、クライアント１０２にはブラウザ１０６が含まれる。クライアント１０２のユーザは、ブラウザ１０６と対話し、ウェブアプリケーションをロードしてブラウザ１６で実行させる要求をブラウザ１０６に行わせることができる。ブラウザ１０６は、任意のタイプのウェブブラウザとすることができ、例えば、ワシントン州レドモンドのマイクロソフト社が開発したインターネットエクスプローラ「登録商標」、カリフォルニア州マウンテンビューのモジラ社が開発したモジラファイアーフォックス「登録商標」、またはカリフォルニア州マウンテンビューのグーグル社が開発したグーグル「登録商標」クローム、などが含まれる。
【００２７】
例えば、ブラウザ１０６はウェブアプリケーション要求１１０を生成することができる。ウェブアプリケーション要求１１０は、ウェブアプリケーションがブラウザ１０６において実行されるようにする要求である。ウェブアプリケーション要求１１０は、クライアント１０２から第１の通信信号で第１の通信リンク１２２、ネットワーク１１６、および第２の通信リンク１２４を介してアプリケーションサーバ１０４に送信される。第１の通信信号は任意の形式で送信されて良い。アプリケーションサーバ１０４は、ウェブアプリケーション要求１１０を第１の通信信号で受信する。ウェブアプリケーション要求１１０に応答して、アプリケーションサーバ１０４はウェブアプリケーションを提供する。さらに、ウェブアプリケーションは、ウェブアプリケーションがクライアント１０２において１つまたは複数のパフォーマンスの態様を監視するべく構成されるようにするために、アプリケーションサーバ１０４により「計測」されて良い。ウェブアプリケーションは、１つまたは複数のパフォーマンスの態様を監視するべく構成されるウェブアプリケーションに計測コードを挿入することにより、アプリケーションサーバ１０４によって計測されて良い。
【００２８】
例えば、図１に示すように、アプリケーションサーバ１０４には応答パイプライン１０８が含まれて良い。応答パイプライン１０８は、ウェブアプリケーション要求１１０に応答して計測済クライアントアプリケーションコード１１２を生成することができる。計測済クライアントアプリケーションコード１１２は、第２の通信信号でアプリケーションサーバ１０４から送信される。第２の通信信号は、第２の通信リンク１２４、ネットワーク１１６、および第１の通信リンク１２２を介して送信され、クライアント１０２により受信される。第２の通信信号は任意の形式で送信されて良い。クライアント１０２のブラウザ１０６は、計測済クライアントアプリケーションコード１１２を受信し、実行用の計測済クライアントアプリケーションコード１１２をロードすることができる。
【００２９】
計測済クライアントアプリケーションコード１１２は、クライアント１０２においてブラウザ１０６により実行（例えば、レンダリング）されて良いウェブアプリケーションである。例えば、計測済クライアントアプリケーションコード１１２は、１つまたは複数のアプリケーションファイルを起動させるページの形式（例えば、ＨＴＭＬコードでコード化されたもの）を有することができる。計測済クライアントアプリケーションコード１１２には、１つまたは複数のブラウザがサポートするコンピュータ言語に従ってプログラミングされるアプリケーションファイルへの参照が含まれて良く、該言語にはＨＴＭＬ、ＡＪＡＸ（ａｓｙｎｃｈｒｏｎｏｕｓ  ＪａｖａＳｃｒｉｐｔ  ａｎｄ  ＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ））コード、アドベ「登録商標」フラッシュ「登録商標」ファイル（例えば、ＡｃｔｉｏｎＳｃｒｉｐｔコード）、マイクロソフト「登録商標」シルバーライト（商標）ファイル（例えば、ＸＡＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ａｐｐｌｉｃａｔｉｏｎ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）コード）、メディアファイル、などが含まれる。さらに、計測済クライアントアプリケーションコード１１２には、ウェブアプリケーションの１つまたは複数の態様のパフォーマンスを監視するべく構成される計測コードが含まれる。そのような計測コードは、ＨＴＭＬ、Ｊａｖａｓｃｒｉｐｔ、ＡＪＡＸ、ＸＡＭＬ、マイクロソフト「登録商標」．ＮＥＴ  Ｆｒａｍｅｗｏｒｋがサポートする任意のプログラム言語などの１つまたは複数のブラウザがサポートするコンピュータ言語に従ってプログラミングされて良い。
【００３０】
システム１００は、計測済ウェブアプリケーションを提供するべく種々の様式でさらに構成されて良い。例えば、図２は、一例の実施形態に従うデータ通信システム２００のブロック図を示す。データ通信システム２００は、図１のシステム１００の一例である。図２に示すように、データ通信システム２００にはクライアント１０２、アプリケーションサーバ１０４、ネットワーク１１６、および管理サーバ２０８が含まれ、アプリケーションサーバ１０４には応答パイプライン２０２が含まれる。応答パイプライン２０２は図１の応答パイプライン１０８の一例である。図２の例示実施形態において、応答パイプライン２０２には、クライアントアプリケーションコードジェネレータ２０４およびアプリケーション計測モジュール２０６が含まれる。上述のように、アプリケーションサーバ１０４は、ネットワーク１１６を介してクライアント１０２などのクライアントから受け取ったウェブアプリケーション要求１１０を供給するべく構成される。応答パイプライン２０２のクライアントアプリケーションコードジェネレータ２０４は、要求１１０に応答してクライアントアプリケーションコードを生成するべく構成され、アプリケーション計測モジュール２０６は、生成されたクライアントアプリケーションコードをインターセプトかつ計測するべく構成される。アプリケーションサーバ１０４は、計測済クライアントアプリケーションコードをクライアント１０２に送信してブラウザ１０６においてレンダリングされるようにするべく構成される。管理サーバ２０８は、アプリケーション計測モジュール２０６を構成するため、および／または、ブラウザ１０６で実行中の計測済クライアントアプリケーションコードにより生成されるパフォーマンスデータを受け取るために提供されても良い。
【００３１】
代替実施形態において、システム１００は、計測済ウェブアプリケーションを提供するべく他の様式で構成されて良い。例えば、別の実施形態において、図２のシステム２００には、クライアント１０２とアプリケーションサーバ１０４との間に配置されるプロキシサーバが含まれて良い。プロキシサーバにはアプリケーション計測モジュール２０６が含まれて良く、従って、ウェブアプリケーションの計測はプロキシサーバにおいて行われて良い。プロキシサーバは、クライアントアプリケーションコードジェネレータ２０４により生成されてアプリケーションサーバ１０４から送信されるクライアントアプリケーションコードを受け取ることができる。プロキシサーバのアプリケーション計測モジュール２０６は、生成されたクライアントアプリケーションコードをインターセプトかつ計測することができる。プロキシサーバは、計測済クライアントアプリケーションコードをクライアント１０２に送信してブラウザ１０６においてレンダリングされるようにすることができる。別の実施形態において、クライアント１０２にはアプリケーション計測モジュール２０６が含まれて良く、従って、ウェブアプリケーションの計測はクライアント１０２において行われて良い。クライアント１０２は、クライアントアプリケーションコードジェネレータ２０４により生成されてアプリケーションサーバ１０４から送信されるクライアントアプリケーションコードを受け取ることができる。クライアント１０２のアプリケーション計測モジュール２０６は、生成されたクライアントアプリケーションコードをインターセプトかつ計測することができる。計測済クライアントアプリケーションコードは、ブラウザ１０６においてレンダリングされて良い。このような実施形態において、ＩＴ（情報技術）オペレータなどのユーザは、当該ユーザがアプリケーションサーバ１０４に関係しない時でもアプリケーションの計測を導入することができる。実施形態は、図１および２の構成に関して例示の目的で本明細書に記載されるが、実施形態がこれらおよびさらに代替の方法で構成されて良いことは、本明細書における教示から当業者には理解されるであろう。
【００３２】
システム２００について、図３を参照して以下のようにさらに説明する。図３は、一例の実施形態に従う、計測済ウェブアプリケーションを提供するためのフローチャート３００を示す。一実施形態において、システム２００は、フローチャート３００に従って動作することができる。さらなる構造的および動作的な実施形態は、フローチャート３００に関する検討に基づき当業者には明らかになるであろう。フローチャート３００およびシステム２００について以下で説明する。
【００３３】
フローチャート３００はステップ３０２で開始される。ステップ３０２にて、ウェブアプリケーションを求める要求がクライアントから受け取られる。例えば、図２に示され上記で説明したように、アプリケーションサーバ１０４がクライアント１０２からウェブアプリケーション要求１１０を受け取る。ウェブアプリケーション要求１１０には、ウェブアプリケーションを求める要求が含まれる。例えば、クライアント１０２のユーザは、ブラウザ１０６と対話して要求されたウェブアプリケーションに対応するウェブページに進むことができる。クライアント１０２のユーザは、ウェブページ上のリンク、画像、または他のオブジェクトを選択すること、ブックマークを選択することができ、またはこれ以外にもブラウザ１０６と対話してウェブアプリケーションを要求するウェブアプリケーション要求１１０を生成することができる。
【００３４】
ステップ３０４にて、応答パイプラインにおいて生成されるクライアントアプリケーションコードがインターセプトされる。図２の応答パイプライン２０２には、ウェブアプリケーション要求１１０を満たすことに関して、対応する処理を実行する複数の段階が含まれて良い。一実施形態において、応答パイプライン２０２内のクライアントアプリケーションコードジェネレータ２０４は、要求１１０で要求されるウェブアプリケーションに対応するクライアントアプリケーションコードを生成するべく構成されて良い。例えば、クライアントアプリケーションコードジェネレータ２０４は、生成されるウェブページに対応するＨＴＭＬコード等のブラウザ互換のコードを生成することができ、所望のウェブアプリケーション機能性に対応する１つまたは複数のファイルを起動させるウェブページを生成することができる。例えば、ウェブページは、ウェブアプリケーション機能性に対応するＡＪＡＸコード、ＸＡＭＬコード、アドベ「登録商標」フラッシュ「登録商標」ファイル、マイクロソフト「登録商標」シルバーライト（商標）ファイルなどを起動させることができ、メディアプレーヤ、ウェブメールのツール、オンライン小売販売のサイト、オンラインオークション、ウィキなどを含む。クライアントアプリケーションコードジェネレータ２０４は、スクラッチから、要求可能な異なるウェブアプリケーションに対応するクライアントアプリケーションコードテンプレートのライブラリ（例えば、Ｃ＃プログラミング言語または他のプログラミング言語でコード化されたもの）から、および／または、当業者には既知である任意の他の方法で、ウェブアプリケーション要求に応答してクライアントアプリケーションコードを生成するべく構成されて良い。クライアントアプリケーションコードジェネレータ２０４により生成されるクライアントアプリケーションコードは、データストリーム上の応答パイプライン２０２を介して渡される。
【００３５】
生成されるクライアントアプリケーションコード（ＨＴＭＬ形式）の一例が以下のように示される。本例のクライアントアプリケーションコードは、クライアント１０２においてユーザに対してメディアプレーヤ（マイクロソフト「登録商標」シルバーライト（商標））ウェブアプリケーションを起動させるウェブページとして構成される。ウェブページはブラウザ１０６においてレンダリングされて良い。本例のクライアントアプリケーションコードは例示の目的で提供されるものであり、制限することは意図されず、多数の代替の方法で構成されて良い。
<body>
<form name="forml" method= "post" action= "Default.aspx" id="forml"> 
//<! [CDATA[ 
Sys.Application.initialize(); 
Sys.Application.add_init(function() { 
$create(Sys.UI.Silverlight.MediaPlayer, 
{"autoPlay:tme,"mediaSource":http://www.webinfocentral.com/VIDEO/JJ2008/WMV/JJ 2008_ 100.wmv ...
}); 
//]]> 
</form>
</body> 
上記の例のクライアントアプリケーションコードは、メディアプレーヤを起動させて、一例のマイクロソフト「登録商標」ウィンドウズメディア「登録商標」ビデオフォーマットファイルであるファイル「ｈｔｔｐ：／／ｗｗｗ．ｗｅｂｉｎｆｏｃｅｎｔｒａｌ．ｃｏｒ／ＶＩＤＥＯ／ＪＪ２００８／ＷＭＶ／ＪＪ２００８＿１００．ｗｍｖ」を再生するべく構成される。本例のクライアントアプリケーションコード内に「．．．」で示されるように、メディアプレーヤの起動に関連するさらなるパラメータが選択的に存在して良い。本例のクライアントアプリケーションコードは１つのアプリケーションを起動させるが、生成されるクライアントアプリケーションコードは、複数のアプリケーションを起動させても良い。
【００３６】
図４は図２のシステム２００を示し、クライアントアプリケーションコードジェネレータ２０４が要求１１０で要求されるウェブアプリケーションに対応するクライアントアプリケーションコード４０６を生成する。一実施形態において、アプリケーション計測モジュール２０６は、スキャニングポリシーに基づきクライアントアプリケーションコード４０６をインターセプトするべく構成されて良い。一実施形態において、管理サーバ２０８は、スキャニングポリシー構成指示４０２に従ってアプリケーション計測モジュール４０４のスキャニングポリシーを構成することができる。
【００３７】
例えば、図５は、一例の実施形態に従う、管理サーバ２０８のブロック図を示す。図５に示すように、管理サーバ２０８には、スキャニングポリシー構成モジュール５０２、監視ポリシー構成モジュール５０４、およびパフォーマンスデータ受信モジュール５０６が含まれる。一実施形態において、スキャニングポリシー構成モジュール５０２は、アプリケーション計測モジュール４０４によって使用されるスキャニングポリシーを構成するために使用されるスキャニングポリシー構成指示４０２を生成して良い。例えば、図６は、一例の実施形態に従う、アプリケーション計測モジュール４０４のブロック図を示す。図６に示すように、アプリケーション計測モジュール４０４には、アプリケーションスキャニングモジュール６０２および計測挿入モジュール６０４が含まれる。アプリケーションスキャニングモジュール６０２は、スキャニングポリシー構成指示４０２を受け取り、また、クライアントアプリケーションコードを計測するかどうかを判定するスキャニングポリシー構成指示４０２に従って、応答パイプライン２０２を通過するウェブアプリケーション（例えば、クライアントアプリケーションコード４０６）をスキャンするべく構成される。
【００３８】
例えば、管理サーバ２０８のユーザ（例えば、操作マネージャまたはシステム管理者）は、ユーザインターフェース（例えば、グラフィカルユーザインターフェース（ＧＵＩ）、キーボード、ポインティングデバイスなど）と対話して、アプリケーションサーバ１０４により与えられるウェブアプリケーションのためのスキャニングポリシーを入力することができる。例えば、ユーザが、特定のウェブアプリケーション（例えば、機能またはファイル）を任意の方法で指定可能としても良く、例えば、ファイルの拡張子または形式（例えば、アドベ「登録商標」フラッシュ「登録商標」ファイル、マイクロソフト「登録商標」シルバーライト（商標）ファイル、他のメディアファイル型、．ｗｍｖ拡張子（例えば、ビデオファイル）、ｍｐ３拡張子（例えば、オーディオファイル）、など）で指定して計測することができる。指定されるウェブアプリケーションはスキャニングポリシー構成指示４０２で指示して良く、指示４０２はアプリケーションスキャニングモジュール６０２に送られる。アプリケーション計測モジュール２０６がクライアントアプリケーションコード４０６を受け取ると、クライアントアプリケーションコード４０６を計測すべきかどうかを判定する、スキャニングポリシー構成指示４０２により指示されるスキャニングポリシーに従って、アプリケーションスキャニングモジュール６０２がクライアントアプリケーションコード４０６をスキャンすることができる。
【００３９】
例えば、スキャニングポリシー構成指示４０２により、計測するためのマイクロソフト「登録商標」シルバーライト（商標）を起動させるウェブアプリケーションをインターセプトするようにアプリケーションスキャニングモジュール６０２を構成することができる。そのような実施形態の例において、アプリケーションスキャニングモジュール６０２は、語「Ｓｉｌｖｅｒｌｉｇｈｔ」を捜して受け取ったクライアントアプリケーションコードをスキャンするべく構成されて良く、および／または、マイクロソフト「登録商標」シルバーライト（商標）のウェブアプリケーション機能性を検出するべく他の方法で構成されて良い。上記に示したクライアントアプリケーションコードの例（メディアプレーヤとしてマイクロソフト「登録商標」シルバーライト（商標）を起動させる）を参照すると、本例のクライアントアプリケーションコードがアプリケーション計測モジュール２０６で受け取られる場合は、アプリケーションスキャニングモジュール６０２は、クライアントアプリケーションコード内の語「Ｓｉｌｖｅｒｌｉｇｈｔ」を検出でき、従って、計測するためのクライアントアプリケーションコードをインターセプトすることができる。構成されたスキャニングポリシーに従って、受け取ったクライアントアプリケーションコードが計測をトリガーするコンテンツを含まないことを、アプリケーションスキャニングモジュール６０２がスキャン中に判定する場合、受け取ったクライアントアプリケーションコードは、応答パイプライン２０２において処理を継続することが許可され、計測されずにクライアント１０２に提供される。
【００４０】
ステップ３０６にて、計測コードがクライアントアプリケーションコードに挿入されて計測済クライアントアプリケーションコードが生成される。一実施形態において、アプリケーションスキャニングモジュール６０２が応答パイプライン２０２を流れる応答データストリーム内のクライアントアプリケーションコードをインターセプトし（ステップ３０４）、かつ、インターセプトしたクライアントアプリケーションコードは計測されるべきであると判定する場合、計測挿入モジュール６０４が、計測コードをインターセプトされたクライアントアプリケーションコードに挿入して、計測済応答データストリームを生成するべく構成される。一実施形態において、計測挿入モジュール６０４は、インターセプトされたクライアントアプリケーションコードを分析して、監視すべきクライアントアプリケーションコードの１つまたは複数の機能を判定するべく構成されて良い。計測挿入モジュール６０４は、監視したいクライアントアプリケーションコードの１つまたは複数の機能を監視するように、挿入される計測コードを構成されて良い。挿入される計測コードは、インターセプトされたクライアントアプリケーションコードに関するパフォーマンスの態様を監視するべく構成される。図４に示すように、アプリケーション計測モジュール２０６は、計測済クライアントアプリケーションコード１１２を生成することができ、コード１１２は、受け取ったクライアントアプリケーションコード４０６の計測済のものである。
【００４１】
上述の生成されたクライアントアプリケーションコードの例を参照すると、計測コードは、クライアントアプリケーションコード例のパフォーマンスの態様を監視するべく挿入されて良い。例えば、計測コードの一例が以下に示され（簡単に例示するために、少なくとも部分的に疑似コードとして与えられている）、これを上述の生成されたクライアントアプリケーションコードの例に挿入して良い。
<script type="text/javascript"> 
Function makeCall (operationName ,counterName) 
{ 
//pseudo code 
call _webService (operationName ,counterName) // e.g operationName = StartPerfCounter and counterName= "Page Load" 
} 
</script>
本例の計測コードは、ｊａｖａｓｃｒｉｐｔのスクリプトであって、「ｍａｋｅＣａｌｌ」関数を「ｏｐｅｒａｔｉｏｎＮａｍｅ」および「ｃｏｕｎｔｅｒＮａｍｅ」のパラメータで起動することにより呼び出されると時間またはパフォーマンスのカウンタ値を提供するように構成される。スクリプトは様々な目的に使用することができ、例えば、上記の例のクライアントアプリケーションコードにおいてマイクロソフト「登録商標」シルバーライト（商標）メディアプレーヤを使用して参照されたメディアファイルを再生するのにかかる時間を判定することなどができる。起動されると、本スクリプトは、リモートの管理サーバ（例えば、管理サーバ２０８）に対して呼び出しを行い（「＿ｗｅｂＳｅｒｖｉｃｅ」）、「ｏｐｅｒａｔｉｏｎＮａｍｅ」、「ｃｏｕｎｔｅｒＮａｍｅ」およびパフォーマンスのカウンタ値を与える。このパフォーマンス情報は、対応する関数がいつ発生したかを判定するために管理サーバにおいて使用されて良い。
【００４２】
本計測コードは、生成されたクライアントアプリケーションコードに挿入させることができ、生成されたクライアントアプリケーションコードは、計測挿入モジュール６０４によりさらに変更されて、クライアントアプリケーションコードがブラウザで起動される様々な時に、挿入された計測コードを起動させることができる。例えば、上記で示した計測コード例を含む上記で示したクライアントアプリケーションコード例の一例の計測の形式を以下に示す。本例の計測済クライアントアプリケーションコードは、例示の目的で提供されるものであり、制限することは意図されず、多数の代替の方法で構成されて良い。
<header>
<script type="text/javascript"> 
Function makeCall (operationName ,counterName) 
{ 
//pseudo code 
call _webService (operationName ,counterName) // e.g operationName = StartPerfCounter and counterName= "Page Load" 
} 
</script> 
</header> 
<body> 
<script type="text/javascript">makeCall("StartPerfCounter", "Page Load")</script> 
<form name="forml" method="post" action="Default.aspx" id="forml"> 
//<! [CDATA[ 
Sys.Application.initialize(); 
Sys.Application.add_init(function() { 
$create(Sys.UI.Silverlight.MediaPlayer, 
{"autoPlay":true,"mediaSource":http://www.webinfocentral.com/VIDEO/JJ2008/WMV/JJ 
2008_100.wmv....{"mediaEnded":OnClientMediaEnded,"mediaOpened":OnClientMedia 
Opened} .... }); 
//]]> 
</form> 
<script type="text/javascript">makeCall("EndPerfCounter", "Page Load")</script> 
</body> 
上記に示すように、先に記載したｊａｖａｓｃｒｉｐｔのスクリプトがクライアントアプリケーションコード例のヘッダ部に挿入されている。さらに、クライアントアプリケーションコード例はコードの４か所で変更され、ヘッダのスクリプトが４か所のそれぞれで起動されるようになっている。
【００４３】
例えば、クライアントアプリケーションコード例は、ヘッダのスクリプトを起動させて、その時に、挿入されたコード＜ｓｃｒｉｐｔ  ｔｙｐｅ＝“ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ”＞ｍａｋｅＣａｌｌ（“ＳｔａｒｔＰｅｒｆＣｏｕｎｔｅｒ”，“ＰａｇｅＬｏａｄ”）で示されるように、クライアントアプリケーションコード例で表されるページがロードを開始するように構成される。次に、メディアプレーヤにヘッダのスクリプトを起動させて、その時に、挿入されたコード“ｍｅｄｉａＯｐｅｎｅｄ”：ＯｎＣｌｉｅｎｔＭｅｄｉａＯｐｅｎｅｄで示されるように、メディアファイル（「．ｗｍｖ」ファイル）が開かれる。次に、メディアプレーヤにヘッダのスクリプトを起動させて、その時に、挿入されたコード“ｍｅｄｉａＥｎｄｅｄ”：ＯｎＣｌｉｅｎｔＭｅｄｉａＥｎｄｅｄで示されるように、メディアファイルが閉じられる。さらに、メディアプレーヤにヘッダのスクリプトを起動させて、その時に、挿入されたコード＜ｓｃｒｉｐｔｔｙｐｅ＝“ｔｅｘｔ／ｊａｖａｓｃｒｉｐｔ”＞ｍａｋｅＣａｌｌ（“ＥｎｄＰｅｒｆＣｏｕｎｔｅｒ”，“ＰａｇｅＬｏａｄ”）＜／ｓｃｒｉｐｔ＞で示されるように、クライアントアプリケーションコード例で表されるページがロードを終了する。
【００４４】
このようにして、本例では、ヘッダのスクリプトを使用して、クライアントアプリケーションコード例により表されるページのロード開始時間およびロード終了時間、ならびにロード期間（ロード開始時間またはカウンタ値をロード終了時間またはカウンタ値から引くことにより求められる）を示すパフォーマンス情報をキャプチャすることが可能である。さらに、ヘッダのスクリプトを使用して、メディア再生開始時間およびメディア再生終了時間、ならびに再生期間（再生開始時間またはカウンタ値を再生終了時間またはカウンタ値から引くことにより求められる）を示すメディアファイル（「．ｗｍｖ」ファイル）のパフォーマンス情報をキャプチャすることが可能である。
【００４５】
このように、計測挿入モジュール６０４は、計測コードをインターセプトされたクライアントアプリケーションコードの１つまたは複数の場所に挿入して、計測済ウェブアプリケーションがブラウザでレンダリングされる時に１つまたは複数のスクリプト／コード部分が起動されることを可能にするように、構成されて良い。計測済ウェブアプリケーションに関する任意の１つまたは複数のパフォーマンスの態様は、任意の数の挿入された計測コード部分で監視することができる。例えば、ネットワーク関連の態様を監視しても良く、計測済ウェブアプリケーションをロードするための、ロード開始時間およびロード終了時間ならびにロード期間を判定することが含まれる。ブラウザ関連の態様を監視しても良く、参照されたメディアファイルなどを再生するための、メディアファイル再生の開始時間および終了時間ならびに再生期間が含まれる。さらに、計測コードは、クライアントコンピュータシステムおよび／またはブラウザに関する情報、例えば、クライアントのブラウザのタイプ、ブラウザのバージョン、クライアントコンピュータのタイプ、クライアントコンピュータの場所、クライアントコンピュータの言語、クライアントコンピュータのオペレーションシステムのタイプ／バージョンなど、を収集するべく構成されて良い。
【００４６】
一実施形態において、アプリケーション計測モジュール２０６は、監視ポリシーに基づきクライアントアプリケーションコード４０６を計測するべく構成されて良い。一実施形態において、管理サーバ２０８は、監視ポリシー構成指示４０４に従って、アプリケーション計測モジュール４０４のための監視ポリシーを構成することができる。例えば、図５および６に示すように、計測挿入モジュール６０４は、監視ポリシー構成モジュール５０４により生成される監視ポリシー構成指示４０４に従って、インターセプトされたクライアントアプリケーションコード４０６を変更するべく構成されて良い。
【００４７】
例えば、管理サーバ２０８のユーザ（例えば、操作マネージャまたはシステム管理者）は、ユーザインターフェース（例えば、グラフィカルユーザインターフェース（ＧＵＩ）、キーボード、ポインティングデバイスなど）と対話して、インターセプトされたウェブアプリケーションのための監視ポリシーを入力することができる。例えば、ユーザが、特定のウェブアプリケーション（例えば、機能またはファイル）に適用される特定の計測コードを任意の方法で指定可能としても良く、例えば、ファイルの拡張子または形式（例えば、アドベ「登録商標」フラッシュ「登録商標」ファイル、マイクロソフト「登録商標」シルバーライト（商標）ファイル、他のメディアファイル型、．ｗｍｖ（ウィンドウズメディア「登録商標」ビデオ）拡張子、．ｍｐ３拡張子など）で指定して計測することができる。指定される監視ポリシーは監視ポリシー構成指示４０４で指示して良く、指示４０４は計測挿入モジュール６０４に送られる。アプリケーション計測モジュール２０６がクライアントアプリケーションコード４０６を受け取ると、監視ポリシー構成指示４０４により提供される監視ポリシー従って、計測挿入モジュール６０４はインターセプトされたクライアントアプリケーションコード４０６を変更することができる
【００４８】
ステップ３０８にて、計測済クライアントアプリケーションコードがクライアントに送信されるべく提供される。例えば、図４に示すように、応答パイプライン２０２において生成される計測済クライアントアプリケーションコード１１２は、アプリケーションサーバ１０４からクライアント１０２に送信されて良い。一実施形態において、アプリケーションサーバ１０４には、本明細書の他箇所で説明されるように、クライアントアプリケーションコード１１２を含む情報を通信リンク上に送信するためのネットワークインターフェースが含まれて良い。応答パイプライン２０２は、計測済クライアントアプリケーションコード１１２を出力してネットワークインターフェースに提供し、クライアント１０２に送信されるようにすることができる。
【００４９】
Ｂ．応答パイプラインの実施形態の例
応答パイプライン２０２は、ウェブアプリケーション要求に応答して計測済ウェブアプリケーションを種々の方法で生成するべく構成されて良い。例えば、一実施形態において、応答パイプライン２０２は、ウェブアプリケーション要求を処理するべく構成され、かつ、ウェブアプリケーションの計測が可能であるように変更されるＷＣＦ（Ｗｉｎｄｏｗｓ（登録商標）  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ）パイプランまたはＨＴＴＰ（ｈｙｐｅｒｔｅｘｔ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）パイプラインであって良い。図７から９は、実施形態に従う、ウェブアプリケーション要求に応答して計測済ウェブアプリケーションを生成するべく構成される応答パイプライン２０２の例のブロック図を示す。図７から９について以下に記載する。
【００５０】
図７は、一例の実施形態に従う、ＨＴＴＰパイプライン７０２のブロック図を示す。ＨＴＴＰパイプライン７０２は、応答パイプライン２０２の一例であり、クライアントアプリケーションコードがＨＴＴＰパイプライン７０２を通過する時に計測コードをクライアントアプリケーションコードに挿入するべく構成される。例えば、図４を参照すると、アプリケーションサーバ１０４はウェブサーバとして機能することができ、ウェブアプリケーション要求１１０はブラウザ１０６からウェブサーバへのＡＳＰ．ＮＥＴページを求める要求となって良い。ＡＳＰ．ＮＥＴは、ワシントン州レドモンドのマイクロソフト社により開発されたウェブアプリケーションのフレームワークである。このような例において、アプリケーションサーバ１０４のＡＳＰ．ＮＥＴエンジンは、クライアントアプリケーションコード４０６をマークアップページとして生成するＨＴＴＰパイプラインの複数の段階を起動させることができ、コード４０６はブラウザ１０６に返され表示用にレンダリングされる。図７の実施形態において、ＨＴＴＰパイプライン７０２は、クライアントアプリケーションコード４０６をマークアップページとして生成するべく、かつ、計測コードをマークアップページに挿入して計測済クライアントアプリケーションコード１１２を生成するべく、構成される。
【００５１】
図７に示すように、ＨＴＴＰパイプライン７０２には複数の段階が含まれ、これには第１番目から第ｎ番目の段階７０４ａから７０４ｎ、および応答フィルタ７０６が含まれる。段階７０４ａから７０４ｎはそれぞれ、クライアントアプリケーションコード４０６を生成することに向けられる、対応する機能を実行するべく構成されて良く、該機能には、認証（例えば、安全な通信のためにブラウザ１０６を認証する）、承認（要求１１０のためのアクセスを確認する）、要求されたウェブアプリケーションに対応するクライアントアプリケーションコード４０６の生成などがある。例えば、一実施形態において、クライアントアプリケーションコードジェネレータ２０４は、第１番目から第ｎ番目の段階７０４ａから７０４ｎの内の１つ、例えば、段階７０４ａであって良い。さらに、アプリケーション計測モジュール２０６（例えば、図６のアプリケーションスキャニングモジュール６０２および計測挿入モジュール６０４）は、ＨＴＴＰフィルタである応答フィルタ７０６内に含まれて良い。
【００５２】
応答フィルタ７０６は、クライアントアプリケーションコード４０６をインターセプトするべく（例えば、図３のステップ３０４）、かつ、計測コードをクライアントアプリケーションコード４０６に挿入して計測済クライアントアプリケーションコード１１２を生成するべく（例えば、図３のステップ３０６）、構成される。一実施形態において、応答フィルタ７０６のアプリケーションスキャニングモジュール６０２は開発者により構成されて良い。開発者はアプリケーションスキャニングモジュール６０２に含まれるカスタムユーザコントロールを生成することができる。カスタムユーザコントロールは、開発者が計測コードを挿入させたいクライアントアプリケーションコードのページの特定の型を検出するべく構成される。例えば、カスタムユーザコントロールは、所定の基準、例えば、特定のファイルの型、ファイルの拡張子、および／または他の属性を検索して、計測すべきクライアントアプリケーションコードのページを検出するべく構成されて良い。クライアントアプリケーションコード４０６がＨＴＴＰパイプライン７０２を通過するたび、アプリケーションスキャニングモジュール６０２がクライアントアプリケーションコード４０６をスキャンする。カスタムユーザコントロールにより、受け取ったクライアントアプリケーションコード４０６に所定の基準の１つまたは複数が含まれると判定される場合、アプリケーションスキャニングモジュール６０２は、計測挿入モジュール６０４による計測のためにクライアントアプリケーションコード４０６を示す。
【００５３】
応答フィルタ７０６のアプリケーションスキャニングモジュール６０２により使用されて良いカスタムユーザコントロールの例を以下に示す。
public partial class ScriptWebUserControll : System. Web.UI.UserControl 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
} 
protected override void OnInit(EventArgs e) 
{ 
this.Page.Response.Filter = new PerfFilter(Response.Filter); 
base.Onlnit(e); 
} 
} 
上記に示すように、このカスタムユーザコントロールは、クライアントアプリケーションコード４０６をスキャンして計測すべきクライアントアプリケーションコード４０６を示す１つまたは複数の特定の属性を探すべく構成されるＰｅｒｆＦｉｌｔｅｒ（Ｒｅｓｐｏｎｓｅ．Ｆｉｌｔｅｒ）関数を起動させる。本例のカスタムユーザコントロールは、例示の目的で提供されるものであり、制限することは意図されない。カスタムユーザコントロールが任意の数の方法で構成されて良いことは、本明細書における教示から当業者には理解されるであろう。
【００５４】
さらに、上記に示すカスタムユーザコントロール例により計測が指示される場合、クライアントアプリケーションコード４０６を変更して計測コードを挿入するために、応答フィルタ７０６の計測挿入モジュール６０４に含まれて良い変更コードの一例を以下に示す。
public class PerfFilter : MemoryStream 
{ 
private Stream originalStream; 
public override void Write(byte[] buffer, int offset, int count) 
{ 
// inject the response in the stream based on configuration policies 
originalStream. Write(UTF8Encoding.UTF8.GetBytes(contentInBuffer), offset, 
UTF8Encoding.UTF8.GetByteCount(contentInBuffer)); 
} 
} 
上記に示すように、この変更コードは、計測コードをクライアントアプリケーションコード４０６に挿入するべく構成されて良いｏｒｉｇｉｎａｌＳｔｒｅａｍ．Ｗｒｉｔｅ関数を起動させる。本変更コードは、カスタムユーザコントロール例の開発者により生成され、クライアントアプリケーションコード４０６を所望の通りに変更することができる。本例の変更コードは例示の目的で提供されるものであり、制限することは意図されない。変更コードが任意の数の方法で構成されて良いことは、本明細書における教示から当業者には理解されるであろう。
【００５５】
図８は、別の実施形態に従う、ＨＴＴＰパイプライン８０２のブロック図を示す。ＨＴＴＰパイプライン８０２は応答パイプライン２０２の一例であり、クライアントアプリケーションコードがＨＴＴＰパイプライン８０２を通過する時に計測コードをクライアントアプリケーションコードに挿入するべく構成される。図８の実施形態において、ＨＴＴＰモジュールを使用して図７と同様の手法で計測コードがクライアントアプリケーションコードに挿入され、カスタムユーザコントロールは使用されず、計測済コードは構成宣言に基づき挿入される。このように、図８の実施形態においては、クライアントアプリケーションコードがＨＴＴＰパイプライン８０２を通過する時、計測コードは全てのクライアントアプリケーションコードに挿入され、所定のフィルタ基準を満たすクライアントアプリケーションコードに挿入されるのではない。
【００５６】
図８に示すように、ＨＴＴＰパイプライン８０２には、第１番目から第ｎ番目のＨＴＴＰモジュール８０４ａから８０４ｎ、およびＨＴＴＰハンドラ８０６が含まれる。ＨＴＴＰモジュールおよびＨＴＴＰハンドラは、ＡＳＰ．ＮＥＴアーキテクチャ等のアーキテクチャに含まれる。各ウェブアプリケーション要求は、複数のＨＴＴＰモジュール（例えば、認証モジュール、セッションモジュールなど）により処理されて良く、続いてＨＴＴＰハンドラにより処理される。ＨＴＴＰハンドラがウェブアプリケーション要求を処理した後、ウェブアプリケーション要求はＨＴＴＰモジュールを介して戻される。従って、ＨＴＴＰモジュールをＨＴＴＰハンドラの実行の前後に呼び出すことができる。ＨＴＴＰモジュールは、開発者がそれぞれ個々のウェブアプリケーション要求へのインターセプト、関与または変更を行うことを可能にするべく、開発者により構成されて良い。
【００５７】
一実施形態において、アプリケーション計測モジュール２０６（例えば、図６のアプリケーションスキャニングモジュール６０２および計測挿入モジュール６０４）は、ＨＴＴＰモジュール８０４内、例えば、第ｎ番目のＨＴＴＰモジュール８０４ｎ内に含まれて良い。例えば、ＨＴＴＰモジュール８０４ｎは、クライアントアプリケーションコード４０６をインターセプトするべく（例えば、図３のステップ３０４）、かつ、計測コードをクライアントアプリケーションコード４０６に挿入して計測済クライアントアプリケーションコード１１２を生成するべく（例えば、図３のステップ３０６）、構成されて良い。
【００５８】
例えば、ＨＴＴＰモジュール８０４ｎはＩＨｔｔｐＭｏｄｕｌｅインターフェースを実装するべく構成されて良く、該インターフェースはＳｙｓｔｅｍ．Ｗｅｂ名前空間に配置される。マイクロソフト「登録商標」．ＮＥＴＦｒａｍｅｗｏｒｋのＩＨｔｔｐＭｏｄｕｌｅインターフェースは、ＨＴＴＰモジュールの初期化イベントと破棄イベントを実装クラスに提供する。＜ｈｔｔｐＭｏｄｕｌｅｓ＞の構成セクションハンドラは、ウェブアプリケーション内のＨＴＴＰモジュールを構成し、コンピュータ、サイト、またはアプリケーションのレベルで宣言可能である。計測コードを注入するために、ＩＨｔｔｐＭｏｄｕｌｅインターフェースを使用してＨＴＴＰモジュール８０４ｎを生成しても良い。ＩＨｔｔｐＭｏｄｕｌｅインターフェースは以下のシグネチャを有する２つのメソッドを持つ。
void Init(HttpApplication); 
void Dispose(); 
そのような実施形態において、アプリケーションスキャニングモジュール６０２は、クライアントアプリケーションコード１１２全てのインスタンスをインターセプトするべく構成されて良く、計測挿入モジュール６０４は、対応する計測コードを挿入するべく構成されて良い。例えば、全てのウェブアプリケーション要求１１０に対してＨＴＴＰモジュール８０４ａを初期化する時、クライアントアプリケーションコード４０６は、図７の（例えば、応答フィルタ７０６により変更された）ＨＴＴＰパイプライン７０２に関して上述したものと同様の様式で変更されて良い。Ｉｎｉｔの実装時、イベントＢｅｆｏｒｅＰｒｏｃｅｓｓＲｅｑｕｅｓｔおよびＡｆｔｅｒＰｒｏｃｅｓｓＲｅｑｕｅｓｔをサブスクライブ（予約）可能であり、クライアントアプリケーションコード４０６を変更して計測済クライアントアプリケーションコード１１２を生成し、クライアント１０２に送信しても良い。
【００５９】
図９は、別の実施形態に従う、応答パイプライン９０２のブロック図を示す。応答パイプライン９０２は応答パイプライン２０２の一例であり、クライアントアプリケーションコードが応答パイプライン９０２を通過する時に計測コードをクライアントアプリケーションコードに挿入するべく構成される。図９に示すように、応答パイプライン９０２にはプロファイラ９０４が含まれる。図９の実施形態において、プロファイラ９０４を使用して、クライアントアプリケーションコードをスキャンし、かつ、スキャニングポリシーを満たすクライアントアプリケーションコードに計測コードを挿入する。このように、一実施形態において、プロファイラ９０４には、アプリケーション計測モジュール２０６（例えば、図６のアプリケーションスキャニングモジュール６０２および計測挿入モジュール６０４）が含まれて良い。プロファイラ９０４は、クライアントアプリケーションコード４０６をインターセプトするべく（例えば、図３のステップ３０４）、かつ、計測コードをクライアントアプリケーションコード４０６に挿入して計測済クライアントアプリケーションコード１１２を生成するべく（例えば、図３のステップ３０６）、構成されて良い。
【００６０】
例えば、プロファイラ９０４は、マイクロソフト「登録商標」ビジュアルスタジオ「登録商標」インテリトレース技術等のＣＬＲ（Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ（共通言語ランタイム））プロファイラ技術を実装して、応答ハンドルを（例えば、ＰｒｏｃｅｓｓＲｅｑｕｅｓｔフレームワークの実装を用いて）変更することができる。この技術はウェブアプリケーションレベルまたはページレベルで適用可能であり、カスタムユーザコントロールを使用しない。代わりに、クライアントアプリケーションコードに挿入される計測コードに関するスキャニングポリシーは、１つまたは複数の構成ファイルを使用して記述されて良い。
【００６１】
このように、実施形態において、ウェブアプリケーションは、計測すべき特定のウェブアプリケーションページをスキャンすること、全てのウェブアプリケーションページを計測すること、または、特定のプロファイルを満たすウェブアプリケーションページを計測すること、などの種々の方法で、応答パイプライン２０２により計測可能である。例えば、上述のように、応答パイプライン２０２は、特定のウェブアプリケーションページ（例えば、カスタムユーザコントロールを含むページ）を計測するＨＴＴＰフィルタ（応答フィルタ７０６）、全ての要求されたウェブアプリケーションを計測するＨＴＴＰモジュール（例えば、ＨＴＴＰモジュール８０４ｎ）、または、マイクロソフト「登録商標」ビジュアルスタジオ「登録商標」インテリトレース等のプロファイラ技術、を使用することができる。さらなる実施形態において、応答パイプライン２０２は、要求されたウェブアプリケーションを計測するべくさらなる方法で構成されて良く、例えば、計測コードを要求されたウェブアプリケーションに挿入するＷＣＦパイプラインとして構成されても良く、または、他のタイプの応答パイプラインに対して、および／または他の方法で構成されて良い。 
【００６２】
Ｃ．例示の計測済ウェブアプリケーションのクライアント側のレンダリングおよび管理サーバとの対話
実施形態において、ウェブアプリケーションは要求されて、計測コードを含むクライアントにより受け取られて良い。計測コードを実行して、クライアントにてウェブアプリケーションのパフォーマンスの態様を監視することができる。図１０は、一例の実施形態に従う、図２のシステム２００を示し、要求１１０で要求されたウェブアプリケーションに対応する計測済クライアントアプリケーションコード１１２を受け取ったクライアント１０２を例示する。図１０のシステム２００が、図１１に関して以下にさらに説明され、一例の実施形態に従う、計測済ウェブアプリケーションをクライアントにて表示するためのフローチャート１１００が示される。一実施形態において、システム２００はフローチャート１１００に従って動作して良い。さらなる構造的および動作的な実施形態は、フローチャート１１００に関する検討に基づき当業者には明らかになるであろう。フローチャート１１００およびシステム２００について以下で説明する。
【００６３】
フローチャート１１００はステップ１１０２で開始される。ステップ１１０２において、要求がウェブアプリケーションを求めてサーバに送信される。例えば、図４について上述したように、ブラウザ１０６は、アプリケーションサーバ１０４に送信されるウェブアプリケーション要求１１０を生成することができる。
【００６４】
ステップ１１０４にて、要求に応答して、計測済クライアントアプリケーションコードがサーバから受け取られ、計測済クライアントアプリケーションコードにはサーバにおいて計測コードが挿入されている。例えば、図４について上述したように、ウェブアプリケーション要求１１０に応答して計測済クライアントアプリケーションコード１１２がアプリケーションサーバ１０４から受け取られる。計測済クライアントアプリケーションコード１１２にはアプリケーションサーバ１０４において挿入された計測コードが含まれる。
【００６５】
ステップ１１０６にて、計測済クライアントアプリケーションコードがレンダリングされる。例えば、図１０に示すように、クライアント１０２のブラウザ１０６は、レンダリングのための計測済クライアントアプリケーションコード１１２をロードして良い。ブラウザ１０６は、計測済クライアントアプリケーションコード１１２を当業者に既知の様式でレンダリングして良い。計測済クライアントアプリケーションコード１１２をレンダリングすることにより、要求されたウェブアプリケーションがブラウザ１０６において実行される。例えば、計測済クライアントアプリケーションコード１１２の特定の構成に応じて、メディアプレーヤ、ウェブメールツール、オンライン小売販売サイト、オンライオークション、ウィキ、および／または他のタイプのウェブアプリケーションが、ブラウザ１０６においてレンダリングされて良い。
【００６６】
ステップ１１０８にて、計測コードが、ステップ１１０６が行われている間に実行されてパフォーマンス情報がキャプチャされる。例えば、計測済クライアントアプリケーションコード１１２であるウェブアプリケーションがレンダリングされることに加えて、アプリケーションサーバ１０４において計測済クライアントアプリケーションコード１１２に挿入される計測コードが実行される。このように、計測コードによりキャプチャされるべく構成されるパフォーマンス情報がキャプチャされて良い。
【００６７】
例えば、図１２は、一例の実施形態に従う、計測済クライアントアプリケーションコード１１２のブロック図を示す。ウェブアプリケーションの機能性に加えて、計測済クライアントアプリケーションコード１１２にはパフォーマンス情報キャプチャモジュール１２０２、データ集約モジュール１２０４、およびサーバインターフェースモジュール１２０６が含まれて良い。計測済クライアントアプリケーションコード１１２のこれらの要素について以下で説明する。
【００６８】
パフォーマンス情報キャプチャモジュール１２０２は、ステップ１１０８に従ってパフォーマンス情報をキャプチャするべく構成される。ウェブアプリケーションおよびクライアント１０２に関連する任意のタイプのパフォーマンス情報が、パフォーマンス情報キャプチャモジュール１２０２によりキャプチャされて良い。ウェブアプリケーションに関してキャプチャすることができるパフォーマンス情報の例には、ウェブアプリケーションのレンダリング時間および／または期間、ウェブアプリケーションのロード時間、ウェブアプリケーションのエラー、および／または任意のメトリックが含まれる。アプリケーションの正常性に関連するパフォーマンス情報をキャプチャすることができ、ウェブアプリケーションの１つまたは複数の動作に応答性があるかどうかを示すキャプチャデータ、および／または、アプリケーションの実行中に１つまたは複数のエラーおよび／または異常を示すキャプチャエラー情報、が含まれる。キャプチャすることができるクライアント１０２に関連するパフォーマンス情報の例には、ブラウザ１０６のタイプおよび／またはバージョンを示すキャプチャデータ、クライアントのロケール（局所性）を示すキャプチャデータ、クライアントにおける言語を示すキャプチャデータ、クライアント１０２に実装されるオペレーティングシステムのタイプを示すキャプチャデータ、などが含まれる。
【００６９】
例えば、キャプチャされたパフォーマンス情報としてパフォーマンス情報キャプチャモジュール１２０２により計算されて良いメトリックの例に含まれるものは以下の通りである。マイクロソフト「登録商標」シルバーライト（商標）ウェブアプリケーションの例では、Ｓｙｓ．Ａｐｐｌｉｃａｔｉｏｎ．ｉｎｉｔ（）を使用して初期化されるマイクロソフト「登録商標」シルバーライト（商標）のフレームワークに対してメトリックが計算される。ＡＪＡＸベースのウェブアプリケーションの例では、ＡＪＡＸスクリプトのキュー（待ち行列）にあるローディング時間、および／またはＳｙｓ．Ａｐｐｌｉｃａｔｉｏｎ．ｎｏｔｉｆｙＳｃｒｉｐｔＬｏａｄｅｄ（）を使用するＡＪＡＸスクリプトのロード時間に対してメトリックが計算される。Ｓｙｓ．Ａｐｐｌｉｃａｔｉｏｎのロード／アンロードに対してそのイベントを使用してメトリックが計算される。Ｓｙｓ．Ｃｏｍｐｏｎｅｎｔの初期化に対してメトリックが計算される。Ｓｙｓ．Ｃｏｍｐｏｎｅｎｔ．＄ｃｒｅａｔｅに対してメトリックが計算される。別の例においては、パフォーマンス情報キャプチャモジュール１２０２は、Ｓｙｓ．ＳＣｒｉｐｔＬｏａｄＦａｉｌｅｄＥｘｃｅｐｔｉｏｎなどのスクリプトに対してＥｒｒｏｒ．ｃｒｅａｔｅによって作成されるＳｙｓ．Ｅｘｃｅｐｔｉｏｎの例外をキャプチャすることができる。パフォーマンス情報のこれらの例は、例示の目的で提供されるものであり、制限することは意図されない。実施形態において、パフォーマンス情報キャプチャモジュール１２０２は、ウェブアプリケーション、ブラウザ１０６、および／またはクライアント１０２に関連する任意のタイプのパフォーマンス情報をキャプチャするべく構成されて良い。図１２に示すように、パフォーマンス情報キャプチャモジュール１２０２は、キャプチャされたパフォーマンス情報１２０８を生成する。
【００７０】
ステップ１１１０にて、キャプチャされたパフォーマンス情報が集約される。ステップ１１１０は任意である。このステップを行う場合、図１２のデータ集約モジュール１２０４は、キャプチャされたパフォーマンス情報を収集するべく構成されて良い。例えば、ブラウザ１０６は、ユーザの要求に応じて、計測済クライアントアプリケーションコード１１２を複数回ロードおよびレンダリングすることができ（例えば、ステップ１１０６を複数回実行する）、計測済クライアントアプリケーションコード１１２がロードされレンダリングされる度に、対応するパフォーマンス情報がパフォーマンス情報キャプチャモジュール１２０２によりキャプチャされて良い。一実施形態において、データ集約モジュール１２０４を、計測済クライアントアプリケーションコード１１２のレンダリング毎に、レンダリング中にキャプチャされるパフォーマンス情報を収集および集約するために有して良い。
【００７１】
データ集約モジュール１２０４によるキャプチャされたパフォーマンス情報の集約は種々の方法で実行されて良い。例えば、一実施形態において、データ集約モジュール１２０４は、キャプチャされたパフォーマンス情報の各インスタンスをテーブル、アレー、または他のデータ構造に記憶させることにより、キャプチャされたパフォーマンス情報を集約することができる。別の実施形態において、データ集約モジュール１２０４は、キャプチャされたパフォーマンス情報に対して、キャプチャされたパフォーマンス情報を合計するなどの操作を行うこと、および／またはキャプチャされたパフォーマンス情報に対して他の演算操作を行うこと、によりキャプチャされたパフォーマンス情報を集約することができる。さらに別の実施形態において、データ集約モジュール１２０４は、キャプチャされたパフォーマンス情報を比較すること、キャプチャされたパフォーマンス情報を分類すること、および／または、キャプチャされたパフォーマンス情報を体系化するためのさらなる技術を実行すること、によりキャプチャされたパフォーマンス情報を集約することができる。図１２に示すように、データ集約モジュール１２０４は集約されたパフォーマンス情報１２１０を生成する。
【００７２】
ステップ１１１２にて、キャプチャされたパフォーマンス情報がサーバに送信される。例えば、一実施形態において、計測済クライアントアプリケーションコード１１２のサーバインターフェースモジュール１２０６は、キャプチャされたパフォーマンス情報をサーバに送信するべく構成される。例えば、図１０に示すように、サーバインターフェースモジュール１２０６は、キャプチャされたパフォーマンス情報１００２を管理サーバ２０８に送信するべく構成されて良い。管理サーバ２０８は、アプリケーションサーバ１０４とは別のサーバであっても良いし同じサーバであっても良い。管理サーバ２０８は、クライアント１０２に対してローカルなサーバ（例えば、「企業」サーバ）であって良いし、クライアント１０２からネットワーク１１６を介してアクセスされるサーバ（例えば、「クラウドベース」サーバ）であっても良い。クライアント１０２には、例えば、本明細書の他箇所に記載されるような、キャプチャされたパフォーマンス情報１００２を含む情報を通信リンクを介して送信するためのネットワークインターフェースが含まれて良い。
【００７３】
図１２に示すように、サーバインターフェースモジュール１２０６は、キャプチャされたパフォーマンス情報１２０８および／または集約されたパフォーマンス情報１２１０（存在する場合）を受け取ることができる。計測済クライアントアプリケーションコード１１２の各レンダリング中に、サーバインターフェースモジュール１２０６が、キャプチャされたパフォーマンス情報１２０８をキャプチャされたパフォーマンス情報１００２として管理サーバ２０８に送信するべく構成されて良い。別の実施形態において、サーバインターフェースモジュール１２０６は、周期的または非周期的に、集約されたパフォーマンス情報１２１０をキャプチャされたパフォーマンス情報１００２として管理サーバ２０８に送信するべく構成されて良い。例えば、所定の時間間隔で（例えば、１日に所定回数、１日に特定回数、１日に１回特定の時刻に、５日ごとに１回、１か月に一回など）または他の規則で、計測済クライアントアプリケーションコード１１２がブラウザ１０６により所定回数レンダリングされた後に、集約されたパフォーマンス情報１２１０を管理サーバ２０８に送信するべくサーバインターフェースモジュール１２０６が構成されて良い。
【００７４】
Ｄ．例示の管理サーバの実施形態
実施形態において、管理サーバ２０８は、計測済クライアントアプリケーションコード１１２から受け取ったキャプチャされたパフォーマンス情報１００２を任意の様式で特定の実装に対して必要に応じて、処理するべく構成されて良い。図１３は、一例の実施形態に従う、キャプチャされたパフォーマンス情報を管理サーバにて操作するためのフローチャート１３００である。一実施形態において、管理サーバ２０８はフローチャート１３００に従って動作して良い。さらなる構造的および動作的な実施形態は、フローチャート１３００に関する検討に基づき当業者には明らかになるであろう。フローチャート１３００について以下で説明する。
【００７５】
フローチャート１３００は、ステップ１３０２で開始される。ステップ１３０２にて、キャプチャされたパフォーマンス情報が、計測済クライアントアプリケーションコードからクライアントにおいて受け取られる。例えば、図１０に示すように、ブラウザ１０６において実行中の計測済クライアントアプリケーションコード１１２により生成されるキャプチャされたパフォーマンス情報１００２は、管理サーバ２０８によりクライアント１０２から受け取られて良い。例えば、図５に示すように、管理サーバ２０８には、キャプチャされたパフォーマンス情報１００２を受け取るべく構成されるパフォーマンスデータ受信モジュール５０６が含まれて良い。以下にさらに説明するように、パフォーマンスデータ受信モジュール５０６には、キャプチャされたパフォーマンス情報１００２を受け取るための１つまたは複数のインターフェースが含まれて良い。上述のように、キャプチャされたパフォーマンス情報１００２には集約されたパフォーマンス情報を含んでも含まなくても良い。
【００７６】
ステップ１３０４にて、受け取られたキャプチャされたパフォーマンス情報が処理される。実施形態において、管理サーバ２０８は、キャプチャされたパフォーマンス情報１００２を任意の様式で特定の実装に対して必要に応じて、処理するべく構成されて良い。キャプチャされたパフォーマンス情報１００２が集約されない場合、管理サーバ２０８は、データ集約モジュール１２０４について上述したものと同様の様式および／または任意の他の様式で、キャプチャされたパフォーマンス情報１００２を集約することができる。例えば、管理サーバ２０８は、集約されたデータが一人または複数人のユーザに対して提示される前にある期間にわたって、ウェブアプリケーション要求に対して平均応答時間などの稼働中のカウンタのレポートを生成することができ、これにはＳＣＯＭ（Ｓｙｓｔｅｍ  Ｃｅｎｔｅｒ  Ｏｐｅｒａｔｉｏｎｓ  Ｍａｎａｇｅｒ）管理グループがある。キャプチャされたパフォーマンス情報１００２を提供することにより、ユーザは、ウェブアプリケーションがクライアントコンピュータで利用可能であったかどうか、ウェブアプリケーションを提供するための応答時間、およびウェブアプリケーションがクライアントコンピュータにおいてエンドユーザの観点から首尾よく実行されたかどうか、を判定することが可能である。
【００７７】
管理サーバ２０８のパフォーマンスデータ受信モジュール５０６には、キャプチャされたパフォーマンス情報１００２をクライアントから受け取るための１つまたは複数のインターフェースが含まれて良い。例えば、上述の例には、「ｍａｋｅＣａｌｌ（ｏｐｅｒａｔｉｏｎＮａｍｅ，ｃｏｕｎｔｅｒＮａｍｅ）」関数が、クライアントアプリケーションコードから起動されて、時間またはパフォーマンスカウンタ値を管理サーバ２０８に提供するものがある。ｍａｋｅＣａｌｌ関数は、異なるｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータを使用して色々な方法で呼び出すことができ、パフォーマンスデータ受信モジュール５０６の対応するインターフェースにより扱われて良い。
【００７８】
例えば、パフォーマンスデータ受信モジュール５０６により実装されてキャプチャされたパフォーマンス情報を受け取ることができる例示のインターフェースのコードを以下に示す。
public interface ITxAxctualMonitoring 
{ 
[OperationContract] 
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle. Wrapped)] 
public int StartPerfCounter(Guid objectId, Guid instanceId, 
string counterName, int counterValue); 
[OperationContract] 
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle. Wrapped)] 
public int EndPerfCounter(Guid objectId, Guid instanceId, 
string counterName, int counterValue); 
[OperationContract] 
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle. Wrapped)] 
public int mediaOpened (Guid objectId, Guid instanceId, 
string counterName, int counterValue); 
[OperationContract] 
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle. Wrapped)] 
public int mediaEnded (Guid objectId, Guid instanceId, 
string counterName, int counterValue); 
[OperationContract] 
[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = 
WebMessageBodyStyle. Wrapped)] 
public int ReportException(Guid objectId, ExceptionData exception); 
} 
【００７９】
上記の例示のインターフェースコードでは、異なるｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータを使用するｍａｋｅＣａｌｌ関数の４つの可能な呼び出しに対応する４つのインターフェースが提供され、例外の関数に対応する追加の１つのインターフェースが含まれる。クライアント１０２における計測済クライアントアプリケーションコード１１２は、「ＳｔａｒｔＰｅｒｆＣｏｕｎｔｅｒ」および「Ｐａｇｅ  Ｌｏａｄ」をｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータとして使用してｍａｋｅＣａｌｌ関数を起動させることができる。このような場合、パフォーマンスカウンタ値は、ウェブアプリケーションのページロードの開始に対応して計測済クライアントアプリケーションコード１１２から受け取られて良い。「ｏｂｊｅｃｔＩｄ」および「ｉｎｓｔａｎｃｅＩｄ」のパラメータも、クライアント１０２を識別するために計測済クライアントアプリケーションコード１１２から管理サーバ２０８に受け取られて良い。
【００８０】
同様に、クライアント１０２における計測済クライアントアプリケーションコード１１２は、「ＥｎｄＰｅｒｆＣｏｕｎｔｅｒ」および「Ｐａｇｅ  Ｌｏａｄ」をｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータとして使用してｍａｋｅＣａｌｌ関数を起動させることができる。このような場合、パフォーマンスカウンタ値は、ウェブアプリケーションのページロードの終了に対応して計測済クライアントアプリケーションコード１１２から受け取られて良い。クライアント１０２における計測済クライアントアプリケーションコード１１２は、「ｍｅｄｉａＯｐｅｎｅｄ」および「ＯｎＣｌｉｅｎｔＭｅｄｉａＯｐｅｎｅｄ」をｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータとして使用してｍａｋｅＣａｌｌ関数を起動させることができる。このような場合、パフォーマンスカウンタ値は、．ｗｍｖメディアファイルのロードの開始に対応して計測済クライアントアプリケーションコード１１２から受け取られて良い。クライアント１０２における計測済クライアントアプリケーションコード１１２は、「ｍｅｄｉａＥｎｄｅｄ」および「ＯｎＣｌｉｅｎｔＭｅｄｉａＥｎｄｅｄ」をｏｐｅｒａｔｉｏｎＮａｍｅおよびｃｏｕｎｔｅｒＮａｍｅのパラメータとして使用してｍａｋｅＣａｌｌ関数を起動させることができる。このような場合、パフォーマンスカウンタ値は、．ｗｍｖメディアファイルのロードの終了に対応して計測済クライアントアプリケーションコード１１２から受け取られて良い。上記に示す追加の例示のインターフェースコードでは、クライアント１０２において、受け取ったウェブアプリケーションのロードまたはレンダリングが失敗した時に（例えば、．ｗｍｖファイルのレンダリングの失敗など）、計測済クライアントアプリケーションコード１１２による例外の情報の提供が可能にされる。
【００８１】
本例のインターフェースコードは、例示の目的で提供されるものであり、制限することは意図されない。パフォーマンスデータ受信モジュール５０６のインターフェースコードが任意の数の方法で構成されて良いことは、本明細書における教示から当業者には理解されるであろう。このようなインターフェースコードは、任意の数のパラメータを有し、任意のタイプおよび任意の量のキャプチャされたパフォーマンス情報を計測済クライアントアプリケーションコード１１２から受け取るべく構成されて良い。
【００８２】
Ｅ．例示の利点
実施形態により、本明細書に記載されるように、１つまたは複数の利点を提供することができる。そのような利点の例を以下に記載する。
【００８３】
開発者による関与と調整：Ｗｅｂ２．０のアプリケーションはまさにその本質により、ウェブアプリケーションが他のソースからのコンテンツおよびデータを組み合わせて情報の複雑なマッシュアップを作成するため、ウェブアプリケーション自体の中に動的コンテンツを含むこと、または他のソースからの動的コンテンツを含むことができる。開発者が特定の計測を注入しなければならない場合の（開発者がウェブアプリケーションのコンテンツを知っているからである）手法では、開発者が、計測コードおよび／または管理サーバをウェブアプリケーションのコンテンツの変更の度に変更しなければならないかもしれず、実現可能でないと思われる。一実施形態において、ヒューリスティックを用いて、ウェブアプリケーションでの使用に適切なタイプの計測の判定が可能であり、ウェブアプリケーションは応答パイプラインの通過の際に状況に応じて変更が可能である。このようなヒューリスティックでは、どのタイプのコンテンツおよび関数を示す必要があるかを判定すること、かつ、対応する計測コードを開発者の関与なしで注入することが可能である。
【００８４】
スケール：ラストマイルまたはエンドユーザの監視は典型的には、全てのユーザのデータが収集される、多様に対応可能な努力であり、このことがサーバのロードからも分析の観点からも情報のスケールの取り扱いを困難にしている。他の解決方法で、未加工のフォーマットでデータをキャプチャするともできるが、未加工のフォーマットではサーバのロードが増加され、集約のレベルを意味あるものにすることが必要とされる。実施形態においては、何を監視するかおよびいつ監視するかについての構成を制御可能であるため、情報のスマートなサンプリングを使用することでパフォーマンスおよびアベイラビリティの監視のための多種多様なデータを取得することが可能され、一方でサーバのロードを減少させ、かつ、複雑な分析の必要性を最小限にすることが可能である。例えば、クライアントの分類（例えば、モジラファイアーフォックス「登録商標」ブラウザの特定のバージョン）からのサンプルの代表的な１組のクライアントに関連するキャプチャされたデータが、実行されて良い（例えば、管理システムを壊さないように）。集約は、管理サーバに送信されるパフォーマンスデータが既に集約され簡単に使用できるように、クライアントに対して実行されて良い。一実施形態において、ウェブサービスは、それを監視／報告システムに対して利用可能にする前に追加的な集約を実行することもできる。
【００８５】
クライアントの構成との相関関係：エンドユーザの経験からは、データの分析を実行して、そのデータが、装置のタイプ、クライアントのバージョン、設置場所、コンテンツ、などによりクラスタ化されることが望ましい。この情報は、アプリケーションサーバ上では利用可能であるが、必ずしも管理サーバでは利用可能ではない。このように、解決方法には典型的には、複数のソースからデータを組み合わせて意味のあるものにすることを伴う。データ監視では、パフォーマンスおよびアベイラビリティのメトリックを提供することができるが、ＩＩＳログにアクセスしてクライアントブラウザのタイプおよびクライアントの場所を取得するする必要はない。このように、複雑な相関関係が、すぐに使用可能なデータを作成するにために必要とされる。実施形態において、挿入される計測コードが、クライアントブラウザ，クライアントのロケールおよび／またはクライアントの言語に関するデータをキャプチャするためのコードを含んで良く、それらのデータはキャプチャされたパフォーマンス情報と共に管理サーバに掲示されて良い。このように、データセットのクラスタ化がより簡単にされる。全てのキャプチャされたデータを１つの場所に提供することにより、分析がより素早く実行され、パフォーマンスおよびアベイラビリティに伴う問題を狭めることが可能である。
【００８６】
動的な修復：Ｗｅｂ２．０のアプリケーションでは、開発者が、クライアントが使用する装置またはブラウザに適切なコンテンツを設計することにより、クライアントに配信されるコンテンツを自分独自のものにすることが可能である。開発者は、ネットワーク接続性に基づきコンテンツを調整して、より遅い接続でデータにアクセスするクライアントを考慮に入れることもできる。これは典型的には、コンテンツをどのように表示するかに関するハードコードされた規則で実装され、開発者がこのことを可能にするための適切な計測を追加することを含む。実施形態において、クライアントが実際にウェブアプリケーションを実行する時のパフォーマンス情報を判定するための適切な計測コードを追加することにより、アプリケーションがこれらの値に基づき新しいコンテンツを次にどのように実行または要求するのかを制御することができる。例えば、現在実行中のコンテンツのパフォーマンスが低いと判定される時に、計測コードが自動的に挿入されて、コンテンツのロードを停止させることができる。さらに、信頼性の低い広告が表示されてページ上の映像の閲覧のパフォーマンスが低いと思われるような場合、計測コードが挿入されてブラウザで閲覧されるコンテンツを変更することができる。このように、後続の要求が継続してパフォーマンスおよびアベイラビリティを低下させることはない。
【００８７】
ＩＩＩ．  例示のコンピュータ装置の実施形態
ブラウザ１０６、応答パイプライン１０８、応答パイプライン２０２、クライアントアプリケーションコードジェネレータ２０４、アプリケーション計測モジュール２０６、スキャニングポリシー構成モジュール５０２、監視ポリシー構成モジュール５０４、パフォーマンスデータ受信モジュール５０６、アプリケーションスキャニングモジュール６０２、計測挿入モジュール６０４、ＨＴＴＰパイプライン７０２、第１番目から第ｎ番目の段階７０４ａから７０４ｎ、応答フィルタ７０６、ＨＴＴＰパイプライン８０２、第１番目から第ｎ番目のＨＴＴＰモジュール８０４ａから８０４ｎ、ＨＴＴＰハンドラ８０６、応答パイプライン９０２、およびプロファイラ９０４は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組み合わせで実装することができる。例えば、ブラウザ１０６、応答パイプライン１０８、応答パイプライン２０２、クライアントアプリケーションコードジェネレータ２０４、アプリケーション計測モジュール２０６、スキャニングポリシー構成モジュール５０２、監視ポリシー構成モジュール５０４、パフォーマンスデータ受信モジュール５０６、アプリケーションスキャニングモジュール６０２、計測挿入モジュール６０４、ＨＴＴＰパイプライン７０２、第１番目から第ｎ番目の段階７０４ａから７０４ｎ、応答フィルタ７０６、ＨＴＴＰパイプライン８０２、第１番目から第ｎ番目のＨＴＴＰモジュール８０４ａから８０４ｎ、ＨＴＴＰハンドラ８０６、応答パイプライン９０２、および／またはプロファイラ９０４は、１つまたは複数プロセッサにおいて実行されるべく構成されるコンピュータプログラムコードとして実装することができる。あるいは、ブラウザ１０６、応答パイプライン１０８、応答パイプライン２０２、クライアントアプリケーションコードジェネレータ２０４、アプリケーション計測モジュール２０６、スキャニングポリシー構成モジュール５０２、監視ポリシー構成モジュール５０４、パフォーマンスデータ受信モジュール５０６、アプリケーションスキャニングモジュール６０２、計測挿入モジュール６０４、ＨＴＴＰパイプライン７０２、第１番目から第ｎ番目の段階７０４ａから７０４ｎ、応答フィルタ７０６、ＨＴＴＰパイプライン８０２、第１番目から第ｎ番目のＨＴＴＰモジュール８０４ａから８０４ｎ、ＨＴＴＰハンドラ８０６、応答パイプライン９０２、および／またはプロファイラ９０４は、ハードウェア論理／電気回路として実装することができる。
【００８８】
図１４は、本発明の実施形態を実装することができるコンピュータ１４００の例示の実装を示す。例えば、クライアント１０２、アプリケーションサーバ１０４、および／または管理サーバ２０８はそれぞれ、コンピュータ１４００と同様に実装されて良く、コンピュータ１４００の１つまたは複数の特徴および／または代替の特徴を有する。コンピュータ１４００は、例えば、従来のパーソナルコンピュータの形式の汎用のコンピュータ装置、モバイルコンピュータ、またはワークステーションであって良く、または、コンピュータ１４００は特定用途のコンピュータ装置であって良い。本明細書で提供されるコンピュータ１４００の説明は例示の目的で提供されるものであり、制限することは意図されない。本発明の実施形態は、さらなるタイプのコンピュータシステムにおいて実装されて良いことは、当業者には既知であろう。
【００８９】
図１４に示すように、コンピュータ１４００には、プロセシングユニット１４０２、システムメモリ１４０４、および、システムメモリ１４０４を含む種々のシステム構成要素をプロセシングユニット１４０２に連結させるバス１４０６が含まれる。バス１４０６はいくつかのタイプのバス構造のいずれかの内の１つまたは複数を表し、これに含まれるものには、メモリバスもしくはメモリコントローラ、周辺機器用バス、アクセラレイティッドグラフィックスポート、およびプロセッサ、または様々なバスアーキテクチャのいずれかを使用するローカルバスがある。システムメモリ１４０４には、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）１４０８およびＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）１４１０が含まれる。基本入出力システム１４１２（ＢＩＯＳ）はＲＯＭ１４０８に格納される。
【００９０】
コンピュータ１４００は、ハードディスクに読み書きを行うためのハードディスクドライブ１４１４、着脱可能磁気ディスク１４１８に読み書きを行うための磁気ディスクドライブ１４１６、および、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭまたは他の光媒体等の着脱可能光ディスク１４２２に読み書きを行うための光ディスクドライブ１４２０、といったドライブの内の１つまたは複数を有しても良い。ハードディスクドライブ１４１４、磁気ディスクドライブ１４１６、および光ディスクドライブ１４２０はそれぞれ、ハードディスクドライブインターフェース１４２４、磁気ディスクドライブインターフェース１４２６、および光ドライブインターフェース１４２８によりバス１４０６に対して接続される。ドライブおよび関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびコンピュータ用の他のデータの不揮発性記憶装置を提供する。ハードディスク、着脱可能磁気ディスクおよび着脱可能光ディスクについて記載したが、他のタイプのコンピュータ可読媒体を使用してデータを記憶することが可能であり、これにはフラッシュメモリカード、デジタルビデオディスク、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、などがある。
【００９１】
多数のプログラムモジュールがハードディスク、磁気ディスク、光ディスク、ＲＯＭまたはＲＡＭに記憶されて良い。これらのプログラムには、オペレーティングシステム１４３０、１つまたは複数のアプリケーションプログラム１４３２、他のプログラムモジュール１４３４、およびプログラムデータ１４３６が含まれる。アプリケーションプログラム１４３２またはプログラムモジュール１４３４には、例えば、ブラウザ１０６、応答パイプライン１０８、応答パイプライン２０２、クライアントアプリケーションコードジェネレータ２０４、アプリケーション計測モジュール２０６、スキャニングポリシー構成モジュール５０２、監視ポリシー構成モジュール５０４、パフォーマンスデータ受信モジュール５０６、アプリケーションスキャニングモジュール６０２、計測挿入モジュール６０４、ＨＴＴＰパイプライン７０２、第１番目から第ｎ番目の段階７０４ａから７０４ｎ、応答フィルタ７０６、ＨＴＴＰパイプライン８０２、第１番目から第ｎ番目のＨＴＴＰモジュール８０４ａ−８０４ｎ、ＨＴＴＰハンドラ８０６、応答パイプライン９０２、プロファイラ９０４、フローチャート３００、フローチャート１１００、および／またはフローチャート１３００（フローチャート３００、１１００および１３００の任意のステップを含む）を実装するためのコンピュータプログラム論理が含まれて良い。
【００９２】
ユーザは、キーボード１４３８およびポインティングデバイス１４４０などの入力装置を介してコンピュータ１４００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）に含まれるものには、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ、などがある。これらおよび他の入力装置は、バス１４０６に連結されるシリアルポートインターフェース１４４２を介してプロセシングユニット１４０２に連結されて良いが、パラレルポート、ゲームポート、またはＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインターフェースにより連結されても良い。
【００９３】
表示装置１４４４も、ビデオアダプタ１４４６などのインターフェースを介してバス１４０６に連結される。モニタに加えて、コンピュータ１４００には、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）が含まれて良い。
【００９４】
コンピュータ１４００は、アダプタまたはネットワークインターフェース１４５０、モデム１４５２、またはネットワーク上で通信を確立するための他の手段を介して、ネットワーク１４４８（例えば、インターネット）に接続される。モデム１４５２は、内蔵または外付けが可能で、シリアルポートインターフェース１４４２を介してバス１４０６に接続される。
【００９５】
本明細書において使用される時、用語「コンピュータプログラム媒体」および「コンピュータ可読媒体」は、概して、ハードディスクドライブ１４１４に関連するハードディスク、着脱可能磁気ディスク１４１８、着脱可能光ディスク１４２２などの媒体のみならず、フラッシュメモリカード、デジタルビデオディスク、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）などの他の媒体を指して使用される。
【００９６】
上記で言及したように、コンピュータプログラムおよびモジュール（アプリケーションプログラム１４３２および他のプログラムモジュール１４３４が含まれる）は、ハードディスク、磁気ディスク、光ディスク、ＲＯＭ、またはＲＡＭに記憶されて良い。そのようなコンピュータプログラムは、ネットワークインターフェース１４５０またはシリアルポートインターフェース１４４２を介して受け取られても良い。そのようなコンピュータプログラムは、アプリケーションにより実行またはロードされると、本明細書において検討した本発明の実施形態の特徴をコンピュータ１４００が実装することを可能にする。従って、そのようなコンピュータプログラムはコンピュータ１４００のコントローラに相当する。
【００９７】
本発明は、任意のコンピュータ使用可能媒体上に記憶されるソフトウェアを備えるコンピュータプログラム製品も対象とする。そのようなソフトウェアは、１つまたは複数データ処理装置において実行されると、本明細書において記載したようにデータ処理装置を動作させる。本発明の実施形態は、現在または将来において既知である任意のコンピュータ使用可能媒体またはコンピュータ可読媒体を採用する。コンピュータ可読媒体の例には、ＲＡＭ、ハードドライブ、フロッピー（登録商標）ディスク、ＣＤ  ＲＯＭ、ＤＶＤ  ＲＯＭ、ジップディスク、テープ、磁気記憶装置、光記憶装置、メモリ、ナノテクノロジーベースの記憶装置、などの記憶装置が含まれるがこれに限定されない。
【００９８】
ＩＶ．結び
本発明の種々の実施形態が上記に記載されたが、それらは単なる例として提示されたものであり、制限するものではないことは理解されるべきである。当業者には理解されるであろうが、形式や詳細についての種々の変更が、添付の請求項において定義されるような本発明の精神および範囲から逸脱することなく本明細書においてなされて良い。従って、本発明の広さおよび範囲は、上述の例示の実施形態のいずれによっても制限されるべきではなく、以下の請求項およびその等価物によってのみ定義されるべきである。
【図１】
2013532865.tif 000003
【図２】
2013532865.tif 000004
【図３】
2013532865.tif 000005
【図４】
2013532865.tif 000006
【図５】
2013532865.tif 000007
【図６】
2013532865.tif 000008
【図７】
2013532865.tif 000009
【図８】
2013532865.tif 000010
【図９】
2013532865.tif 000011
【図１０】
2013532865.tif 000012
【図１１】
2013532865.tif 000013
【図１２】
2013532865.tif 000014
【図１３】
2013532865.tif 000015
【図１４】
2013532865.tif 000016
【国際調査報告】
2013532865.tif 000017
2013532865.tif 000018