Compartir a través de


Vinculaciones y elementos de vinculación

Los enlaces son colecciones de elementos de configuración especiales, denominados elementos de enlace, que el runtime del servicio evalúa cada vez que se construye un cliente o un punto de conexión de servicio. El tipo y el orden de los elementos de enlace dentro de un enlace determinan el orden de selección y apilamiento del protocolo y los canales de transporte en la pila de canales de un punto de conexión.

Los enlaces, especialmente los enlaces proporcionados por el sistema, normalmente también tienen una serie de propiedades de configuración que reflejan las propiedades modificadas con más frecuencia de los elementos de enlace encapsulados.

Un enlace debe contener exactamente un elemento de enlace de transporte. Cada elemento de enlace de transporte implica un elemento de enlace de codificación de mensajes predeterminado, que se puede invalidar agregando como máximo un elemento de enlace de codificación de mensajes al enlace. Además de los elementos de enlace de transporte y codificador, el enlace puede contener cualquier número de elementos de enlace de protocolo que implementen la funcionalidad necesaria para atender y enviar un mensaje SOAP de un punto de conexión a otro. Para obtener más información, consulte Uso de vinculaciones para configurar servicios y clientes.

Extender enlaces y elementos de enlace

Windows Communication Foundation (WCF) incluye enlaces proporcionados por el sistema que abarcan una amplia gama de escenarios. (Para más información, consulte System-Provided Enlaces.) Sin embargo, puede haber ocasiones en las que necesite crear y usar un enlace que no esté incluido en WCF. Los escenarios siguientes requieren la creación de un nuevo enlace.

  • Para usar un nuevo elemento de enlace (como un nuevo transporte, codificación o elemento de enlace de protocolo), debe crear un nuevo enlace que incluya ese elemento de enlace. Por ejemplo, si agregase un UdpTransportBindingElement personalizado para transporte de UDP, necesitaría crear un nuevo enlace para utilizarlo. Para obtener información sobre cómo realizar este comportamiento utilizando el tipo System.ServiceModel.Channels.CustomBinding, consulte Enlaces personalizados.

  • Para configurar los elementos de enlace existentes de forma que los enlaces proporcionados por el sistema no se expongan en propiedades públicas. Por ejemplo, debe crear una nueva vinculación para cambiar el orden en que se realizan las operaciones de firma y cifrado. Para obtener información sobre cómo realizar este comportamiento, consulte Cómo personalizar un vínculo System-Provided.

  • Para establecer enlaces estándar corporativos que solo expongan opciones de configuración específicas. Por ejemplo, para crear una variante de la WSHttpBinding para su empresa en la que no se pueda deshabilitar la seguridad, cree un nuevo enlace que se comporte como el WSHttpBinding, pero con seguridad siempre activada. Para más información, consulte Creación de enlaces definidos por el usuario.

  • Para realizar algunas personalizaciones de metadatos, normalmente pero no necesariamente para configurar o usar algún elemento de enlace personalizado. Para obtener más información sobre cómo proporcionar compatibilidad de metadatos con enlaces y elementos de enlace, consulte Compatibilidad con la configuración y los metadatos.

Canales, enlaces y elementos de enlace

Los enlaces y los elementos de enlace son la conexión entre el modelo de programación de aplicaciones, que incluye los atributos y comportamientos, y el modelo de canal, que incluye los generadores y agentes de escucha, codificadores de mensajes y implementaciones de transporte y protocolo. Normalmente, los elementos de enlace y los enlaces se implementan para permitir que el nivel de aplicación use los canales.

La capa de canal entrega o recibe mensajes hacia y desde el nivel de servicio y transporta esos mensajes entre puntos de conexión. En un cliente, la capa de canales es una pila de generadores de canales que crean canales para un extremo de la red. En un servicio, la capa de canales es una pila de agentes de escucha de canales que aceptan los canales recibidos en un punto de conexión de la red.

Hay dos tipos generales de canales: canales de protocolo y canales de transporte. Los canales de transporte son responsables de la transmisión real de un mensaje de un punto de conexión de red a otro. Los canales de transporte deben tener un codificador de mensajes predeterminado y deben poder usar un codificador de mensajes alternativo proporcionado a través de un elemento de enlace del codificador de mensajes. Un codificador de mensajes es responsable de convertir unSystem.ServiceModel.Channels.Message en una representación de la conexión y viceversa. Los canales de protocolo son responsables de implementar protocolos de nivel SOAP (por ejemplo, WS-Security o WS-ReliableMessaging).

El requisito principal para los canales de transporte y protocolo es que implementan las interfaces de canal necesarias. Para crear una capa de canales activa, deben tener asociados generadores y agentes de escucha, etc. Para usar las implementaciones de canal de WCF, debe haber elementos de enlace asociados derivados de BindingElement para cada canal y debe haber un elemento de extensión de enlace relacionado para su inclusión en los archivos de configuración que derivan de BindingElementExtensionElement.

Como se mencionó anteriormente, los elementos de enlace para codificadores de mensajes, protocolo y implementaciones de canal de transporte se pueden apilar para formar una pila de canales y el mecanismo para alinearlos en un conjunto ordenado es el enlace. Los enlaces y los elementos de enlace conectan el modelo de programación de aplicaciones al modelo de canal. Puede usar las implementaciones de canal directamente desde el código, pero, a menos que los codificadores, los transportes y los protocolos se implementen como elementos de unión, no se pueden usar desde el modelo de programación de la capa de servicio.

Para obtener más información sobre el desarrollo de canales y sus elementos de enlace, vea Extender la capa de canal.