2010-06-21 59 views
2

我可以知道在WCF中使用channelfactory類。如果服務中有任何代碼更改,是否有助於我們防止手動更新服務參考?渠道工廠類 - WCF

回答

3

這是構建客戶端代理以調用您的服務的過程的一部分。

默認情況下,如果您執行「添加服務引用」,您只需獲得一個可以實例化並使用的(myService)Client類。

這樣做幕後什麼是過程分爲兩個步驟:

  • 創建通道工廠爲您服務合同(ChannelFactory<T>) - 這是有可能創造一個合同的能力的類 - 特定頻道(客戶端與被叫服務之間的通信鏈接)

  • 然後實際創建一個頻道使用該頻道工廠建立鏈接。

創建通道工廠是相當昂貴的一步 - 如果你做手工,你會想嘗試緩存這些通道工廠,只要你能。

從渠道工廠創建實際渠道並不是一項密集的任務。因此,如果您確實有權訪問您的服務合同(例如通過共享合同),您可以將創建客戶端代理的過程分成兩步,並有望優化第一步(通過緩存渠道工廠)。

但是,這又要求您直接訪問您的服務合同 - 通常只有在您控制通信的兩端並且兩端都是.NET的情況下。

+0

是否仍然可以使用Visual Studio的「添加服務引用」,但爲代理提供以前創建的Channel Factory?換句話說,我只想覆蓋通道工廠的創建並提供我自己的代碼,以便優化代理的實例化。 – 2011-08-30 20:01:34