BindingElement 类

定义

用于为各种类型的通道生成通道工厂和通道侦听器以处理传出和传入消息的绑定元素。

public ref class BindingElement abstract
public abstract class BindingElement
type BindingElement = class
Public MustInherit Class BindingElement
继承
BindingElement
派生

示例

下面的示例演示如何将传输绑定元素添加到自定义绑定,然后再生成可接受传入消息的通道侦听器。

CustomBinding binding = new CustomBinding();
binding.Elements.Add(new HttpTransportBindingElement());
BindingParameterCollection paramCollection = new BindingParameterCollection();
IChannelListener<IReplyChannel> listener = binding.BuildChannelListener<IReplyChannel>
    (new Uri("http://localhost:8000/ChannelApp"), paramCollection);

listener.Open();
IReplyChannel channel = listener.AcceptChannel();
Console.WriteLine("Listening for messages");
channel.Open();
RequestContext request = channel.ReceiveRequest();
Message msg = request.RequestMessage;
Console.WriteLine("Message Received");
Console.WriteLine("Message Action: {0}", msg.Headers.Action);

if (msg.Headers.Action == "hello")
{
    Message reply = Message.CreateMessage(MessageVersion.Default, "wcf");
    request.Reply(reply);
}

msg.Close();
channel.Close();
listener.Close();
Dim binding As New CustomBinding()
binding.Elements.Add(New HttpTransportBindingElement())
Dim paramCollection As New BindingParameterCollection()

Dim listener As IChannelListener(Of IReplyChannel)
listener = binding.BuildChannelListener(Of IReplyChannel)(New Uri("http://localhost/channelApp"), paramCollection)

listener.Open()
Dim channel As IReplyChannel = listener.AcceptChannel()
Console.WriteLine("Listening for messages")
channel.Open()
Dim request As RequestContext = channel.ReceiveRequest()
Dim msg As Message = request.RequestMessage
Console.WriteLine("Message Received")
Console.WriteLine("Message Action: {0}", msg.Headers.Action)

If (msg.Headers.Action = "hello") Then

    Dim reply As Message = Message.CreateMessage(MessageVersion.Default, "wcf")
    request.Reply(reply)
End If

msg.Close()
channel.Close()
listener.Close()

注解

绑定由一组继承自此抽象基类的有序绑定元素组成。 TransportBindingElement 类从 BindingElement 类继承。

如果只是使用通道模型,则可以选择创建用于传输的绑定和绑定元素。 只要将通道工厂和侦听器设置为公共,就可以通过它们执行一切所需操作。

Windows Communication Foundation (WCF) 服务模型使用工厂模式,其中绑定用于创建通道堆栈。 如果要使用 WCF 服务模型,则需要使用传输绑定元素。 将此绑定元素置入绑定中是一个很好的做法,这样用户就无需为你的传输创建自己的自定义绑定。 最好同时创建绑定和绑定元素,并将通道工厂和侦听器隐藏在程序集中。

在发送端,使用绑定生成 IChannelFactory,而后者生成通道堆栈并返回对堆栈中顶部通道的引用。 之后,应用程序可以使用此通道发送消息。

同样,在接收端,使用绑定生成 IChannelListener,用于侦听传入消息。 IChannelListener 通过创建通道堆栈并将顶部通道的引用传递给应用程序,将消息提供给侦听应用程序。 之后,应用程序使用此通道接收传入消息。

备注

如果要添加的消息头必须加密,则必须在要求 ChannelProtectionRequirements 时,从 GetProperty<T>(BindingContext) 方法返回具有您的要求的 ChannelProtectionRequirements 实例。

构造函数

BindingElement()

初始化 BindingElement 类的新实例。

BindingElement(BindingElement)

从指定的绑定元素初始化 BindingElement 类的新实例。

方法

BuildChannelFactory<TChannel>(BindingContext)

初始化通道工厂,用于生成来自绑定上下文中指定类型的通道。

BuildChannelListener<TChannel>(BindingContext)

初始化通道侦听器,用于接受绑定上下文中指定类型的通道。

CanBuildChannelFactory<TChannel>(BindingContext)

返回一个值,该值指示绑定元素是否可以为特定类型的通道生成通道工厂。

CanBuildChannelListener<TChannel>(BindingContext)

返回一个值,该值指示绑定元素是否可以为特定类型的通道生成侦听器。

Clone()

在派生类中重写时,返回绑定元素对象的副本。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetProperty<T>(BindingContext)

在派生类中重写时,从绑定堆栈的适当层返回所请求的类型化对象(如果存在)。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于