信道形状
信道是消息交换的管道,在不同的消息交换模式下信道在发送端和接收端所起的作用是不同的。在数据报模式下,发送端信道栈的作用是输出(Output)数据报,接收端则是输入(Input)数据报;对于请求-回复模式来说,发送端的作用是发送消息请求(Request),而接收端则是回复(Reply)请求;而在双工通信模式下,消息交换双方的地位完全是等价的,它们都具有输出(Output)和输入(Input)的功能。
WCF通过信道形状(Channel Shape)表示不同的消息交换模式对消息交换双方信道的不同要求,并定义了相应接口来规范基于不同信道形状的信道应该具有的操作。这些接口包括IOutputChannel/IInputChannel、IRequestChannel/IReplyChannel和 IDuplexChannel,它们均定义在System.ServiceModel.Channels命名空间下。表3-1简单地列出了在不同的消息交换模式下,消息的发送方和接收方所使用的信道类型。
表3-1 在不同的消息交换模式下消息的发送方和接收方所使用的信道类型
MEP 消息发送方 消息接收方
数据报 IOutputChannel IInputChannel
请求/回复 IRequestChannel IReplyChannel
双工 IDuplexChannel IDuplexChannel
图3-9所示的类图简单地描述了这些接口之间的继承关系结构,从中可以看出基于所有信道形状的信道接口均继承自IChannel接口,而IDuplexChannel则同时继承了IOutputChannel和IInputChannel两个接口。