Binding Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 | Sí |
Transporte | TCP, canalizaciones con nombre, HTTP, HTTPS, MSMQ, personalizado | Sí |
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 valores predeterminados. 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) |