WCF 宿主与通信模式(二)

宿主

每个WCF服务都必须托管在Windows进程中,该进程称为宿主进程(host process)

单个宿主进程可以托管多个服务,相同的服务类型也可以托管在多个宿主进程中。

wcf中托管服务一般有一下四种:

寄宿方式

描述

Console寄宿

利于开发调试,但不是生产环境中的最佳实践。

winform寄宿

方便与用户进行交互,用户想开就开,想关就关,但如果机器重启了,不得不自己手动开一下,危险+麻烦。

IIS寄宿

此寄宿在实战项目中得到了广泛的应用。好处有:随系统启动和停止。iis有大量的管理策略对其进行管理。即想利用wcf的功能,还想访问asp.net的功能。

Window Service 寄宿

这个寄宿在实战中也是广泛运用的,同时也是随系统开启或者停止。

通信模式

  WCF在通信过程中有三种模式:请求与答复、单向、双工通信。

模式

描述

特点

请求与答复模式

客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务端有了答复后才能继续执行其他程序。

请求与答复模式为WCF的默认模式,即使返回值是void 也属于请求与答复模式。

缺点:如果用WCF在程序A中上传一个2G的文件,那么要想执行程序B也许就是几个小时后的事情了。如果操作需要很长的时间,那么客户端程序的响应能力将会大大的下降。

优点:有返回值我们就可以向客户端返回错误信息,如:只接收".rar"文件等信息。

单向模式

客户端向服务端发送求,但是不管服务端是否执行完成就接着执行下面的程序。

优缺点与“请求响应模式”差不多倒过来。

特点:使用 IsOneWay=true 标记的操作不得声明输出参数、引用参数或返回值

双工模式

双工模式建立在上面两种模式的基础之上,实现客户端与服务端相互的调用。相互调用:以往我们只是在客户端调用服务端,然后服务端有返回值返回客户端,而相互调用不光是客户端调用服务端,而且服务端也可以调用客户端的方法。

双工模式是建立在以上两种模式之上的模式,他们并不冲突。

支持回调的绑定有4种:WSDualHttpBinding、

NetTcpBinding、

NetNamedPipeBinding、

NetPeerTcpBinding

原文地址:https://www.cnblogs.com/birdwawe/p/4583326.html