有很多 Material 解释了为什么使用 svcutil.exe(或“添加服务引用”)不好——缺乏可测试性、紧耦合等。为简单服务手动创建客户端代理很简单,您只需要手动创建您的界面并创建一个 channel :
IMessageServiceAsync service = new ChannelFactory<IMessageServiceAsync>("BasicHttpBinding_IMessageEndpoint").CreateChannel();
我想为 Silverlight PollingDuplex 客户端做一些类似的事情。
这看起来更困难 - 生成的客户端继承自 System.ServiceModel.DuplexClientBase
- 我假设我手动创建的客户端也需要?或者有没有办法在不实现这个基类的情况下连接所有客户端 Duplex 回调功能?
有人试过吗?有可能吗?
最佳答案
有可能 - 您可以使用 DuplexChannelFactory<T>
类以类似于 ChannelFactory<T>
的方式创建代理你在你的例子中有,但你需要传递一个额外的参数(类型为 InstanceContext
),它将包含用于从服务器接收消息的回调接口(interface)的实现。
关于c# - 如何手动创建 Silverlight PollingDuplex 客户端/代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122591/