我有一組使用依賴注入實現的WCF服務用於測試目的。WCF和依賴注入
基本上這些服務有時互相調用,所以在我的單元測試中,我可以使用接口將它們作爲服務構造函數中的組件注入庫和WCF服務。
這很好,因爲我可以正確地測試這些服務,沒有任何依賴性。
爲了避免使用Visual Studio服務引用(創建大量垃圾),我也實現了自己的代理,所以我使用了ChannelFactory的CreateChannel方法。
我有點擔心現場環境會發生什麼。
會發生什麼情況是,調用另一個WCF服務的WCF服務只有一個此外部組件實例注入到構造函數中,因此我不能在使用該對象時處置該對象。
這會造成麻煩嗎? 垃圾收集器會照顧它嗎? 連接是否仍然打開? 這種方法是錯誤的嗎?
非常感謝。
感謝您的回覆,但我的問題不是如何關閉連接。我想知道如何將WCF/Web服務注入組件並正確處理服務連接。問題在於,在構造函數中將它作爲參數意味着在類級別,我只有一個它的實例,並且一旦被調用另一個方法會引發異常,就會關閉它。默認情況下,每個服務調用都是不同的實例,所以這可能只是一個哲學問題。希望它是有道理的。 – matteo75 2012-01-16 11:01:54
@ matteo75我想我不清楚你的方法「外部組件」是渠道工廠還是渠道。如果渠道工廠,那麼我會更少關心處理。我認爲你的方法沒問題,但我會讓你的服務實現實現IDisposable並處理你的外部組件。在那裏設置一個突破口來驗證WCF是否應該遵守它。 – 2012-01-16 13:37:20
我正在使用ChannelFactory,但此刻我還沒有實現任何服務處置。我認爲它會沒事的,但我注意到IIS越來越多地使用內存(這是在回收後發佈的),這可能是由於這種未發佈的服務連接。我不是100%確定,只是一個猜測,但瞭解在依賴注入體系結構中關閉/處置服務的最佳實踐會很好。 – matteo75 2012-01-16 15:03:59