Enlaces y elementos de enlace
Los enlaces son colecciones de elementos de configuración especiales llamados elementos de enlace que evalúa el entorno de ejecución del servicio cada vez que se construye un punto de conexión de cliente o servicio. El tipo y orden de los elementos de enlace dentro de un enlace determina la selección y el orden de apilamiento del protocolo y los canales de transporte en la pila de canales de un extremo.
Los enlaces, sobre todo los enlaces proporcionados por el sistema, normalmente tienen también varias propiedades de configuración que reflejan las propiedades más modificadas habitualmente de los elementos de enlace encapsulados.
Un enlace debe contener exactamente un elemento de enlace del transporte. Cada elemento de enlace de transporte implica un elemento de enlace de codificación de mensajes predeterminado, que se puede invalidar agregando a lo sumo un elemento de enlace de codificación de mensajes al enlace. Además de los elementos de enlace de codificador y transporte, el enlace puede contener cualquier número de elementos de enlace protocolares que juntos implementan la funcionalidad necesaria para el servicio y envío de un mensaje SOAP de un punto de conexión a otro. Para información más detallada, consulte, Utilización de enlaces para configurar servicios y clientes.
Extender enlaces y elementos de enlace
Windows Communication Foundation (WCF) incluye enlaces proporcionados por el sistema que cubren una gama amplia de escenarios. (Para más información, consulte Enlaces proporcionados por el sistema). Sin embargo, puede que haya ocasiones en las que deba crear y utilizar un enlace que no esté incluido en WCF. Los siguientes escenarios requieren la creación de un nuevo enlace.
Para utilizar un nuevo elemento de enlace (como un nuevo transporte, codificación o elemento de enlace protocolar), 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 mediante el tipo System.ServiceModel.Channels.CustomBinding, consulte Enlaces personalizados.Para configurar elementos de enlace existentes de tal modo que los enlaces proporcionados por el sistema no se expongan en propiedades públicas. Por ejemplo, debe crear un nuevo enlace para cambiar el orden en el que se realizan las operaciones de firmado y cifrado. Para obtener información sobre cómo realizar este comportamiento, consulte Personalización de un enlace proporcionado por el sistema.
Para establecer enlaces estándar corporativos que solo exponen opciones de configuración específicas. Por ejemplo, para crear para su compañía una variante de WSHttpBinding en la que la seguridad no puede estar deshabilitada, cree un nuevo enlace que se comporte como el WSHttpBinding, pero con la seguridad siempre habilitada. Para más información, consulte Creación de enlaces definidos por el usuario.
Para realizar alguna personalización de metadatos, normalmente, pero no necesariamente, para configurar o utilizar algún elemento de enlace personalizado. Para más información sobre cómo proporcionar compatibilidad con metadatos a los enlaces y elementos de enlace, consulte Compatibilidad con metadatos y configuración.
Canales, enlaces y elementos de enlace
Los enlaces y elementos de enlace son la conexión entre el modelo de programación de aplicaciones, que incluye los atributos y comportamientos, y el modelo del canal, que incluye los generadores y agentes de escucha, codificadores de mensajes e implementaciones de protocolo y transporte. Normalmente, los elementos de enlace y los enlaces se implementan para permitir al nivel de aplicaciones el uso de los canales.
La capa de canales entrega o recibe mensajes a y desde la capa del 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 de canales generales: canales de transporte y canales de protocolo. Los canales de transporte son responsables de la transmisión real de un mensaje des un extremo de la red a otro. Los canales de transporte deben tener un codificador de mensajes predeterminado y poder utilizar 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 protocolares son responsables de la implementación de los protocolos de nivel SOAP (por ejemplo, WS-Security o WS-ReliableMessaging).
El requisito primario para los canales protocolares y de transporte es que implementen las interfaces de canales necesarias. Para crear una capa de canales activa, deben tener asociados generadores y agentes de escucha, etc. Para utilizar las implementaciones de canal de WCF, es necesario que haya un elemento de enlace asociado derivado de BindingElement para cada canal y debe haber un elemento de extensión de enlace relacionado para la inclusión en los archivos de configuración que deriva de BindingElementExtensionElement.
Como se mencionó anteriormente, los elementos de enlace para los codificadores de mensajes, protocolo e 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 elementos de enlace conectan el modelo de programación de aplicaciones al modelo de canales. Puede utilizar sus implementaciones de canal directamente a partir de código, pero, a menos que los codificadores, transportes y protocolos se implementen como elementos de enlace, no se podrán utilizar desde el modelo de programación de capa de servicio.
Para información detallada sobre cómo desarrollar canales y sus elementos de enlace, consulte Extensión de la capa de canales.