2008-10-14 25 views
1

我們有一個DLL用作我們網站前端和後端票務系統之間的中間層。插入票務系統的方法有點複雜,但簡短的說法是速度慢。我收到的最好情況是提交時間爲9秒。爲什麼從網頁調用Web服務較慢?

但真正的問題是,我只能通過Windows應用程序獲得這個時間,而不是通過ASP.NET網站。我已經建立了一個Windows測試應用程序和一個網頁進行測試,即使代碼被複制在他們之間,網頁一直在17-20秒內提交,而Windows應用程序正在8-11秒。

可能是什麼原因造成的?

編輯:在回答了幾個問題的答案...

到Web服務調用正在大量的時間,但我已經在這個Web服務沒有控制權,因爲它是由票務提供系統供應商。我需要找出當Web服務被稱爲另一種應用程序時,爲什麼Web服務需要花費不同的時間。代碼在兩種情況下都完全相同,並且它運行一個循環,然後報告記錄的時間。

的代碼是:

for (int i = 0; i < numIterations; i++) 
     { 
      startTimes[i] = DateTime.Now; 

      try 
      { 
       cvNum = Clearview.Submit(req, DateTime.Now, DateTime.Now, false); 
      } 
      catch (Exception ex) 
      { 
       exceptionCount++; 
       lblResult.Text += @"<br />Exception Caught: " + ex.Message + @"<br />";      
      } 

      endTimes[i] = DateTime.Now; 
    } 

這是在兩種情況下相同的循環,權利之前,我打標時間和調用庫,它不會進一步處理,然後之後調用Web服務。但是,處理應該是一致的嗎?我已經在調試過程中跟蹤,沒有看到任何延遲進入實際的Web服務調用...

再次編輯:使用螞蟻,在這兩種情況下99.4%的時間正在發送只是在Web服務調用。這裏似乎沒有什麼區別......除了當超時的時間超過了Windows應用程序的時間。

+0

哪些Windows和Web客戶端用於Web服務? – 2008-10-14 16:50:32

+0

不確定你的意思是...? – CodeRedick 2008-10-14 17:24:28

+0

您是使用HttpWebRequest,生成的Reference.cs,JavaScript客戶端Web客戶端還是什麼? – 2008-10-14 17:39:00

回答

1

你是否在同一臺機器上運行?您呼叫的中間層位於遠程機器上嗎?您提到的持續時間隱約感覺像是一個DNS超時問題,當打開一個連接會導致第一個(向下/錯誤地址)的DNS響應超時處罰。你確定無論指向DLL到中間層的配置文件/ var在兩次調用中都是相同的嗎?

我第二個建議使用Wireshark來看看發生了什麼。您至少可以滿足自己,後端處理時間是(應該是,反正)相同...

1

在日誌的兩面用辣椒塗抹你的應用 - 這會告訴你時間在哪裏。如果這沒有幫助,請使用Wireshark來跟蹤網絡活動。

2

Web服務相對於Web服務器的位置可能存在問題。另外,Web UI中的頁面結構和其他處理可能會影響應用程序處理的時間。如上所述,雙方記錄項目是一個好主意,如果這不能滿足你的需求,你可以嘗試使用性能分析器,例如Red Gate的Ants Profiler,它可以幫助識別線條,方法或使用大部分時間的類。