wcf双工通信问题!!!!!!!!!!!!!!!!!!!!!!!!!!!! 120
wcf服务器端:binding="netTcpBinding"[ServiceContract(CallbackContract=typeof(ICallBack))]p...
wcf服务器端:binding="netTcpBinding"
[ServiceContract(CallbackContract = typeof(ICallBack))]
public interface ISinterface
{
[OperationContract(IsOneWay = true)]
void Init();
[OperationContract]
String DoWork(string flg, string[] message, int n);
}
wcf客户端:
ServiceReference1.NMSinterfaceClient proxy = new ServiceReference1.NMSinterfaceClient(instanceContext, "NetTcpBinding_ISinterface");
加入CallbackContract之后服务引用问什么都必须带参数了?
因为我用到的函数比较多,有很多不需要服务器端回调,像DoWork()就不需要,要怎么设置在在客户端的引用不要带参数?
ServiceReference1.NMSinterfaceClient proxy = new ServiceReference1.NMSinterfaceClient();
这样就够了。
因为程序代码很多,只贴了要说的,可能表述上不是很清楚,如果有懂的没看明白我说的什么可以hi我,解答好了一定追加分。。。 展开
[ServiceContract(CallbackContract = typeof(ICallBack))]
public interface ISinterface
{
[OperationContract(IsOneWay = true)]
void Init();
[OperationContract]
String DoWork(string flg, string[] message, int n);
}
wcf客户端:
ServiceReference1.NMSinterfaceClient proxy = new ServiceReference1.NMSinterfaceClient(instanceContext, "NetTcpBinding_ISinterface");
加入CallbackContract之后服务引用问什么都必须带参数了?
因为我用到的函数比较多,有很多不需要服务器端回调,像DoWork()就不需要,要怎么设置在在客户端的引用不要带参数?
ServiceReference1.NMSinterfaceClient proxy = new ServiceReference1.NMSinterfaceClient();
这样就够了。
因为程序代码很多,只贴了要说的,可能表述上不是很清楚,如果有懂的没看明白我说的什么可以hi我,解答好了一定追加分。。。 展开
2个回答
展开全部
你都会写代码了,这个基础知识不应该不懂啊。要么就是我对你的问题理解错了?
所谓双工通讯,其实就是双向调用。
那如何进行双向调用呢,WCF给出了一个解决方案:客户端也起一个服务监听!
呵呵,当然这个只是打个比方,实际处理没有那么重量级。
但是,所谓“CallbackContract”,的确是一个动态的客户端的“服务”契约,用这个契约,服务就可以主动访问客户应用了,这个和标准的回调函数很相似吧,估计名字也就是这么来的:)
以上是基础知识解释。好了,下边正式回答你的问题:
首先,如果服务端不需要“回调”,那就不要在声明里使用CallbackContract,那么客户端自然也不需要在new的时候写入需要执行的具体回调处理方法名了。
第二,如果只是部分不需要,那么,最好把服务契约做一个明确划分,确定客户端访问时是否需要提供回调契约。
第三,即使声明了回调契约,客户端也实现了,DoWork内部也可以不调用契约接口啊,对系统性能没有任何影响。
如果没说清楚,你再问:)
所谓双工通讯,其实就是双向调用。
那如何进行双向调用呢,WCF给出了一个解决方案:客户端也起一个服务监听!
呵呵,当然这个只是打个比方,实际处理没有那么重量级。
但是,所谓“CallbackContract”,的确是一个动态的客户端的“服务”契约,用这个契约,服务就可以主动访问客户应用了,这个和标准的回调函数很相似吧,估计名字也就是这么来的:)
以上是基础知识解释。好了,下边正式回答你的问题:
首先,如果服务端不需要“回调”,那就不要在声明里使用CallbackContract,那么客户端自然也不需要在new的时候写入需要执行的具体回调处理方法名了。
第二,如果只是部分不需要,那么,最好把服务契约做一个明确划分,确定客户端访问时是否需要提供回调契约。
第三,即使声明了回调契约,客户端也实现了,DoWork内部也可以不调用契约接口啊,对系统性能没有任何影响。
如果没说清楚,你再问:)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询