语言

Binding 类

定义

包含用于在客户端和服务之间通信的协议、传输和消息编码器的绑定元素。

public ref class Binding abstract : System::ServiceModel::IDefaultCommunicationTimeouts
public abstract class Binding : System.ServiceModel.IDefaultCommunicationTimeouts
type Binding = class
    interface IDefaultCommunicationTimeouts
Public MustInherit Class Binding
Implements IDefaultCommunicationTimeouts
继承
Binding
派生
实现

示例

BasicHttpBinding binding = new BasicHttpBinding();

binding.Name = "binding1";

Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
Uri address = new Uri("http://localhost:8000/servicemodelsamples/service/calc");

// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, address);

    // Open the ServiceHostBase to create listeners and start listening for messages.
    serviceHost.Open();

    // The service can now be accessed.
    Console.WriteLine("The service is ready.");
    Console.WriteLine("Press <ENTER> to terminate service.");
    Console.WriteLine();
    Console.ReadLine();
    // Close the ServiceHostBase to shutdown the service.
    serviceHost.Close();
}

注解

表示绑定元素的集合,其中每个元素描述了终结点与其他终结点的通信方式的一个方面,这些终结点在客户端上的通道工厂中以及服务上的通道侦听器中一致地生成。 绑定包含与协议通道、传输通道和消息编码器对应的绑定元素集合。 协议通道可以有任意数量的绑定元素,但每个传输和消息编码器只能有一个绑定元素。 绑定中通常有六层绑定元素。 只有堆栈底部的传输和编码绑定元素是必需的。 由于每个绑定都需要编码,因此如果未指定编码,Windows Communication Foundation (WCF) 会为你添加默认编码。 默认值为 HTTP 和 HTTPS 传输的文本/XML,对于其他传输,默认值为 Binary。

下表汇总了每个层的选项。

层 选项 必需
事务流 TransactionFlowBindingElement 否
Reliability ReliableSessionBindingElement 否
安全性 对称、非对称、Transport-Level 否
形状更改 CompositeDuplexBindingElement 否
传输升级 SSL 流、Windows 流、对等解析程序 否
编码 文本、二进制、MTOM、自定义 是
Transport TCP、命名管道、HTTP、HTTPS、MSMQ、自定义 是

每个绑定元素都提供在客户端上生成通道工厂的规范,以及服务上的通道侦听器。 例如,构造通道工厂堆栈时,绑定中每个绑定元素的堆栈中有一个通道工厂。 同一类型的映射适用于服务堆栈中的通道侦听器。 客户端和服务上的一致性对于在这些终结点之间建立基于通道的连接至关重要。 每个工厂和侦听器反过来处理连接它们的通道堆栈中相应通道的发送和接受,然后这些通道可以发送和接收用于通信的消息。

每个实例Binding都有一个且Name一起唯一Namespace标识服务元数据中的实例。 如果未指定任何名称或命名空间,WCF 会为你添加默认值。 默认名称为null默认命名空间。http://tempuri.org/ 绑定的此用户名不同于由属性指定的 Scheme 协议名称的规范。 例如,如果要添加更多 HTTP 绑定,可以根据需要为其命名,并将其所有方案设置为“http”。 没有基于 Scheme.. 的固有应用程序或计算机调度。 因此,避免了无法为已知协议注册其他处理程序的常见问题。 还可以通过为每个版本提供不同的名称,轻松地并行处理绑定的多个版本。

该 Binding 类实现接口 IDefaultCommunicationTimeouts 来缓解拒绝服务(DOS)攻击,这些攻击依赖于将资源绑起来以延长时间间隔。 实现指定用于打开和关闭连接的通信超时值,以及与接收和发送消息关联的读取和写入操作。 下表汇总了用于获取和设置这些超时的属性及其默认值操作。

Timeout 属性 默认值
OpenTimeout 1 分钟
CloseTimeout 1 分钟
SendTimeout 1 分钟
ReceiveTimeout 10 分钟

通过继承自 Binding创建绑定时,必须重写 CreateBindingElements。

此外,还可以定义自己的绑定元素,并在上表中任何定义的层之间插入它们。 有关更多信息,请参见 CustomBinding 类。

构造函数

名称 说明
Binding()

使用默认名称和命名空间初始化类的新实例 Binding 。

Binding(String, String)

从服务的指定绑定初始化类的新实例 Binding 。

属性

名称 说明
CloseTimeout

获取或设置在传输引发异常之前连接要关闭的时间间隔。

MessageVersion

获取使用绑定配置的客户端和服务使用的消息版本。

Name

获取或设置绑定的名称。

Namespace

获取或设置绑定的 XML 命名空间。

OpenTimeout

获取或设置在传输引发异常之前为连接打开提供的时间间隔。

ReceiveTimeout

获取或设置连接在删除之前连接可以保持非活动状态的时间间隔,在此期间不会收到任何应用程序消息。

Scheme

在派生类中实现时,设置 URI 方案,该方案指定由绑定生成的通道和侦听器工厂使用的传输。

SendTimeout

获取或设置传输引发异常之前为写入操作完成提供的时间间隔。

方法

名称 说明
BuildChannelFactory<TChannel>(BindingParameterCollection)

在客户端上生成通道工厂堆栈,该堆栈创建指定的通道类型并满足绑定参数集合指定的功能。

BuildChannelFactory<TChannel>(Object[])

在客户端上生成通道工厂堆栈,该堆栈创建指定的通道类型并满足对象数组指定的功能。

BuildChannelListener<TChannel>(BindingParameterCollection)

在接受指定类型的通道的服务上生成通道侦听器,并满足绑定参数集合指定的功能。

BuildChannelListener<TChannel>(Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

BuildChannelListener<TChannel>(Uri, String, Object[])

在接受指定类型的通道且满足指定功能的服务上生成通道侦听器。

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

返回一个值,该值指示当前绑定是否可以在客户端上生成满足指定绑定参数集合的通道工厂堆栈。

CanBuildChannelFactory<TChannel>(Object[])

返回一个值,该值指示当前绑定是否可以在客户端上生成满足对象数组指定的要求的通道工厂堆栈。

CanBuildChannelListener<TChannel>(BindingParameterCollection)

返回一个值,该值指示当前绑定是否可以在满足指定的绑定参数集合的服务上生成通道侦听器堆栈。

CanBuildChannelListener<TChannel>(Object[])

返回一个值,该值指示当前绑定是否可以在满足对象数组中指定的条件的服务上生成通道侦听器堆栈。

CreateBindingElements()

在派生类中重写时,创建一个集合,其中包含作为当前绑定一部分的绑定元素。

Equals(Object)

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

(继承自 Object)
GetHashCode()

用作默认哈希函数。

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

从绑定堆栈中的相应层返回所请求的类型化对象(如果存在)。

GetType()

获取当前实例的 Type。

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ShouldSerializeName()

返回是否应序列化绑定的名称。

ShouldSerializeNamespace()

返回是否应序列化绑定的命名空间。

ToString()

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

(继承自 Object)

适用于