----------------------------------------------消息模式:
1.request\reply(默认)
2.one-way(单工)[Isoneway=true]
客户端有些情况希望保证消息能正确送达;(msmq(持久性的,机子重启后依然有效)和可靠性消息(短暂的)这两种技术保证)
应用:日志或发布,操作需要大量时间轮训场景,这样不需要等待;
3.Duplex(回调;双工)
操作必须声明为oneway;防止发生死锁;
回调接口不需要声明servicecontract
tcp和命名管道支持双工,http不支持;
--duplex案例:
--------------------------------------------双工:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract =typeof(IReturnuser))]
public interface Iuser
{
[OperationContract(IsOneWay=true)]
void SetName(string name);
}
public interface IReturnuser
{
[OperationContract(IsOneWay = true)]
void ReturnName(string name);
}
-----------
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class ServicUser:Iuser
{
IReturnuser callback
{
get { return OperationContext.Current.GetCallbackChannel<IReturnuser>(); }
}
public void SetName(string name)
{
callback.ReturnName(name+"123");
}
}
-----------
public class CallbackHandler : myService.IService1Callback
{
public void Calculate(int result)
{
System.Windows.Forms.MessageBox.Show("结果为:" + result);
}
}
---------
InstanceContext ic = new InstanceContext(new CallbackHandler());
myService.Service1Client client = new wcfClient.myService.Service1Client(ic);
client.AddNumer(3, 4);
-----大型消息传输:
比如:上传和下载数据;
1.在wcf的配置文件制定消息大小的配额;从而支持较大消息的支持;
21.开销解决方案:
消息传输优化机制:MTOM;(删除过多无用的信息并且处理base64编码多带来的数据开销,改进消息传输的整体性能;)
通过配置文件配置Binding节点信息;messageEncoding="Mtom",
MTOM,会加载到内存中;为了降低内存使用,使用流传输;
配置:
<bindings>
<wsHttpBinding>
<binding name="sdf" maxReceivedMessageSize="5000000" messageEncoding="Mtom">
<readerQuotas maxArrayLength="5000000"/>
</binding>
</wsHttpBinding>
</bindings>
22流传输;特点:降低内存的使用量;但可靠性和安全性降低;
--标记流传输:
<bindings>
<basicHttpBinding>
<binding name="sdf" transferMode="Streamed">
</binding>
</basicHttpBinding>
</bindings>
--流传递支持三种绑定:netnamedpipebinding,nettcpbinding,basichttpbinding;
transferMode:值默认buffered(缓冲式),Streamed流传输;
23将消息切分成较小的切片;
相关文章
- 10-09MFC模式对话框与非模式对话框 消息处理顺序
- 10-09Kafka-之Producer生产者(含拦截器、分区器、序列化器及异步消息发送模式)
- 10-09wcf契约随记
- 10-09WCF安全3-Transport与Message安全模式
- 10-09理解JMS规范中消息的传输模式和消息持久化
- 10-09解决WCF 调用方未由服务器进行身份验证或消息包含无效或过期的安全上下文令牌
- 10-09RabbitMQ - 常用消息队列之通配符模式【Topic Exchange】
- 10-09RabbitMQ 消息中间件--普通集群模式
- 10-09【WCF--初入江湖】04 WCF通信模式
- 10-09WCF服务调用超时错误:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:05:30”(已解决)