我的SAP空间 2010-03-02
WCF开发工具在实际应用中可以给我们开发人员带来非常大的好处。特别是在安全性方面,其优势尤其明显。在这里,我们将会通过对WCF可靠性传输的基本内容做一个详细介绍,让大家充分掌握这方面的知识。
WCF与其他面向服务技术之间(asp.net \j2ee Web Service技术等)最大的区别在于WCF可靠性传输(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协议是请求/响应协议,不会维持特定的传输通道,本身是不支持可靠性。
【1.2】传输协议与WCF可靠性传输:
看来以上的介绍内容,我们再来介绍WCF绑定协议的可靠性,同样WCF的可靠性和具体的绑定协议弥补可分。总结了绑定、可靠性、有序传递(Ordered Delivery)以及它们各自的默认值之间的关系。可靠性与绑定对应关系如下:
BasicHttpBinding不支持可靠性,BasicHttpBinding面向旧的ASMX Web服务,是不具有可靠性的;
NetMsmqBinding不支持可靠性,MSMQ协议,使用消息队列,针对断开调用,不存在传输会话;
MsmqIntegrationBinding不支持可靠性;支持WCF与MSMQ协议通信,不存在传输会话;
NetPeerTcpBinding不支持可靠性。NetPeerTcpBinding则为广播场景设计。
WSDualHttpBinding支持可靠性的,建立两个http会话通道,保持回调通道,确保基于HTTP协议的客户端存在;
NetTcpBinding 支持可靠性,显然使用TCP传输数据。以及各种WS绑定,默认情况下并不支持可靠性,允许启用;
NetNamedPipeBinding绑定总是拥有一个确定的从客户端到服务的跳数,因而它的可靠性是绑定固有的;
WSFederationHttpBinding支持可靠性,支持联邦通信协议,支持在多个安全区域进行安全会话。
WS绑定协议一般都提供了对可靠性传递的支持,可以编程或者配置方式在项目里启用。可靠性传输要根据绑定的目标场景而定。
【1.3】有序消息: