2010-10-28 90 views
4

我在使用WCF服務時遇到了性能問題。當一個wcf客戶端連接到該服務時,爲什麼這麼慢?

這裏的故事:

  1. 我寫的這是由一個控制檯應用程序託管的自承載WCF服務;

  2. 我寫了一個簡單的客戶端來使用服務;

  3. WCF服務運行後,客戶端需要15秒以上才能創建與服務的連接。

WCF服務非常簡單,就像「Hello World」一樣。這是正常的嗎?

+0

您是否在Internet信息服務中託管WCF服務? – 2010-10-28 08:29:28

+0

不,它由控制檯應用程序託管 – Karla 2010-10-28 09:23:54

回答

0

這應有助於: http://msdn.microsoft.com/en-us/library/aa751883.aspx

如果你在IIS託管,需要一段時間來啓動不管。

+0

我沒有設計任何序列化/反序列化方法,只是從服務返回一個整數值。該服務託管在控制檯應用程序中。 – Karla 2010-10-28 09:22:35

+0

WCF擁有自己的合約[de]序列化器 - 即使您只是發送基本數據類型。話雖如此,無論我嘗試過什麼,WCF的第一次創業一直在我的系統上緩慢。我使用IIS託管,因此只需關閉定期應用程序池循環。 – 2010-10-28 09:51:18

3

一種方法可能是添加自己的warmup腳本;在初始加載時調用您的服務的腳本。

雖然,this answer可能對您有所幫助,通常情況下,第一次訪問服務速度較慢,但​​連續訪問時間在一兩秒鐘內。

第一個慢響應與服務程序集的JIT編譯有關;這意味着它的正常。

或者,您可能需要Profile您的應用程序。你也許想結賬這段時間我寫回的article

1

我們的經驗相同,我發現客戶端在實際打開TCP連接之前睡了14秒。

一個簡單的調用

binding.UseDefaultWebProxy = false; 

解決了這個。

相關問題