WCF实现全双工通信笔记

原创 2016年05月31日 22:14:31

WCF的双工通信是指客户端和服务端都可以主动呼叫对方。在这种通信模式中,WCF利用双向绑定实现服务端和客户端相互公开终结点的信息。

在VS2015,.NET环境下进行测试


本章最大感悟是代理类必须是一个纯的代理类,即不应该有任何属性。(经他人测试貌似有属性也可以,但个人不推荐)


(1)打开WebConfig修改服务端的配置,应选择一个支持双工通信即会话的绑定(一般为wsDualHttpbinding和netTCPbinding)

<protocolMapping>

<add binding="wsDualHttpBinding" scheme="http"/>

(2)在服务端实现服务协定和操作协定以及服务协定的回调接口协定。

双工通信由两个接口组成,第一个接口用于服务,第二个接口用于回调。

[ServiceContract(CallbackContract = typeof(IServiceDuplexCallback))]

public interface IServiceDuplex

{

...

}

public interface IServiceDuplexCallback

{

...

}

(3)在客户端实现回调接口

在客户端实现中,有一个类实现服务端定义的双工协定回调接口,以便服务端利用它主动向该客户端发送信息。例如:

public class CallbackHandler : IServiceDuplexCallback

{

...

}

然后如果需要和服务端进行通信,首先需要创建InstanceContext类的一个实例,以便让服务端通过该实例知道通信的是哪个客户端对象。例如:

InstanceContext context = new InstanceContext(new CallbackHandler());

ServiceDuplexClient client = new ServiceDuplexClient(context);


需要注意的是,双工模型并不自动检测服务端或客户端何时关闭其通道。

解决方案:(1)发送心跳包,超时则认为关闭(2)用try-catch来捕获调用和回调异常,出错则认为关闭了通道

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[网络管理]全双工与半双工的区别

同事说新办公室的网络一直不稳定,经常掉线延迟。检查进口线路和更换转接网线。都无法解决问题。 估计是不是进口网线中一根或者2根短路,那就修改下网卡属性吧。 把自适应改成全双工10M模式,测试OK。 ...

[老老实实学WCF] 第十篇 消息通信模式(下) 双工

老老实实学WCF 第十篇 消息通信模式(下) 双工   在前一篇的学习中,我们了解了单向和请求/应答这两种消息通信模式。我们知道可以通过配置操作协定的IsOneWay属性来改变模式。在这一篇中我...

Winfrom 使用WCF 实现双工通讯

WCF实现的双工通信
  • hotmee
  • hotmee
  • 2016年10月28日 09:48
  • 1781

WCF实现双工通信

双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下(比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具...

wcf使用netTcpBinding实现双工通信

原来在学习Silverlight的时候使用过WCF的双工通信,不过是使用pollingDuplexHttpBinding来实现双工,而且服务也是绑定在web程序中。也许是架构没有设计好,在客户端多了的...
  • alasi
  • alasi
  • 2013年01月16日 16:42
  • 2689

c#项目,服务器错误:找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址

对这方面不是特别熟悉,是得到高手的指点。所以记录下来。  win2003系统不支持  net.tcp ,所以要删除配置文件中所有与netTcp 绑定的配置项                   bin...

net.tcp的wcf服务部署在iis上面

1、IS原本是不支持非HTTP协议的服务,为了让IIS支持net.tcp,必须先安装WAS(Windows Process Activation  Service),即windows进程激活服务...

WCF实现全双工例子(1)

 全双工的一些细节 基于Http协议(wsDualHttpBinding)的全双工回调接口的几个注意点: 下面的binding="ws...
  • wingahi
  • wingahi
  • 2014年06月28日 22:24
  • 557

java实现全双工串口通信

  • 2012年12月04日 18:30
  • 3.46MB
  • 下载

Java学习笔记-----Socket全双工通信

::::::::::::::: 全双工通信。 /* 服务器端 如何让它滚动??? 做一个JScorllPane  ??? */ import javax....
  • H002399
  • H002399
  • 2015年08月07日 21:11
  • 704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WCF实现全双工通信笔记
举报原因:
原因补充:

(最多只允许输入30个字)