2012-01-01 6 views
1

私は、FirebugのネットワークウォーターフォールタイムラインまたはPingdom.comのフルページテストと同様に、.NETの(HTTP)Webリクエストの各ステップを測定する方法を探しています。応答を受信 .NETのHttpWebRequestメトリックFirebugまたはPingdomツールに似ています

  • 応答を
  • 待ちリクエストを送る

    • 引きDNS
    • 接続
    • を:

      両示すタイムの最小公分母を共有

      は、各要求に必要スパン

    明らかに私はWeb要求のGetResponse()メソッドとGetResponseStream()メソッドを測定するタイマーですが、できるだけ多くの測定値を可能な限り細分化する方法を探しています。

    要求ライフサイクルの各段階を測定するのに.NETで最も良い方法は何ですか?

    ありがとうございました!

  • +1

    これを行うにはどうすればよいでしょうか? – James

    +0

    あなたは 'HTTPWebRequest'を掲示しているアプリケーションの内側から、あるいは別のアプリケーションからこれを達成する方法を探していますか?どちらの方法でも、SharpPcapを活用してネットワークトラフィックを監視することができます。 –

    +0

    M.Babcock、はい、Webリクエストを開始しているアプリケーションの内部でこれを行う方法を探しています。私はSharpPcapを見ていきます - それがうまくいくかもしれないAzureフレンドリーな限り。 –

    答えて

    1

    これを行うには、ETWトレースを参照してください。 AFAIK ETWトレースは、多くの.NET APIから大量の情報を出力します。リフレクターを使って.NETフレームワークをブラウズすると、少なくとも私はそれを見ています。

    ETWは、この操作を行うことができない場合、私はあなたがパイプラインで多くの関連ポイントをフックすることができますかなり確信している:

    • 引きDNS:検索を自分で行うとタイミングを測定します。 HttpWebRequestの内部ルックアップはキャッシュから提供され、0msで実行されます。
    • 接続します。あなたがリクエストを送るGetRequestStream()
    • を呼び出し、この起こった:あなたはGetRequestStream(呼び出したときにこれが)起こる(処分)
    • 応答を待つ:あなたはGetResponseStream(呼び出したときにこれが起こる)
    • 応答を受け取る:これは、GetResponseStream()。Read()が0を返すときに発生します。