2011-11-14 46 views
2

有很多材料解釋了爲什麼使用svcutil.exe(或「添加服務引用」)不好 - 缺乏可測試性,緊耦合等。爲簡單服務手動創建客戶端代理非常簡單,您只需手動創建接口並創建頻道:如何手動創建Silverlight PollingDuplex客戶端/代理?

IMessageServiceAsync service = new ChannelFactory<IMessageServiceAsync>("BasicHttpBinding_IMessageEndpoint").CreateChannel(); 

我想要做類似的事情,但對於一個Silverlight客戶端PollingDuplex。

這看起來更加困難 - 生成的客戶端繼承自System.ServiceModel.DuplexClientBase - 我假設我手動創建的客戶端也需要?或者有沒有辦法在沒有實現這個基類的情況下連接所有客戶端的雙工回調函數?

有沒有人試過這個?它甚至有可能嗎?

回答

2

這是可能的 - 你可以使用DuplexChannelFactory<T>類以類似的方式爲ChannelFactory<T>你在你的例子有創建一個代理,但你需要傳遞一個額外的參數(輸入InstanceContext),這將包含一個實現用於接收來自服務器的消息的回調接口。

+0

太棒了,謝謝卡洛斯。出於興趣,是否還有其他潛在的陷阱我應該知道? – MalcomTucker

+0

沒有特定於'DuplexChannelFactory'本身;由Add Service Reference(DuplexChannelBase的子類)生成的代理等同於由DuplexChannelFactory.CreateChannel()創建的代理。 – carlosfigueira

相關問題