wcf入门(14)——可靠会话

本文demo已上传至github:xinyuehtx/WCFdemo

在之前的wcf入门(6)——服务会话_wcf,c#_黄腾霄的博客-CSDN博客博客介绍了wcf的会话,这一篇介绍可靠会话


可靠消息传输

在了解可靠会话之前我们需要先了解下什么是可靠消息传输(Reliable Messaging)。

我们知道网络数据在传输过程中,丢包,乱序都是一种很常见的情况。

对于某些软件,数据的完整性和有序性是有要求的。

这个时候为了保证应用层面的稳定和有序,就需要一些设置确保消息能够确保端对端的传递。

可靠消息的目标

  1. 确保从源到目标的消息传递。
  2. 当源或者目标有一端出现故障时,可以进行独立恢复。

对这两点做一个简单的说明:

  1. 对于协议的第一个目标。比如消息传送过程中丢包了,可以通过一些方式(如服务端通知客户端重发),确保这个消息还能完整的传送到目标节点
  2. 对于协议的第二个目标。比如客户端发送消息时,服务端正好不可用(比如重启),那么可以通过一些方式(比如缓存消息,至服务可用时再发送),确保服务端可用时能够收到消息

可靠消息的实现

可靠消息的在wcf的实现方式有两种:队列和可靠会话

队列提供了消息发送和接收的缓冲区,将消息的源和目标进行分离。那么如果有一端不可用,消息也不会丢失。

这个方式的优点在于可以实现一些离线模式的应用,但是缺点也很明显,就是消息的高延时

可靠对话有些类似于tcp的可靠数据包,无论中继节点的数目和类型如何,确保消息在端到端的可靠传输。并且能够屏蔽SOAP层面的失败(丢包,消息重复,乱序等),并在传输失败时重新建立连接

这个方法的最大优点在于低延迟

可靠会话演示

可靠会话可以实现屏蔽SOAP层面的失败,并在传输失败时重新建立连接。

这里简单演示可靠会话确保在不稳定信道上的作用。

不稳定信道

首先是创建不稳定信道,这里参考了使命必达: 深入剖析WCF的可靠会话 - Artech - 博客园大大给出的示例,通过创建IDuplexSessionChannel的代理,对发送消息进行随机丢弃。再通过自定义绑定元素,注入这个不稳定信道的工厂。详细内容可以在xinyuehtx/WCFdemo中查看示例源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值