首页 新闻 搜索 专区 学院

WCF高手请进

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-11-17 17:57

已经找到HttpTransportBindingElement重写了BindingElement的BuildChannelFactory方法,创建了自己的信道工厂:

 

public override IChannelFactory<TChannel> BuildChannelFactory<TChannel>(BindingContext context)
{
    if (context == null)
    {
        throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context");
    }
    if (!this.CanBuildChannelFactory<TChannel>(context))
    {
        throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", SR.GetString("CouldnTCreateChannelForChannelType2", new object[] { context.Binding.Name, typeof(TChannel) }));
    }
    return (IChannelFactory<TChannel>) new HttpChannelFactory(this, context);//这个就是
}

 

但是其它的绑定元素,比如说TextMessageEncodingBindingElement 绑定元素,我看了它的创建信道工厂的反编译方法:
public override IChannelFactory<TChannel> BuildChannelFactory<TChannel>(BindingContext context)
{
return base.InternalBuildChannelFactory<TChannel>(context);
}
internal IChannelFactory<TChannel> InternalBuildChannelFactory<TChannel>(BindingContext context)
{
if (context == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("context"));
}
context.BindingParameters.Add(this);
return context.BuildInnerChannelFactory<TChannel>();
}
它也要依赖自己的信道工厂创建自己的信道,那么这个绑定元素创建自己的信道工厂是什么时候创建的呢?我在反编译代码里没有找到相关创建的代码,还有就是,这个信道完成自己的工作后,应该会将消息转交给下一个信道继续处理,这个转交机制相关的机制和代码是怎样呢?

柠茶的主页 柠茶 | 初学一级 | 园豆:186
提问于:2012-04-30 08:48
< >
分享
所有回答(1)
0

同求该问题

qianyz | 园豆:202 (菜鸟二级) | 2012-08-02 00:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册