如何手动创建Silverlight PollingDuplex客户端/代理?

时间:2011-11-14 13:53:34

标签: c# .net silverlight wcf pollingduplexhttpbinding

有很多材料解释了为什么使用svcutil.exe(或“添加服务引用”)很糟糕 - 缺乏可测试性,紧密耦合等。手动为简单服务创建客户端代理很简单,只需手动创建你的界面并创建一个频道:

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

我想做类似的事情但是对于Silverlight PollingDuplex客户端。

这看起来更难 - 生成的客户端继承自System.ServiceModel.DuplexClientBase - 我假设我手动创建的客户端也需要?或者有没有办法连接所有客户端Duplex回调功能而不实现这个基类?

有没有人试过这个?它甚至可能吗?

1 个答案:

答案 0 :(得分:2)

有可能 - 您可以使用DuplexChannelFactory<T>类以与示例中的ChannelFactory<T>类似的方式创建代理,但是您需要传递一个额外的参数(键入InstanceContext)将包含用于从服务器接收消息的回调接口的实现。