C/S的程序,有100个客户端,每天会主动和服务端进行N次通信,假定某一时刻服务端也会主动通知所有客户端一条信息..
采用socket 客户端服务端都监听的方式可以解决,但总觉得双向监听不太好..
请教各位WCF能实现不?怎么实现?

解决方案 »

  1.   

    用MQ实现啦。WCF支持MQ就是为了做这个的。
      

  2.   

    不行啊.. MSMQ在xp上不支持远程读取消息..
      

  3.   

    WCF支持双工通讯的,不过我测试下来,双工通讯只适合"IsOneWay=true"的情况下通讯,如果双工+"IsOneWay=false"通讯,结果就可能导致死锁,最后请求超时。当然我们也可以设置两个WCF服务,一个只用于客户主动和服务端通讯,另一个只用于服务端主动通知所有客户端,这样就可以使用双向通讯了。"IsOneWay=true"要求请求的方法没有返回值,否则必须等待对方完成并返回信息。
      

  4.   


    WCF 是支持 双工的 , 但 死锁这个问题我都是没有发现 
      

  5.   

    WCF的双工好像是客户端开一个进程,向服务端传入一个回调,并阻塞当前进程,服务端需要给客户发消息时,处理该回调..
    是不是这样的啊?
    总的来说双工分为两种.一种是轮询,另一种是回调.对不对?
      

  6.   

    双工就一种——回调,而且不会阻塞当前线程。只要你连接打开,随时都可以收到服务器的信息来调用回调函数。另外我说的如果双工+"IsOneWay=false"通讯,结果就可能导致死锁,是在客户端请求的过程中,服务器尚未返回客户返回值的情况下就开始调用客户端的回调函数来执行向客户端发送一个"IsOneWay=false"的请求,此时两边都在等待对方的返回,却都等不到返回,最后就死锁超时。