WCF开发工具的出现,对于开发人员来说具有非常大的作用。在这里我们将会为大家详细介绍一下有关WCF绑定元素的相关概念。那么对于初学者来说,大家可以通过这篇文章想、充分掌握这些应用技巧。#t#
从结构的角度讲,一个绑定对象有一系列绑定元素组成,每个绑定元素负责创建相应的信道。所以绑定元素几何的构成以及它们之间的先后顺序,决定了最终生成的信道栈中的信道组成已经它们位于栈中的先后顺序。WCF之所以在设计的时候将绑定和绑定元素分离开发,是基于灵活性、可扩展性考虑的。 #t#
在介绍信道和信道栈的时候我们说过,我们不可能、也不应该创建一个***的信道能够提供消息交换中的所有的功能,所以我们让一个信道只承载某个单一的功能,比如传输信道专注于网络传输,消息编码信到专注于消息的编码,WCF还定义了一一系列的信道,他们分别关注与安全、可靠传输和事务流转等等。这种信道组合的设计方式使得我们可以根据具体的需求来定制我们将要创建的信道栈,让它只具有我们必须的功能,而去除不必要的功能。
同理,我们可以根据具体实际需求,将必要的WCF绑定元素进行有序的组合,从而创建最能适合具体场景的绑定对象。由于信道可以分为必须的传输信道、消息编码信道和可选的基于某种WS-*协议实现的协议信道,与之相对地,我们的绑定元素可以分为传输绑定元素、消息编码绑定元素和协议绑定元素。
由于信道的实际创建者是信道管理器(信道工厂和信道监听器),所以绑定元素只需要实现对信道管理器的创建,而最终实现对具体信道的创建。所以绑定元素的最根本的功能就是实现对信道监听器和信道工厂的创建。这可以从所有WCF绑定元素的基类, System.ServiceModel.Channels.BindingElement的定义上看出来:
- public abstract class BindingElement
- {
- // Methods
- protected BindingElement();
- protected BindingElement(BindingElement elementToBeCloned);
- public virtual IChannelFactory<TChannel> BuildChannelFactory
<TChannel>(BindingContext context);- public virtual IChannelListener<TChannel> BuildChannelListener
<TChannel>(BindingContext context) where TChannel : class, IChannel;- public virtual bool CanBuildChannelFactory<TChannel>
(BindingContext context);- public virtual bool CanBuildChannelListener<TChannel>
(BindingContext context) where TChannel : class, IChannel;- public abstract BindingElement Clone();
- public abstract T GetProperty<T>(BindingContext context)
where T : class;- }
BindingElement的核心方法成员有两个:BuildChannelListener<TChannel>和BuildChannelFactory<TChannel〉,用于创建相应的信道监听器和信道工厂。两个Build方法的参数都是BindingContext,关于BindingContext,我将在本章后续的部分中介绍。而CanBuildChannelFactory<TChannel>和CanBuildChannelListener<TChannel〉 则属性两个测试性质的方法,用于检验相应的相应的信道监听器和信道功能是否可以被创建。
以上就是对WCF绑定元素的相关介绍。