IContractBehavior.ApplyClientBehavior Método
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í.
Implementa una modificación o extensión del cliente en un contrato.
public:
void ApplyClientBehavior(System::ServiceModel::Description::ContractDescription ^ contractDescription, System::ServiceModel::Description::ServiceEndpoint ^ endpoint, System::ServiceModel::Dispatcher::ClientRuntime ^ clientRuntime);
public void ApplyClientBehavior(System.ServiceModel.Description.ContractDescription contractDescription, System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime);
abstract member ApplyClientBehavior : System.ServiceModel.Description.ContractDescription * System.ServiceModel.Description.ServiceEndpoint * System.ServiceModel.Dispatcher.ClientRuntime -> unit
Public Sub ApplyClientBehavior (contractDescription As ContractDescription, endpoint As ServiceEndpoint, clientRuntime As ClientRuntime)
Parámetros
- contractDescription
- ContractDescription
Descripción del contrato para el que está prevista la extensión.
- endpoint
- ServiceEndpoint
Punto de conexión.
- clientRuntime
- ClientRuntime
Tiempo de ejecución del cliente.
Ejemplos
En el ejemplo de código siguiente se supone una implementación personalizada IInstanceProvider denominada ObjectProviderBehavior que proporciona un comportamiento "singleton" ; siempre devuelve la misma instancia de servicio y no la recicla.
Para insertar la personalización del proveedor de instancias, en el ejemplo se muestra cómo implementar un atributo personalizado (SingletonBehaviorAttribute) que implementa IContractBehavior para insertar el proveedor de instancias de servicio personalizado. También implementa IContractBehaviorAttribute, que enlaza su uso al ISampleService contrato.
public class SingletonBehaviorAttribute : Attribute, IContractBehaviorAttribute, IContractBehavior
{
#region IContractBehaviorAttribute Members
public Type TargetContract
{
get { return typeof(ISampleService); }
}
#endregion
#region IContractBehavior Members
public void AddBindingParameters(ContractDescription description, ServiceEndpoint endpoint, System.ServiceModel.Channels.BindingParameterCollection parameters)
{
return;
}
public void ApplyClientBehavior(ContractDescription description, ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
return;
}
public void ApplyDispatchBehavior(ContractDescription description, ServiceEndpoint endpoint, DispatchRuntime dispatch)
{
dispatch.InstanceProvider = new ObjectProviderBehavior("Custom ObjectProviderBehavior constructor.");
}
public void Validate(ContractDescription description, ServiceEndpoint endpoint)
{
return;
}
#endregion
}
Comentarios
Implemente el ApplyClientBehavior método para ver, modificar o agregar extensiones personalizadas al tiempo de ejecución del cliente en todos los mensajes o para una operación específica. Para obtener más información sobre las personalizaciones que puede hacer con un objeto en tiempo de ejecución de cliente, vea ClientRuntime y ClientOperation.
El ApplyClientBehavior método puede producir una NotImplementedException excepción si el comportamiento solo está pensado para su uso en una aplicación de servicio.
Se llama a este método una vez para cada punto de conexión que usa el contrato de servicio especificado.
Tenga en cuenta que puede haber dos operaciones con el mismo nombre en la descripción (una en cada dirección), por lo que si debe recorrer en iteración las operaciones en las que el contrato es un contrato dúplex, debe correlacionar la dirección del mensaje entre el punto de conexión ClientRuntime y el devuelto por la CallbackDispatchRuntime propiedad .
Dado que es posible que otros comportamientos ya hayan agregado o quitado algunas operaciones del entorno de ejecución, no hay ninguna garantía de que haya el mismo número de operaciones en la descripción que hay ClientOperation objetos en la Operations propiedad .