WCF开发插件拥有非常大的功能优势,这些优势决定了其在开发领域中占据着一定的主导地位。我们今天就先从WCF双工会话通道的基本概念开始了解,来对这一开发工具进行更加深入的了解。
从对象模型的角度来看,会话通道形状与非会话通道只有一些细微的差别。例如,IDuplexSessionChannel是IDuplexChannel和 ISessionChannel<IDuplexSession>的结合体。因为我们已有有了一个DelegatorDuplexChannel类型定义(它实现了IDuplexChannel接口),创建一个WCF双工会话通道仅仅是一个继承DelegatorDuplexChannel并实现IDuplexSessionChannel接口的问题,如下所示:
- internal sealed class DelegatorDuplexSessionChannel :
DelegatorDuplexChannel, IDuplexSessionChannel- {
- private IDuplexSessionChannel _innerSessionChannel;
- // reference the next
- // sessionful channel
- private String _source;
- // store the String to output internal
- DelegatorDuplexSessionChannel(ChannelManagerBase
- channelManagerBase, IDuplexSessionChannel innerChannel, String source)
: base(channelManagerBase, innerChannel, source)- {
- _source = String.Format("{0} CHANNEL: DelegatorDuplexSessionChannel",
source);- PrintHelper.Print(_source, "ctor");
- // assign the reference to the next sessionful channel
- this._innerSessionChannel = innerChannel;
- }
- // IDuplexSessionChannel member that is not defined in IDuplexChannel
- public IDuplexSession Session
- {
- get {
- PrintHelper.Print(_source, "Session");
- return this._innerSessionChannel.Session;
- }
- }
- }
DelegatorDuplexChannel包含一个IDuplexChannel类型的成员变量,我们需要通过一个IDuplexSessionChannel类型的局部变量来存储同一个对象的引用。这样做可以使得我们容易地添加Session属性到我们的类型定义上。
以上就是对WCF双工会话通道的相关介绍。
【编辑推荐】