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.

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. Un enlace contiene una colección de elementos de enlace que corresponden a los canales de protocolo, canales de transporte y codificadores del mensaje. 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. Hay normalmente seis capas de elementos de enlace en un enlace. Sólo son necesarios el transporte y los elementos de enlace de codificación en la parte inferior de la pila. 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. El valor predeterminado es texto/XML para los transportes http y https, y binario para otros transportes.

La tabla siguiente resume las opciones de cada nivel.

Nivel Opciones Obligatorio
Flujo de transacciones TransactionFlowBindingElement No
Confiabilidad ReliableSessionBindingElement No
Seguridad Simétrico, Asimétrico, Nivel de transporte No
Cambiar forma CompositeDuplexBindingElement No
Actualizaciones de transporte Secuencia de SSL, secuencia de Windows, Resolución del mismo nivel No
Encoding Texto, binario, MTOM, personalizado
Transporte TCP, canalizaciones con nombre, HTTP, HTTPS, MSMQ, personalizado

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. 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. El mismo tipo de asignación se aplica a los agentes de escucha del canal en la pila, en el servicio. Es fundamental que haya coherencia en el cliente y en el servicio para establecer la conexión basada en canal entre estos extremos. 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.

Cada instancia de Binding tiene Name y Namespace; juntos la identifican singularmente en los metadatos del servicio. Si no se especifica ningún nombre o espacio de nombres, WCF agrega automáticamente un valor predeterminado. El nombre predeterminado es null y el espacio de nombres predeterminado es 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. Si desea agregar más enlaces del http, por ejemplo, puede darles el nombre que desee y establecer todos sus esquemas en "http." No hay ninguna aplicación inherente ni envío del equipo basado en Scheme. Así evita el problema común de no poder registrar los controladores adicionales para los protocolos conocidos. También puede trabajar con facilidad con varias versiones de un enlace en paralelo dando un nombre diferente a cada versión.

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. 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. Las propiedades usadas para obtener y establecer estos tiempos de espera y las operaciones de sus valores predeterminados se resumen en la tabla siguiente.

Propiedad de tiempo de espera Valor predeterminado
OpenTimeout 1 minuto
CloseTimeout 1 minuto
SendTimeout 1 minuto
ReceiveTimeout 10 minutos

Al crear un enlace heredando de la clase Binding, debe invalidar el método CreateBindingElements.

Además, puede definir sus propios elementos de enlace e insertarlos entre cualquiera de las capas definidas en la tabla anterior. Para obtener más información, vea la clase CustomBinding.

Constructores

Binding()

Inicializa una nueva instancia de la clase Binding con nombre y espacio de nombres predeterminados.

Binding(String, String)

Inicializa una nueva instancia de la clase Binding a partir de un enlace especificado del servicio.

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.

MessageVersion

Obtiene la versión de mensaje utilizada por los clientes y servicios configurados con el enlace.

Name

Obtiene o establece el nombre del enlace.

Namespace

Obtiene o establece el espacio de nombres XML del enlace.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

CreateBindingElements()

Cuando se invalida en una clase derivada, crea una colección que contiene los elementos de enlace que forman parte del enlace actual.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

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

Devuelve un objeto escrito solicitado de la capa adecuada en la pila de enlace si está presente.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ShouldSerializeName()

Devuelve un valor si se debe serializar el nombre del enlace.

ShouldSerializeNamespace()

Devuelve un valor si se debe serializar el espacio de nombres.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a