2011-12-13 79 views
0

我正在關注WCF上的this教程,並且一切正常。看起來像這樣簡單的代碼,我應該可以調用從我的客戶端到服務器的任何類型的方法。我只對管道感興趣,根本沒有網絡。由ChannelFactory生成的WCF對象生命週期

我記得讀書的地方,這些對象從服務器,如pipeProxy在這個返回代碼:

IStringReverser pipeProxy = pipeFactory.CreateChannel(); 

將僅持續5分鐘,然後被安置或已完成或類似的東西。這是真的?每次我想調用我的一個服務器的方法時,我是否需要撥打ChannelFactoryCreateChannel?另外,我可以保留我的ChannelFactory實例嗎?或者它會在一段時間後自殺嗎?

我無法找到關於這些細節的許多信息,我所發現的是大量高級教程,主要討論關於像http和網絡等不關心的東西。我只需要在同一臺機器上的兩個應用程序之間進行基本的通信。能夠調用從應用程序A到應用程序B的方法是我所需要的。

那麼,有什麼我應該害怕的陷阱或者是鏈接教程中發佈的代碼是否足夠?我可以只學習本教程中的代碼,只需向示例類添加方法,一切都可以正常工作?或者還有什麼我需要知道嗎?

回答

1

你可以保留你的ChannelFactory,實際上你應該因爲創建一個而花費很多。

另一方面,創建新頻道不是一項昂貴的操作,每次需要創建(或重試)呼叫時都可以創建新頻道。

我沒有找到5分鐘的參考,所以我想這個教程的意思是,如果你保持連接打開超過5分鐘,那麼它會超時。如果您想保持連接在兩個應用程序之間始終打開,我建議您考慮DuplexChannels而不是

+0

在教程示例中,連接超時的含義是什麼?如果我在創建5分鐘後嘗試在「pipeProxy」中調用方法,是否會得到異常? – Juan

+0

不,如果您撥打電話,您將收到一個例外情況,但時間超過5分鐘。無論如何,爲什麼你會在創建頻道5分鐘後打電話?在撥打電話之前創建它,並在通話結束後處置它 –

+0

好的,我會嘗試看看它是如何發生的。 – Juan