2010-06-17 72 views
3

我有一個WCF服務,在代碼中使用並生成爲ChannelFactory類。我知道使用WCF的正確方法是創建ChannelFactory(讓我們稱之爲AwesomeClient),完成工作,然後調用Close()。 這裏是我的片斷:WCF:不關閉ChannelFactory與不斷重新創建ChannelFactory並關閉ChannelFactory的比較

public static void DoSomething() 
    { 
     var client = new AwesomeClient(); 
     client.DoSomethingAwesome(); 
     client.Close(); 
    } 

不過,我期待那DoSomething的會相當頻繁地調用(比如10次一分鐘?),所以我得到的建議是實例化的ChannelFactory作爲靜態實例,總是重用相同的實例,並且永遠不必關閉它(因爲這比'總是重新創建ChannelFactory並關閉它'更便宜')。

我在這裏的第二意見,任何人都可以告訴我爲什麼不調用關閉和重用靜態實例是一個好主意?或者我應該堅持重新創建ChannelFactory並關閉() - 每次調用它?

回答

3

每分鐘10次並不常見。每秒10次,我絕對會考慮重複使用頻道。

您的案例中有很多未知因素可以作出正確的決定。將有多少客戶連接到該服務?這是什麼樣的連接(是否有機會下降幾分之一秒),有負載平衡器嗎?代理?

順便說一下,如果您決定每次打開和關閉通道,則不需要重新創建ChannelFactory。保持靜態,每次打開並關閉一個新頻道。創建工廠的大部分時間消耗更多資源。

+0

我決定打開和關閉每個通話的新頻道。感謝指針。 – Klaw 2010-06-19 15:35:35

相關問題