天天看点

WCF 双工模式

wcf之消息模式分为:

1、请求/答复模式

2、单向模式

3、双工模式

其中,请求/答复模式,在博文:

<a target="_blank" href="http://blog.csdn.net/jiankunking/article/details/44118625"> wcf 入门教程一(动手新建第一个wcf程序并部署)</a>

<a target="_blank" href="http://blog.csdn.net/jiankunking/article/details/44275359">wcf 入门教程二</a>

中进行了详细介绍,此处将主要介绍:单向模式与双工模式。

1、首先,先创建一个wcf应用程序:

WCF 双工模式

创建完成后,目录如下:

WCF 双工模式

2、删除iservice1.cs和serivce1.svc,或者修改名称为:calculateservice.svc与icalculateservice.cs后,显示如下:

WCF 双工模式

3、icalculateservice.cs文件内容如下:

4、calculateservice.svc文件中的内容:

5、修改web.config的配置文件

6、新建winform客户端进行测试

7、添加服务端引用:

WCF 双工模式

小注:

今天在vs2015中新建wcf类库,又能找到服务了

WCF 双工模式
WCF 双工模式

8、客户端代码如下:

在wcf回调中需要注意死锁问题

1、如果wcf中暴露出来的操作,没有返回值,则可以通过就是设置回调操作

isoneway=true,这样回调以后立即释放服务实例,不需要等待客户端响应消息,也可以避免死锁。

2、如果wcf中暴露出来的操作,有返回值,则需要通过,修改服务的servicebehavior的concurrencymode为reentrant或multiple即可。

此时,服务端的死锁问题搞定了。

下面就需要考虑客户端的死锁问题了

客户端的死锁问题,通过在客户端回调函数类中的callbackbehaviorattribute中控制这一行为

服务端死锁时的提示信息:

WCF 双工模式