您现在的位置是:首页 > .NET

.NET

WCF操作模式-双向操作(双工通信)示例演示

2020-11-12 09:09:22 .NET admin
在前面一节中我们有演示了WCF操作模式-单向操作(单工通信)。这节我们接着演示双向操作(双工通信)模式。在单向操作模式中,客户端向服务器发送请求,然后服务器回应。但服务器却不能主动向客户端发送信息。但在双向操作模式中,不但客户端可以向服务器
在前面一节中我们有演示了WCF操作模式-单向操作(单工通信)。这节我们接着演示双向操作(双工通信)模式。

在单向操作模式中,客户端向服务器发送请求,然后服务器回应。但服务器却不能主动向客户端发送信息。但在双向操作模式中,不但客户端可以向服务器发送请求,服务器也可以主动向客户端广播消息(也就是回调客户端中的方法)。在WCF中,不是所有的绑定都可以实现双向操作模式的,比如http协议,它本身就是基于请求-回复的传输模式,所以本质上是实现不了双向操作的。但WCF提供了WSDualHttpBinding协议让我们在http上实现了双向操作。其实WSDualHttpBinding并没有违反http单向传输的本质,它实际上是创建两个了通道,一个用于客户端向服务器请求,一个用于服务器向客户端广播,间接实现了双向操作。但《WCF服务编程》书上有说,WSDualHttpBinding无法穿越客户端与服务器的重重障碍,所以不赞成使用WSDualHttpBinding来实现双向操作。

那么除了WSDualHttpBinding协议外,还有那些协议支持双向操作呢?就是NetTcpBinding与NetNamedPipeBinding了。这两个协议都是从本质上支持双向操作的。但我们这节的示例使用的是WSDualHttpBinding绑定。

下面开始示例:
首先还是先定义服务契约:
[ServiceContract(CallbackContract=typeof(ICallBack))]
publicinterfaceIMessageService
{
[OperationContract]
voidRegisterMes();
}