IEndpointBehavior Interface

Definição

Implementa métodos que podem ser usados para estender o comportamento de tempo de execução de ponto de extremidade em um serviço ou aplicativo cliente.Implements methods that can be used to extend run-time behavior for an endpoint in either a service or client application.

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

Exemplos

O exemplo de código a seguir mostra a implementação de um comportamento de ponto de extremidade que adiciona um objeto System.ServiceModel.Dispatcher.IDispatchMessageInspector em um aplicativo de serviço.The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. Nesse caso, a classe EndpointBehaviorMessageInspector implementa System.ServiceModel.Dispatcher.IDispatchMessageInspector para inspecionar a mensagem de entrada e saída, a interface IEndpointBehavior para inserir a classe de Inspetor no sistema de inspeção para todos os pontos de extremidade aos quais o comportamento se aplica e o System.ServiceModel.Configuration.BehaviorExtensionElement para habilitar a mensagem comportamento do Inspetor usando um arquivo de configuração de aplicativo.In this case, the EndpointBehaviorMessageInspector class implements System.ServiceModel.Dispatcher.IDispatchMessageInspector to inspect the inbound and outbound message, the IEndpointBehavior interface to insert the inspector class into the inspection system for all endpoints to which the behavior applies, and the System.ServiceModel.Configuration.BehaviorExtensionElement to enable the message inspector behavior using an application configuration file.

A primeira etapa é implementar o Inspetor de mensagem.The first step is to implement the message inspector.

// 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.");
}

O exemplo de código a seguir mostra o uso do método ApplyDispatchBehavior para adicionar o Inspetor de mensagem à propriedade DispatchRuntime.MessageInspectors.The next code example shows the use of the ApplyDispatchBehavior method to add the message inspector to the DispatchRuntime.MessageInspectors property.

// 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;
}

O exemplo de código a seguir mostra a implementação de System.ServiceModel.Configuration.BehaviorExtensionElement para habilitar o uso do comportamento do Inspetor de mensagem de um arquivo de configuração.The following code example shows the implementation of System.ServiceModel.Configuration.BehaviorExtensionElement in order to enable use of the message inspector behavior from a configuration file.

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

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

Por fim, o arquivo de configuração a seguir mostra como o exemplo anterior pode ser usado a partir da configuração.Finally, the following configuration file shows how the preceding example can be used from configuration.

<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>

Comentários

Implemente a interface IEndpointBehavior para modificar, examinar ou estender algum aspecto da execução em todo o ponto de extremidade no nível do aplicativo para aplicativos cliente ou de serviço.Implement the IEndpointBehavior interface to modify, examine, or extend some aspect of endpoint-wide execution at the application level for either client or service applications.

  • Use o método AddBindingParameters para passar dados personalizados em tempo de execução para habilitar associações para dar suporte ao comportamento personalizado.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Use o método ApplyClientBehavior para modificar, examinar ou inserir extensões para um ponto de extremidade em um aplicativo cliente.Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • Use o método ApplyDispatchBehavior para modificar, examinar ou inserir extensões para a execução em todo o ponto de extremidade em um aplicativo de serviço.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Use o método Validate para confirmar que um ServiceEndpoint atende a requisitos específicos.Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. Isso pode ser usado para garantir que um ponto de extremidade tenha uma determinada definição de configuração habilitada, dá suporte a um recurso específico e outros requisitos.This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

os objetos IEndpointBehavior podem usar qualquer um desses métodos, mas geralmente apenas um é importante; nesses casos, os métodos não utilizados podem retornar, executando nenhuma ação.IEndpointBehavior objects can make use of any of these methods, but often only one is important; in such cases, the unused methods can return, performing no action.

Observação

Todos os métodos IEndpointBehavior passam um objeto ServiceEndpoint como um parâmetro.All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. Este parâmetro é apenas para exame; Se você modificar o objeto ServiceEndpoint, o comportamento de execução será indefinido.This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

os objetos IEndpointBehavior normalmente são usados para acessar as várias propriedades dos objetos System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher e System.ServiceModel.Dispatcher.ChannelDispatcher em um aplicativo de serviço e o System.ServiceModel.Dispatcher.ClientRuntime e System.ServiceModel.Dispatcher.ClientOperation em um aplicativo cliente.IEndpointBehavior objects are typically used to access the various properties of the System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher, and System.ServiceModel.Dispatcher.ChannelDispatcher objects in a service application and the System.ServiceModel.Dispatcher.ClientRuntime and System.ServiceModel.Dispatcher.ClientOperation in a client application. Além disso, você pode acessar as propriedades de clientes e serviços duplex usando as propriedades ClientRuntime.CallbackDispatchRuntime e DispatchRuntime.CallbackClientRuntime, respectivamente.In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

Para obter uma descrição das várias propriedades e personalizações disponíveis, consulte estendendo o ServiceHost e a camada do modelo de serviço.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

Depois que uma personalização tiver sido decidida (e a interface de personalização implementada se necessário) e o IEndpointBehavior tiver sido decidido é o escopo apropriado de personalização, a personalização deverá ser inserida na Windows Communication Foundation (WCF) tempo de execução implementando IEndpointBehavior e adicionando o comportamento do ponto de extremidade ao tempo de execução.Once a customization has been decided upon (and the customization interface implemented if necessary) and the IEndpointBehavior has been decided is the appropriate scope of customization, the customization must be inserted into the Windows Communication Foundation (WCF) runtime by implementing IEndpointBehavior and adding the endpoint behavior to the runtime.

Há duas maneiras de adicionar o comportamento ao tempo de execução:There are two ways to add the behavior to the runtime:

  • Adicione programaticamente o comportamento de ponto de extremidade personalizado à propriedade Behaviors antes da abertura do host de serviço (em um aplicativo de serviço) ou da fábrica de canais (em um aplicativo cliente).Programmatically add the custom endpoint behavior to the Behaviors property prior to the opening of the service host (in a service application) or the channel factory (in a client application).

  • Configure o comportamento usando um arquivo de configuração de aplicativo.Configure the behavior using an application configuration file. Para obter detalhes, consulte <behaviorExtensions @ no__t-2.For details, see <behaviorExtensions>.

Para executar a tarefa de personalização de serviço para a qual ela se destina, o objeto IEndpointBehavior deve ser adicionado à propriedade ServiceEndpoint.Behaviors antes da construção do tempo de execução do serviço, que ocorre quando o método ICommunicationObject.Open é chamado em System.ServiceModel.ServiceHost.To perform the service customization task for which it is intended, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property prior to the construction of the service runtime, which occurs when ICommunicationObject.Open method is called on System.ServiceModel.ServiceHost. Para executar uma tarefa de personalização do cliente, o objeto IEndpointBehavior deve ser adicionado à propriedade ServiceEndpoint.Behaviors antes de chamar o método ChannelFactory<TChannel>.CreateChannel ou o método ICommunicationObject.Open em ChannelFactory<TChannel>.To perform a client customization task, the IEndpointBehavior object must be added to the ServiceEndpoint.Behaviors property before calling the ChannelFactory<TChannel>.CreateChannel method or the ICommunicationObject.Open method on ChannelFactory<TChannel>.

Métodos

AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Implementar para passar dados em tempo de execução para associações a fim de dar suporte ao comportamento personalizado.Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementa uma modificação ou extensão do cliente em todo um ponto de extremidade.Implements a modification or extension of the client across an endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementa uma modificação ou extensão do serviço em um ponto de extremidade.Implements a modification or extension of the service across an endpoint.

Validate(ServiceEndpoint)

Implemente para confirmar se o ponto de extremidade atende a alguns critérios desejados.Implement to confirm that the endpoint meets some intended criteria.

Aplica-se a