2014-12-02 111 views
2

我們有一個WCF網站服務,它在我們的網站上定期使用。偶爾,我們會有大量的用戶訪問我們的網站。我不希望服務超時,如果需要運行超過一分鐘,我就可以。我也想設置服務上可能發生的併發請求數量。WCF服務綁定設置

我看到有很多超時設置可以在綁定上設置 - 所有的默認值都是1分鐘。對於這樣的情況,我應該設置什麼樣的超時設置,以及可以在哪裏設置最大併發請求數?

感謝

回答

3

爲了實現一個可擴展的WCF Web服務,您需要,除其他事項外,配置正確的併發模式,實例化模式和服務限制設置。

併發是指服務實例中同時執行的線程數。默認情況下,一個線程執行,但如果客戶端調用多個方法並且每個方法的時間都很短,則可能需要使用多個線程。

實例化是指服務實例的生命週期。您可以通過設置ServiceBehavior屬性的InstanceContextMode屬性來控制實例。此屬性有三種可能的值:

  • PerSession。 WCF運行時在客戶第一次調用服務時創建一個新的服務對象。它使對象保持活動狀態供客戶端進行後續調用。運行時在會話結束時釋放對象。這是此屬性的默認值。
  • PerCall。每次客戶端調用服務時,WCF運行時都會創建一個新的服務對象。它在通話後釋放對象。
  • Single。 WCF運行時在客戶第一次調用服務時創建一個新的服務對象。它使對象保持活動狀態,以供任何客戶端隨後的調用。

服務限制配置根據實例化和併發模式設置控制實例,會話和/或調用的最大數目。

<behaviors> 
    <serviceBehaviors> 
    <behavior name="Throttled"> 
     <serviceThrottling 
     maxConcurrentCalls="x" 
     maxConcurrentSessions="x" 
     maxConcurrentInstances="x" 
     /> 

以下文章應幫助您評估各種設置並選擇最適合您的方案的選項。

http://msdn.microsoft.com/en-us/library/ff183865.aspx
http://msdn.microsoft.com/en-us/library/ms731379%28v=vs.110%29.aspx
http://msdn.microsoft.com/en-us/library/vstudio/ms735114%28v=vs.100%29.aspx