2014-10-02 502 views
2

這是一個Windows窗體應用程序。我使用秒錶來測量此操作的時間:HttpClient.PostAsync需要實際延遲時間的兩倍?

HttpResponseMessage response = await httpClient.PostAsync(EndPoint, stringContent); 

它出來是600-700毫秒。 Web服務的延遲時間爲〜250 ms。我檢查與提琴手和請求正在採取< 300毫秒。所以我的問題是爲什麼會有額外的300-400毫秒?

+0

您是否正在使用來自*相同*請求的測量值(對同一個API沒有不同的請求,但實際上是相同的網絡數據包)?你是否在循環中執行了相同的代碼並對結果取平均值? – 2014-10-02 15:58:16

+0

實際上,此API請求位於計時器刻度(intervel = 500)內。等待時間顯示在應用程序的狀態欄中。一位朋友建議PostAsync方法正在導致延遲。可能嗎? – 2014-10-03 06:08:32

+0

如果你的意思是我的問題的答案是「不」和「不」,那麼我建議你做這種測試。 – 2014-10-03 14:18:09

回答

1

您必須考慮往返。您的代碼有2部分:

  • 發送從您發送到Web服務的請求。
  • 讀取從Web服務發送給您的回覆。

所以你的請求仍然需要〜300ms,但響應也是如此,這就是爲什麼整個事情需要大約2倍的延遲。

+0

這看起來不對。 fiddler中整個流逝的列顯示〜300 ms。從ClientConnected到ClientDoneResponse的整個流程開始。 – 2014-10-02 07:35:07