通道功能
通道能够执行不同的任务。实际上,通道里可以定义任何消息功能,然后嵌 入到WCF运行时里。我们可以大概地划分一下WCF通道执行任务的类型。概念上, 通道可以方便使用特定的传输、协议或通道形状。
传输通道
传输通道是与网络、文件系统、内存或其他的程序(如Microsoft SQL Server 2005、SAP或Oracle)交互的通道。WCF至少有一个对应的通道来支持每 一个传输。例如,WCF支持TCP/IP通信,而且WCF程序与sockets交互的工具就是 TCP/IP通道。
在TCP/IP、HTTP、Named Pipes和MSMQ成为主流传输方式的今天,应用系统或 许还需要其他的传输方式。比如,文件系统、简单邮件传输协议(SMTP)、邮局 协议3(POP3)和文件传输协议(FTP)。这些都可以成为候选者。如果一个支持 ,那么其它的成为WCF支持的传输也很有可能。考虑一下SQL Server 2005 Service Broker。虽然它不是一个标准的传输,但是通过创建WCF 传输通道就可 以使得程序能够通过WCF的编程模型使用SQL Server 2005 Service Broker的功 能。借助Service Broker自定义通道,程序就可以像调用WS-*一样,来调用 Service Broker。作用上,自定义传输通道允许开发人员更多的关注与业务功能 而不是Service Broker接口或API。这些自定义通道的概念也同样适用于其它的 计算系统,如SAP和Oracle
在通道堆栈里,传输通道通常都位于最底层。从发送者的角度,在数据发送 以前,传输通道是堆栈里最后一个通道。从接收者的角度,在数据接收以后,传 输通道是第一个通道。作用上,堆栈里的其它通道不需要知道程序使用的传输协 议。没有传输通道的通道堆栈没有任何价值(极端情况除外)所有的通道至少包 含一个传输通道。你会在本章的 “组合通道”部分看到有些通道可以包含多个 传输通道。
协议通道
协议通道是WCF 实现消息协议的主要方式,像WS-ReliableMessaging、 WS- AtomicTransaction和WS-SecureConversation。实际上,WCF是通过协议通道来 支持WS-*规范的。因为 WS-*规范里规定程序级别的消息交换可以在传输层产生 多个消息。在通道堆栈里,WS-*协议通道经常产生消息,上层的通道不会理解这 些消息。例如,考虑图6-3里的通道堆栈。
图6-3:支持WS-ReliableMessaging协议的通道