Compartir vía


IEndpointBehavior Interfaz

Definición

Implementa métodos que se pueden usar para ampliar el comportamiento en tiempo de ejecución de un punto de conexión en una aplicación cliente o servicio.

public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
Derivado

Ejemplos

En el ejemplo de código siguiente se muestra la implementación de un comportamiento de punto de conexión que agrega un System.ServiceModel.Dispatcher.IDispatchMessageInspector objeto en una aplicación de servicio. En este caso, la EndpointBehaviorMessageInspector clase implementa System.ServiceModel.Dispatcher.IDispatchMessageInspector para inspeccionar el mensaje entrante y saliente, la IEndpointBehavior interfaz para insertar la clase inspector en el sistema de inspección para todos los puntos de conexión a los que se aplica el comportamiento y para System.ServiceModel.Configuration.BehaviorExtensionElement habilitar el comportamiento del inspector de mensajes mediante un archivo de configuración de aplicación.

El primer paso es implementar el inspector de mensajes.

// IDispatchMessageInspector Members

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
  Console.WriteLine("AfterReceiveRequest called.");
  return null;
}

public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
  Console.WriteLine("BeforeSendReply called.");
}

En el ApplyDispatchBehavior ejemplo de código siguiente se muestra el uso del método para agregar el inspector de mensajes a la DispatchRuntime.MessageInspectors propiedad .

// IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint serviceEndpoint, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
  return;
}

public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior)
{
  behavior.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}

public void ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher)
{
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new EndpointBehaviorMessageInspector());
}

public void Validate(ServiceEndpoint serviceEndpoint)
{
  return;
}

En el ejemplo de código siguiente se muestra la implementación de System.ServiceModel.Configuration.BehaviorExtensionElement para habilitar el uso del comportamiento del inspector de mensajes desde un archivo de configuración.

// BehaviorExtensionElement members
public override Type BehaviorType
{
  get { return typeof(EndpointBehaviorMessageInspector); }
}

protected override object CreateBehavior()
{
  return new EndpointBehaviorMessageInspector();
}

Por último, el siguiente archivo de configuración muestra cómo se puede usar el ejemplo anterior desde la configuración.

<configuration>
  <system.serviceModel>
    <services>
      <service 
        name="Microsoft.WCF.Documentation.SampleService"
        behaviorConfiguration="metadataSupport"
      >
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/ServiceMetadata" />
          </baseAddresses>
        </host>
        <endpoint
          address="/SampleService"
          binding="wsHttpBinding"
          behaviorConfiguration="withMessageInspector" 
          contract="Microsoft.WCF.Documentation.ISampleService"
        />
        <endpoint
           address="mex"
           binding="mexHttpBinding"
           contract="IMetadataExchange"
        />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
      <behavior name="metadataSupport">
        <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
      </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="withMessageInspector">
          <endpointMessageInspector />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <add 
          name="endpointMessageInspector"
          type="Microsoft.WCF.Documentation.EndpointBehaviorMessageInspector, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
        />
      </behaviorExtensions>
    </extensions>
  </system.serviceModel>
</configuration>

Comentarios

Implemente la IEndpointBehavior interfaz para modificar, examinar o ampliar algún aspecto de la ejecución en todo el punto de conexión en el nivel de aplicación para aplicaciones cliente o de servicio.

  • Use el AddBindingParameters método para pasar datos personalizados en tiempo de ejecución para permitir que los enlaces admitan el comportamiento personalizado.

  • Use el ApplyClientBehavior método para modificar, examinar o insertar extensiones en un punto de conexión de una aplicación cliente.

  • Use el método para modificar, examinar o insertar extensiones en la ejecución en todo el ApplyDispatchBehavior punto de conexión en una aplicación de servicio.

  • Use el Validate método para confirmar que ServiceEndpoint cumple requisitos específicos. Esto se puede usar para asegurarse de que un punto de conexión tiene habilitada una determinada configuración, admite una característica determinada y otros requisitos.

IEndpointBehavior los objetos pueden utilizar cualquiera de estos métodos, pero a menudo solo uno es importante; en tales casos, los métodos sin usar pueden devolver, sin realizar ninguna acción.

Nota:

Todos los IEndpointBehavior métodos pasan un ServiceEndpoint objeto como parámetro. Este parámetro es solo para el examen; si modifica el objeto, ServiceEndpoint el comportamiento de ejecución no está definido.

IEndpointBehavior Los objetos se usan normalmente para tener acceso a las distintas propiedades de los System.ServiceModel.Dispatcher.DispatchRuntimeobjetos , System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatchery System.ServiceModel.Dispatcher.ChannelDispatcher en una aplicación de servicio y en System.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation una aplicación cliente. Además, puede acceder a las propiedades de los clientes y servicios dúplex mediante las ClientRuntime.CallbackDispatchRuntime propiedades y DispatchRuntime.CallbackClientRuntime , respectivamente.

Para obtener una descripción de las distintas propiedades y personalizaciones disponibles, vea Extender ServiceHost y la capa de modelo de servicio.

Una vez que se ha decidido una personalización (y la interfaz de personalización implementada si es necesario) y IEndpointBehavior se ha decidido es el ámbito adecuado de personalización, la personalización debe insertarse en el entorno de ejecución de Windows Communication Foundation (WCF) mediante la implementación IEndpointBehavior y adición del comportamiento del punto de conexión al tiempo de ejecución.

Hay dos maneras de agregar el comportamiento al tiempo de ejecución:

  • Agregue mediante programación el comportamiento del punto de conexión personalizado a la Behaviors propiedad antes de abrir el host de servicio (en una aplicación de servicio) o el generador de canales (en una aplicación cliente).

  • Configure el comportamiento mediante un archivo de configuración de la aplicación. Para obtener más información, consulte <behaviorExtensions>.

Para realizar la tarea de personalización del servicio para la que está previsto, el IEndpointBehavior objeto debe agregarse a la ServiceEndpoint.Behaviors propiedad antes de la construcción del tiempo de ejecución del servicio, que se produce cuando ICommunicationObject.Open se llama al método en System.ServiceModel.ServiceHost. Para realizar una tarea de personalización de cliente, el IEndpointBehavior objeto debe agregarse a la ServiceEndpoint.Behaviors propiedad antes de llamar al ChannelFactory<TChannel>.CreateChannel método o al ICommunicationObject.Open método en ChannelFactory<TChannel>.

Métodos

Nombre Description
AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Implemente para pasar datos en tiempo de ejecución a enlaces para admitir el comportamiento personalizado.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementa una modificación o extensión del cliente en un punto de conexión.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementa una modificación o extensión del servicio en un punto de conexión.

Validate(ServiceEndpoint)

Implemente para confirmar que el punto de conexión cumple algunos criterios previstos.

Se aplica a