- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1WCF蒋金楠
作为一个通信基础平台,WCF必须保证通信的可靠性。由于消息交换是WCF采用的通信手段,通信可靠性的保障体现在确保消息的可靠传输。WCF本质上是一个消息处理框架,作为整个消息交换系统的两个终端,即发送端和接收端。换句话说,WCF仅仅负责对消息的发送和接收,一旦消息通过WCF的信道层进入了网络,就脱离了WCF的控制范围。但是,由于网络环境的限制,网络层不能百分之百地确保对消息的有效交付。如何克服中间环节的制约,确保从一端发送的消息能够被有效地交付给另一端,这就是可靠消息传输(Reliable Messaging)需要解决的问题。WCF通过可靠会话(Reliable Sessions)实现了种种端到端(End to End)的可靠消息传输。
【实例篇】
为了让读者对可靠会话的作用现有一个直观的认识,我们先来做一个很有意思的实例演示。这也是早年微软推广WCF技术频繁使用的案例:图片传输。在客户端,我们选择一张图片,并对它进行切片,最后通过调用WCF服务将每一个切片依次传输到服务端。服务端则按照切片被接收到的顺序重新组装成一张完整的图片。如果中间有任何一张切片丢失,服务端最终组装图片将不会完整;如果服务端切片接收的次序和发送顺序不一致,将会造成组装后的图片并不能还原其发送前的模样。在这里,我们充分利用了WCF中的可靠会话提供了可靠而有序的消息交付…
不稳定的网络是造成消息丢失最主要的因素,但是在本机环境下模拟不稳定的网络是一件比较困难的事情。但是,虽然我们不能让消息在网络传输层中丢失,但是我们可以让它在WCF的信道层中丢失。如何实现这样的目的呢,相应阅读过《WCF技术剖析(卷1)》第3章的读者会很快想到可以采用自定义信道的方式。步骤一:通过自定义信道模拟不稳定的网络
为了对网络传输过程中的丢包率能够进行动态控制,我特意创建一个特殊的类型MessageInspector。MessageInspector定义如下,只读属性DropRate表示丢包率,ProcessMessage对传入的消息进行处理,如果返回为Null,意味着消息的丢失。MessageInspector定义如下。
using System;
using System.ServiceModel.Channels;
namespace Artech.ImageTransfer.Extensions
{
public class MessageInspector
{
public int DropRate{ get; private set; }
public Random Randomizer{ get; private set; }
public MessageInspector(int dropRate)
{
this.DropRate = dropRate;
this.Randomizer = new Random();
}
public virtual void ProcessMessage(ref Message message)
{
int randomNumber = this.Randomizer.Next(100);
if (randomNumber = this.DropRate)
{
message = null;
}
}
}
}
接下来我们就来创建这个用于模拟不稳定网络环境的自定义信道UnreliableNetworkSimulateChannel。由于我们即将演示的实例采用TCP传输方式,所以我们让UnreliableNetworkSimulateChannel实现了IDuplexSessionChannel接口。UnreliableNetworkSimulateChannel通过MessageInspector对象对传入的消息进行加工(根据丢包率随即地丢弃)。MessageInspector在构造函数中创建,而丢包率通过参数传入。除了Send方法,几乎所有的成员都是调用InnerChannel相应的方法或者返回同名的属性。由于在《WCF技术剖析(卷1)》我们有过对如何自定义信道的专门介绍,在这里我们就不在多做重复的讲述了。
using System;
using System.ServiceModel.Channels;
namespace Artech.ImageTransfer.Extensions
{
pu
您可能关注的文档
- (RJ-SY)选修3—5第十六章 动量守恒定律1-3节.doc
- (Multisim数电仿真)计数译码和显示电路.doc
- (好)电抗器作用.doc
- (人教版)初中化学导学案第一单元.doc
- (二)心电图基础有关知识.doc
- (可编辑)福建省厦门市2012年高三5月质检理综试题.doc
- (怎样巧拟文章的标题,唤起读者的阅读兴趣呢)作文训练.doc
- (异地监控设置)动态域名解析的设置.doc
- (总结一)poj简单动态规划.doc
- (机电一体化课程设计).doc
- 第三单元解决问题的策略 三年级下册数学高频考点重难点讲义(苏教版)(1).docx
- 4.4 解比例 数学六年级下册同步培优讲义(苏教版).docx
- 第四单元《根据方向与距离确定物体位置》(教案)五年级下册数学青岛版.docx
- (奥数典型题)第三讲 分解质因数 五年级下册数学思维拓展提升讲义(人教版).docx
- 2.2:2、5、3的倍数-人教版五年级数学下册第二单元:因数和倍数.docx
- 第六单元正比例和反比例 六年级下册数学高频考点重难点讲义(苏教版).docx
- 第二单元除数是一位数的除法 三年级下册数学高频考点重难点讲义(人教版).docx
- 第二单元-认识三角形和四边形 四年级数学下册提升(北师大版).docx
- 第一单元观察物体(三)五年级下册数学高频考点重难点讲义(人教版).docx
- 第九单元 数学广角—推理 二年级数学下册重难点知识点(人教版).docx
文档评论(0)