- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我有这样的 WCF 服务契约(Contract)
[ServiceContract(CallbackContract = typeof(ICallback1),
SessionMode = SessionMode.Required)]
public interface IService1
{
// some methods
}
服务实现为 InstanceContextMode
设置了 InstanceContextMode.Single
ICallback1
类似于
public interface ICallback1
{
[OperationContract]
void Report(int someValue);
}
现在在客户端,我可以有一个实现 ICallback1 的类
class Callback1 : ICallback1
{
public void Report(int someValue)
{
// alert client
}
}
然后我像这样创建客户服务引用
Service1Client serviceClient = new Service1Client(new InstanceContext(new CallBack1()));
效果很好。现在的问题是我有一些客户对回调不感兴趣,所以我想我不需要为这些客户实现回调接口(interface)所以我尝试了这个
Service1Client serviceClient = new Service1Client(null);
和
Service1Client serviceClient = new Service1Client(new InstanceContext(null));
两者均报告参数不能为空
。我的问题是,如果客户端对回调不感兴趣,我如何在不传递回调对象的情况下创建服务引用。唯一的要求是所有客户都应该与同一个服务对话,否则我可以重组服务。有什么想法吗?
编辑:
我也为 ServiceContract 尝试了 SessionMode = SessionMode.Allowed
而不是 SessionMode.Required
但这也没有帮助。
最佳答案
解决方法:从 IService1 中删除 CallbackContract。创建 IDuplexService1 继承 IService1 并包含 CallbackContract。让 Service1Client 实现 IDuplexService1。实例化主机时,为 IService1 和 IDuplexService1 调用 ServiceHost.AddServiceEndpoint
。
关于c# - WCF 双工契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321024/
我正在寻找一个跨平台的 C++ master/worker 库或工作队列库。一般的想法是我的应用程序将创建某种任务或工作对象,将它们传递给工作主机或工作队列,这将依次在单独的线程或进程中执行工作。为了
我是一名优秀的程序员,十分优秀!