WCF编程篇4.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WCF编程篇4

在《实例篇》给出的例子中,我实际上是通过对终结点的绑定进行相应的配置让整个消息的交换过程在一个可靠会话中进行,进而实现可靠消息传输的目的。由于整个可靠会话的机制是完全在信道层实现的,而整个信道层的最终缔造者就是绑定,所以可靠会话编程是围绕着绑定进行的。而从结构组成的角度讲,绑定本质上就是一组绑定元素的有序集合,没有个为了实现各自的目的对传入信道栈的消息进行消息的处理。在这里,实现可靠会话是一个特殊的绑定元素:ReliableSessionBindingElement. 一、从ReliableSessionBindingElement谈起 WCF中整个可靠会话的实现完全是通过ReliableSessionBindingElement这个一个绑定元素创建的信道实现的。具体的实现机制,我们会在《原理篇》进行单独的介绍,在这里我们仅仅讨论可靠会话编程的部分。所以我们先来看看ReliableSessionBindingElement属性定义部分,因为可靠会话实现的行为是受这些属性控制的。 1: public sealed class ReliableSessionBindingElement : BindingElement, IPolicyExportExtension 2: { 3: //其他成员 4: public TimeSpan AcknowledgementInterval { get; set; } 5: public bool FlowControlEnabled { get; set; } 6: public TimeSpan InactivityTimeout { get; set; } 7: public int MaxPendingChannels { get; set; } 8: public int MaxRetryCount { get; set; } 9: public int MaxTransferWindowSize { get; set; } 10: public bool Ordered { get; set; } 11: public ReliableMessagingVersion ReliableMessagingVersion { get; set; } 12: } 虽然我们还没有深入到对可靠会话具体实现机制的介绍,但是通过前面对WS-RM可靠消息传输模型的讨论,相信读者对可靠会话的实现机制会有一个大致的了解。在这里我们可以通过简单地几句话对可靠会话实现机制进行简单的介绍。 WCF的可靠会话是建立在客户端和服务端之间,确保消息可靠传输的上下文,相当于WS-RM中序列的概念。在消息发送端和接收端具有一个消息缓冲区(或者称为消息窗口)对消息进行缓存,前者缓存已经发送但是尚未接收到确认的消息,后者缓存尚未向上交付的消息。消息在发送之前,会被赋予一个特殊的SOAP报头,其中包含表示消息在整个可靠会话生命周期内被发送的序号,并保存到消息缓冲区中。消息被接收端成功接收之后,会向发送端发送一个确认消息表示具有某个序号的消息已经成功接收。如果需要保障有序交付,接收端在交付之前需要确定先于该消息发送的所有消息是否成功交付。如果是则实施交付,否则将其放入消息缓冲区,等待之前消息的抵达。当之前所有消息被成功接收之后,接收端按照消息序号从小到大的顺序对消息实施交付。缓存的消息被成功交付后,会从缓冲区移除。 而消息发送端在接收到消息确认之后,会根据消息序号将对应的消息从缓冲区冲移出。如果在限定的超时时限内没有接收到以发消息的确认,会认为该消息发送失败,该消息会从缓冲区中提取出来并重新发送。 那么,现在我们了解了WCF可靠会话大体机制的情况下来了解一下ReliableSessionBindingElement各个属性的含义。 AcknowledgementInterval:如果消息的发送方和接收方通过双工通道连接,接收方能够随时向接收方发送确认。在这种情况下,为了降低网络流量,WCF采用批量确认的机制。也就是说,当接收端成功接收到某个消息的时候,并不会立即针对该消息发送确认,而是等待一定时间后,对所有接收到的消息进行批量确认。AcknowledgementInterval表示消息接收端发送确认之前等待的时间间隔,默认为0.2秒(200毫秒)。该设置仅仅针对于NetTcpBingding和WSDualHttpBiding等支持双工通信的绑定有效,而像BasicHttpBinding和WSHttpBiding这样的绑定无此设置。 注:在MSDN对该属性的介绍中,将Ackno

文档评论(0)

sd44055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档