全面阐述WCF可靠性传输性能

weishangkun 2009-11-05

随着时代的发展,WCF技术也随着更新,我们就WCF可靠性传输展开全文的讲解,WCF与其他面向服务技术之间(asp.net \j2ee Web Service技术等)最大的区别在于传输可靠性(Transport Reliability)与消息可靠性(Message Reliability)。传输可靠性(例如通过TCP传输)在网络数据包层提供了点对点保证传递(Point-to-Point Guaranteed Delivery),以确保数据包的顺序无误。传输可靠性不会受到网络连接的中断或其他通信问题的影响。

消息可靠性提供了端对端保证传递(End-to- End Guaranteed Delivery),确保消息的顺序无误。消息可靠性与引入的中间方的数量无关,与网络跳数(Network Hops)的数量也没有关联。消息可靠性基于一个行业标准。该行业标准为可靠的基于消息的通信维持了一个在传输层的会话。如果传输失败,例如无线连接中断,消息可靠性就会重试(Retries)功能。它还能够自动处理网络阻塞(Congestion)、消息缓存(Message Buffering)以及流控制(Flow Control),根据具体情况适时调整发送的消息数。消息可靠性还能够通过对连接的验证管理连接自身,并在不需要连接时清除它们。

这里WCF可靠性传输首先来说数据传输同样依赖底层的网络传输协议,如TCP协议,TCP传输控制协议底层就是要求建立连接的状态进行数据传递。其次消息可靠性也是对已有消息可靠性行业标准的支持,WCF框架实现或者扩展了消息可靠性行业标准。Web Service使用http/post/get/soap三种方式进行访问,http协议是请求/响应协议,不会维持特定的传输通道,本身是不支持可靠性。

传输协议与可靠性:

看来以上的介绍内容,我们再来介绍WCF绑定协议的可靠性,同样WCF的可靠性和具体的绑定协议弥补可分。总结了绑定、可靠性、有序传递(Ordered Delivery)以及它们各自的默认值之间的关系。

◆BasicHttpBinding不支持可靠性,BasicHttpBinding面向旧的ASMX Web服务,是不具有可靠性的;

◆NetMsmqBinding不支持可靠性,MSMQ协议,使用消息队列,针对断开调用,不存在传输会话;             

◆MsmqIntegrationBinding不支持可靠性;支持WCF与MSMQ协议通信,不存在传输会话;

◆NetPeerTcpBinding不支持可靠性。NetPeerTcpBinding则为广播场景设计。

◆WSDualHttpBinding支持可靠性的,建立两个http会话通道,保持回调通道,确保基于HTTP协议的客户端存在;

◆NetTcpBinding 支持可靠性,显然使用TCP传输数据。以及各种WS绑定,默认情况下并不支持可靠性,允许启用;    

◆NetNamedPipeBinding绑定总是拥有一个确定的从客户端到服务的跳数,因而它的可靠性是绑定固有的;

相关推荐