1.默认的方式为请求Request-应答Reply的方式。
2.One-Way方式。没有返回值(只能是void),不需要Client关心调用结果的成功/失败。但是不等于异步。
原因:当Client 发出多个One-Way Call,如果来不及处理的话,WCF将放入Queue,一旦QUEUE的长度超过Threshhold,Client将会Blocked.
[ServiceContract]
public interface IMyContract
{
[Operation Contract(IsOneWay= true)]
void MyMethod();
}
One-Way方式,建议只用在Per-Call or Singleton Service.
3.Callback回调,比如对Event的支持,双向通信模式下才支持,比如:NetTcpBinding和NetNamedPipeBinding绑定以及WSDualHttpBinding绑定。
(1) 服务端定义和配置Callback Contract
[ServiceContract]
public interface ICallbackContract
{
[OperationContract]
void OnCallback();
}
[ServiceContract(CallbackContract = typeof(ICallbackContract)]
public interfact IMyContract
{
[OperationContract]
intDoSomething( );
}
(2)客户端实现ICallbackContract
public class MyCallback : IMyContractCallback
{
public void OnCallback( )
{...}
}
IMyContractCallback callback = new MyCallback( );
InstanceContext context = new InstanceContext(callback);
4.Streaming技术,如果传递的Message太大的话,会使Client被Blocked.
Streaming Transfer Mode技术:WFC使得接收方在接收大的Message同时,能够开始处理Message.