2015-02-24 35 views
0

我有winform應用程序,其中有從外部Web服務填充的自動填充框。它基於devexpress textedit,它具有很好的功能來緩衝緩衝的onedit事件(每次用戶輸入字符時都不會觸發)。 什麼是創建wcf頻道時的最佳做法,我應該優雅地做,並且對於每個onedit事件(仍然約1s時間段)創建新頻道並關閉它或更好地使用整個會話的一個頻道(形式生命期)?自動填充文本框的WCF客戶端生存期

回答

0

最安全的要做的是重新創建每個通話的頻道。

爲什麼?考慮在客戶端上有「長壽命」頻道的情況。如果(無論出於何種原因)通道故障,則該通道因此無法使用。如果你想再次擊中你的服務,你將不得不編寫代碼來檢測通道何時發生故障,並將其撕下並重新創建。您還需要記住在應用程序關閉之前處理您的頻道。對我而言,這引入您的編程模型的複雜性足以爲每次調用重新創建渠道。

this similar question的答案請注意,通過使通道處於打開狀態,您可以在客戶端上持有資源 - 在不再需要資源時立即處置資源。對於計算機來說,1秒就是一個年齡 - 你不希望這段時間持有你不需要的資源。

但是,您肯定希望緩存用於創建頻道的ChannelFactory - 但是一旦您擁有此功能,底層頻道的創建便宜。