Binding Clase

Definición

Contiene los elementos de enlace que especifican los protocolos, transportes y codificadores de mensaje utilizados para la comunicación entre clientes y servicios.Contains the binding elements that specify the protocols, transports, and message encoders used for communication between clients and services.

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
Herencia
Binding
Derivado
Implementaciones

Ejemplos

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();
}

Comentarios

Representa una colección de elementos de enlace, cada uno de los cuales describe un aspecto de cómo un extremo se comunica con otros extremos. Están compilados de forma coherente en un generador del canal en el cliente y en un agente de escucha del canal en el servicio.Represents a collection of binding elements, each of which describes an aspect of how an endpoint communicates with other endpoints and that are built, consistently, into a channel factory on the client and into a channel listener on the service. Un enlace contiene una colección de elementos de enlace que corresponden a los canales de protocolo, canales de transporte y codificadores del mensaje.A binding contains a collection of binding elements that correspond to protocol channels, transport channels, and message encoders. Puede haber cualquier número de elementos de enlace para los canales de protocolo, pero sólo un elemento de enlace para el transporte y otro para el codificador del mensaje.There can be any number of binding elements for protocol channels but one and only one binding element for each the transport and message encoder. Hay normalmente seis capas de elementos de enlace en un enlace.There are commonly six layers of binding elements in a binding. Sólo son necesarios el transporte y los elementos de enlace de codificación en la parte inferior de la pila.Only the transport and encoding binding elements at the bottom of the stack are required. Dado que se requiere una codificación para cada enlace, si no se especifica una codificación, Windows Communication Foundation (WCF) agrega una codificación predeterminada.Because an encoding is required for each binding, if an encoding is not specified, Windows Communication Foundation (WCF) adds a default encoding for you. El valor predeterminado es texto/XML para los transportes http y https, y binario para otros transportes.The default is Text/XML for the HTTP and HTTPS transports, and Binary for other transports.

La tabla siguiente resume las opciones de cada nivel.The following table summarizes the options for each layer.

NivelLayer OpcionesOptions ObligatorioRequired
Flujo de transaccionesTransaction Flow TransactionFlowBindingElement NoNo
ConfiabilidadReliability ReliableSessionBindingElement NoNo
SeguridadSecurity Simétrico, Asimétrico, Nivel de transporteSymmetric, Asymmetric, Transport-Level NoNo
Cambiar formaShape Change CompositeDuplexBindingElement NoNo
Actualizaciones de transporteTransport Upgrades Secuencia de SSL, secuencia de Windows, Resolución del mismo nivelSSL stream, Windows stream, Peer Resolver NoNo
EncodingEncoding Texto, binario, MTOM, personalizadoText, Binary, MTOM, Custom Yes
TransporteTransport TCP, canalizaciones con nombre, HTTP, HTTPS, MSMQ, personalizadoTCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom Yes

Cada elemento de enlace proporciona la especificación para compilar un generador del canal en el cliente y un agente de escucha del canal en el servicio.Each binding element provides the specification for building a channel factory on the client and a channel listener on the service. Por ejemplo, cuando se construye la pila de generador de canales, hay un generador del canal en la pila para cada elemento de enlace en el enlace.When the channel factory stack is constructed, for example, there is one channel factory in the stack for each binding element in the binding. El mismo tipo de asignación se aplica a los agentes de escucha del canal en la pila, en el servicio.The same sort of mapping applies to the channel listeners in the stack on the service. Es fundamental que haya coherencia en el cliente y en el servicio para establecer la conexión basada en canal entre estos extremos.Consistency on the client and service is critical for establishing the channel-based connection between these endpoints. Cada generador y agente de escucha, a su vez, procesan el envío y la aceptación de los canales correspondientes en la pila del canal que los conecta y estos canales pueden enviar y recibir a continuación los mensajes utilizados en la comunicación.Each factory and listener, in turn, processes the sending and accepting of the corresponding channels in the channel stack that connects them, and these channels can then send and receive the messages used to communicate.

Cada instancia de Binding tiene Name y Namespace; juntos la identifican singularmente en los metadatos del servicio.Each instance of a Binding has a Name and Namespace that together uniquely identify it in the metadata of the service. Si no se especifica ningún nombre o espacio de nombres, WCF agrega automáticamente los valores predeterminados.If no name or namespace is specified, WCF adds a default values for you. El nombre predeterminado es null y el espacio de nombres predeterminado es http://tempuri.org/ .The default name is null and the default namespace is http://tempuri.org/. Este nombre de usuario para el enlace es distinto de la especificación del nombre de protocolo, especificado por la propiedad Scheme.This user name for the binding is distinct from the specification of the protocol name, which is specified by the Scheme property. Si desea agregar más enlaces del http, por ejemplo, puede darles el nombre que desee y establecer todos sus esquemas en "http."If you want to add more HTTP bindings, for example, you can name them whatever you want and set all of their schemes to "http". No hay ninguna aplicación inherente ni envío del equipo basado en Scheme.There is no inherent application or machine dispatch based on the Scheme. Así evita el problema común de no poder registrar los controladores adicionales para los protocolos conocidos.So you avoid the common problem of being unable to register additional handlers for well-known protocols. También puede trabajar con facilidad con varias versiones de un enlace en paralelo dando un nombre diferente a cada versión.You can also easily work with multiple versions of a binding side-by-side by giving each version a different name.

La clase Binding implementa la interfaz IDefaultCommunicationTimeouts para mitigar los ataques por denegación de servicio (DoS) que confían de acaparar los recursos durante intervalos de tiempo extendidos.The Binding class implements the IDefaultCommunicationTimeouts interface to mitigate Denial of Service (DOS) attacks that rely on tying up resources for extended intervals of time. La implementación especifica los valores de tiempos de espera de comunicación para abrir y cerrar las conexiones y para la lectura y escritura de las operaciones asociadas con la recepción y el envío de mensajes.The implementation specifies the communication timeouts values for opening and closing connections and for the reading and writing operations associated with receiving and sending messages. Las propiedades usadas para obtener y establecer estos tiempos de espera y las operaciones de sus valores predeterminados se resumen en la tabla siguiente.The properties used to get and set these timeouts and their default values operations are summarized in the following table.

Propiedad de tiempo de esperaTimeout Property Valor predeterminadoDefault Value
OpenTimeout 1 minuto1 minute
CloseTimeout 1 minuto1 minute
SendTimeout 1 minuto1 minute
ReceiveTimeout 10 minutos10 minutes

Al crear un enlace heredando de la clase Binding, debe invalidar el método CreateBindingElements.When you create a binding by inheriting from Binding, you must override CreateBindingElements.

Además, puede definir sus propios elementos de enlace e insertarlos entre cualquiera de las capas definidas en la tabla anterior.In addition, you can define your own binding elements and insert them between any of the defined layers in the preceding table. Para obtener más información, vea la clase CustomBinding.For more information, see the CustomBinding class.

Constructores

Binding()

Inicializa una nueva instancia de la clase Binding con nombre y espacio de nombres predeterminados.Initializes a new instance of the Binding class with a default name and namespace.

Binding(String, String)

Inicializa una nueva instancia de la clase Binding a partir de un enlace especificado del servicio.Initializes a new instance of the Binding class from a specified binding of the service.

Propiedades

CloseTimeout

Obtiene o establece el intervalo de tiempo proporcionado para que una conexión se cierre antes de que el transporte genere una excepción.Gets or sets the interval of time provided for a connection to close before the transport raises an exception.

MessageVersion

Obtiene la versión de mensaje utilizada por los clientes y servicios configurados con el enlace.Gets the message version used by clients and services configured with the binding.

Name

Obtiene o establece el nombre del enlace.Gets or sets the name of the binding.

Namespace

Obtiene o establece el espacio de nombres XML del enlace.Gets or sets the XML namespace of the binding.

OpenTimeout

Obtiene o establece el intervalo de tiempo proporcionado para que una conexión se abra antes de que el transporte genere una excepción.Gets or sets the interval of time provided for a connection to open before the transport raises an exception.

ReceiveTimeout

Obtiene o establece el intervalo de tiempo que una conexión puede permanecer inactiva, durante el cual no se recibe ningún mensaje de la aplicación, antes de interrumpir la conexión.Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.

Scheme

Cuando se implementa en una clase derivada, establece el esquema del URI que especifica el transporte utilizado por los generadores de canal y de agente de escucha compilados por los enlaces.When implemented in a derived class, sets the URI scheme that specifies the transport used by the channel and listener factories that are built by the bindings.

SendTimeout

Obtiene o establece el intervalo de tiempo proporcionado para que una operación de escritura se complete antes de que el transporte genere una excepción.Gets or sets the interval of time provided for a write operation to complete before the transport raises an exception.

Métodos

BuildChannelFactory<TChannel>(BindingParameterCollection)

Compila la pila de generador de canales en el cliente que crea un tipo especificado de canal y satisface las características especificadas por una colección de parámetros de enlace.Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelFactory<TChannel>(Object[])

Compila la pila de generador de canales en el cliente que crea un tipo especificado de canal y eso satisface las características especificadas por una matriz de objetos.Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by an object array.

BuildChannelListener<TChannel>(BindingParameterCollection)

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y eso satisface las características especificadas por una colección de parámetros de enlace.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified by a collection of binding parameters.

BuildChannelListener<TChannel>(Object[])

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, Object[])

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

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

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

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

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

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

Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y satisface las características especificadas.Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified.

CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Devuelve un valor que indica si el enlace actual puede compilar una pila de generador de canales en el cliente que satisfaga la colección especificada de parámetros de enlace.Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the collection of binding parameters specified.

CanBuildChannelFactory<TChannel>(Object[])

Devuelve un valor que indica si el enlace actual puede compilar una pila de generador de canales en el cliente que satisfaga los requisitos especificados por una matriz de objetos.Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the requirements specified by an object array.

CanBuildChannelListener<TChannel>(BindingParameterCollection)

Devuelve un valor que indica si el enlace actual puede compilar un agente de escucha de canal en el servicio que satisfaga la colección especificada de parámetros de enlace.Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the collection of binding parameters specified.

CanBuildChannelListener<TChannel>(Object[])

Devuelve un valor que indica si el enlace actual puede compilar un agente de escucha de canal en el servicio que satisfaga la colección especificada de parámetros de enlace.Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the criteria specified in an array of objects.

CreateBindingElements()

Cuando se invalida en una clase derivada, crea una colección que contiene los elementos de enlace que forman parte del enlace actual.When overridden in a derived class, creates a collection that contains the binding elements that are part of the current binding.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetProperty<T>(BindingParameterCollection)

Devuelve un objeto escrito solicitado de la capa adecuada en la pila de enlace si está presente.Returns a typed object requested, if present, from the appropriate layer in the binding stack.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ShouldSerializeName()

Devuelve un valor si se debe serializar el nombre del enlace.Returns whether the name of the binding should be serialized.

ShouldSerializeNamespace()

Devuelve un valor si se debe serializar el espacio de nombres.Returns whether the namespace of the binding should be serialized.

ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Se aplica a