CustomBinding 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í.
Define un enlace de una lista de elementos de enlace.
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- Herencia
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo crear un CustomBinding objeto mediante ReliableSessionBindingElement y HttpTransportBindingElement
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// 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();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' 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()
End Using
Comentarios
Use un enlace personalizado cuando uno de los enlaces proporcionados por el sistema no cumpla los requisitos del servicio. Se podría usar un enlace personalizado, por ejemplo, para habilitar el uso de un nuevo transporte o un nuevo codificador en un punto de conexión de servicio.
Un enlace personalizado se construye mediante una de las CustomBinding de una colección de elementos de enlace que se "apilan" en un orden específico:
En la parte superior es opcional TransactionFlowBindingElement que permite el flujo de transacciones.
A continuación, es opcional ReliableSessionBindingElement que proporciona un mecanismo de sesión y ordenación tal como se define en la especificación de WS-ReliableMessaging. Esta noción de una sesión puede cruzar SOAP e intermediarios de transporte.
A continuación, se muestra un elemento de enlace de seguridad opcional que proporciona características de seguridad como autorización, autenticación, protección y confidencialidad. Windows Communication Foundation (WCF) proporciona los siguientes elementos de enlace de seguridad:
A continuación, se muestran los patrones de mensaje opcionales especificados por los elementos de enlace:
A continuación, se muestran los elementos de enlace de actualizaciones o asistentes de transporte opcionales:
A continuación hay un elemento de enlace de codificación del mensaje requerido. Puede usar su propio transporte o usar uno de los siguientes enlaces de codificación de mensajes:
En la parte inferior se encuentra un elemento de transporte obligatorio. Puedes usar tu propio transporte o usar uno de los elementos de enlace de transporte proporcionados por Windows Communication Foundation (WCF):
En la tabla siguiente se resumen las opciones de cada capa.
| Nivel | Opciones | Obligatorio |
|---|---|---|
| Flujo de transacciones | TransactionFlowBindingElement | No |
| Reliability | ReliableSessionBindingElement | No |
| Seguridad | Simétrico, asimétrico, Transport-Level | No |
| Cambio de forma | CompositeDuplexBindingElement | No |
| Actualizaciones de transporte | Secuencia SSL, secuencia de Windows, Resolución del mismo nivel | No |
| Encoding | Texto, binario, MTOM, personalizado | Sí |
| Transport | TCP, Canalizaciones con nombre, HTTP, HTTPS, tipos de MSMQ, Personalizado | Sí |
Además, puede definir sus propios elementos de enlace e insertarlos entre cualquiera de las capas definidas anteriores.
Para obtener una explicación sobre cómo usar un enlace personalizado para modificar un enlace proporcionado por el sistema, vea How to: Customize a System-Provided Binding.
Note
Al llamar a un servicio WCF creado con .NET Framework 4.0 o posterior desde una aplicación cliente WCF compilada con .NET Framework 3.5 o versiones anteriores, el archivo de configuración generado por svcutil.exe o agregar una referencia de servicio desde Visual Studio contendrá el atributo de validez en la configuración de enlace. El entorno de ejecución de .NET Framework 3.5 no reconoce este atributo y la aplicación iniciará una ConfigurationErrorsException con el mensaje "No reconocido la validez del atributo". Para solucionar este problema, quite el atributo de validez de la configuración de enlace.
Constructores
| Nombre | Description |
|---|---|
| CustomBinding() |
Inicializa una nueva instancia de la clase CustomBinding. |
| CustomBinding(Binding) |
Inicializa una nueva instancia de la CustomBinding clase a partir de los valores de un enlace especificado. |
| CustomBinding(BindingElement[]) |
Inicializa una nueva instancia de la CustomBinding clase a partir de una matriz de elementos de enlace. |
| CustomBinding(IEnumerable<BindingElement>) |
Inicializa una nueva instancia de la CustomBinding clase con los elementos de enlace de una pila de canales completa. |
| CustomBinding(String, String, BindingElement[]) |
Inicializa una nueva instancia de la CustomBinding clase a partir de una matriz de elementos de enlace con un nombre y un espacio de nombres especificados. |
| CustomBinding(String) |
Inicializa una nueva instancia de la clase CustomBinding. |
Propiedades
| Nombre | Description |
|---|---|
| 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. (Heredado de Binding) |
| Elements |
Obtiene los elementos de enlace del enlace personalizado. |
| MessageVersion |
Obtiene la versión del mensaje utilizada por clientes y servicios configurados con el enlace. (Heredado de Binding) |
| Name |
Obtiene o establece el nombre del enlace. (Heredado de Binding) |
| Namespace |
Obtiene o establece el espacio de nombres XML del enlace. (Heredado de Binding) |
| OpenTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que se abra una conexión antes de que el transporte genere una excepción. (Heredado de Binding) |
| ReceiveTimeout |
Obtiene o establece el intervalo de tiempo que una conexión puede permanecer inactiva, durante la cual no se recibe ningún mensaje de aplicación, antes de quitarla. (Heredado de Binding) |
| Scheme |
Obtiene el esquema de URI para el transporte utilizado por el enlace personalizado. |
| SendTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que se complete una operación de escritura antes de que el transporte genere una excepción. (Heredado de Binding) |
Métodos
| Nombre | Description |
|---|---|
| BuildChannelFactory<TChannel>(BindingParameterCollection) |
Compila la pila de generador de canales en el cliente que crea un tipo de canal especificado y que satisface las características especificadas por una colección de parámetros de enlace. (Heredado de Binding) |
| BuildChannelFactory<TChannel>(Object[]) |
Compila la pila del generador de canales en el cliente que crea un tipo de canal especificado y que satisface las características especificadas por una matriz de objetos. (Heredado de Binding) |
| BuildChannelListener<TChannel>(BindingParameterCollection) |
Compila el agente de escucha de canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas por una colección de parámetros de enlace. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| BuildChannelListener<TChannel>(Uri, String, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
| CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede crear una pila de generador de canales en el cliente que satisfaga la colección de parámetros de enlace especificados. (Heredado de Binding) |
| CanBuildChannelFactory<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede crear una pila de generador de canales en el cliente que cumpla los requisitos especificados por una matriz de objetos. (Heredado de Binding) |
| CanBuildChannelListener<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede crear una pila del agente de escucha de canal en el servicio que satisface la colección de parámetros de enlace especificados. (Heredado de Binding) |
| CanBuildChannelListener<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede crear una pila del agente de escucha de canal en el servicio que cumpla los criterios especificados en una matriz de objetos. (Heredado de Binding) |
| CreateBindingElements() |
Devuelve una colección genérica de los elementos de enlace del enlace personalizado. |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetHashCode() |
Actúa como la función hash predeterminada. (Heredado de Object) |
| GetProperty<T>(BindingParameterCollection) |
Devuelve un objeto con tipo solicitado, si está presente, de la capa adecuada en la pila de enlace. (Heredado de Binding) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ShouldSerializeName() |
Devuelve si se debe serializar el nombre del enlace. (Heredado de Binding) |
| ShouldSerializeNamespace() |
Devuelve si se debe serializar el espacio de nombres del enlace. (Heredado de Binding) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |