WCF三种通信模式
一.请求响应模式:
概念:客户端发送请求,一直等待服务端响应,在此期间处于等待(假死)状态;直到服务器响应,才能继续执行其他的操作;
即使返回值是void 也属于请求与答复模式。
例:
[OperationContract]
string ShowName(string name);
二.单项模式:
概念:客户端发送请求,无论服务器端是否有响应,都会继续执行其他操作;
使用 IsOneWay=true 标记的操作不得声明输出参数、引用参数或返回值
例:
[OperationContract(IsOneWay = true)]
void ShowName(string name);
三.双工模式:
概念:双工模式建立在上面两种模式的基础之上,实现客户端与服务端相互的调用。相互调用:以往我们只是在客户端调用服务端,然后服务端有返回值返回客户端,而相互调用不光是客户端调用服务端,而且服务端也可以调用客户端的方法。
双工模式建立在以上两种模式之上,所以不冲突;
例:
[ServiceContract(CallbackContract = typeof(IUserCallback))]
public interface IUser
{
[OperationContract]
string ShowName(string name);
}
//回调的接口
public interface IUserCallback
{
[OperationContract(IsOneWay = true)]
void PrintSomething(string str);
}
扩展知识:
回调绑定:
1.WSDualHttpBinding;
2.NetTcpBinding;
3.NetNamedPipeBinding;
4.NetPeerTcpBinding;
例:
<endpoint address="" binding="wsDualHttpBinding" contract="WCFService_DualPlex.IUser"></endpoint>