IEndpointBehavior IEndpointBehavior IEndpointBehavior IEndpointBehavior Interface

Definizione

Implementa metodi che possono essere usati per estendere il comportamento della fase di esecuzione per un endpoint in un'applicazione client o di servizio.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
Derivato

Esempi

Nell'esempio di codice seguente viene illustrata l'implementazione di un comportamento dell'endpoint che aggiunge un oggetto System.ServiceModel.Dispatcher.IDispatchMessageInspector a un'applicazione del servizio.The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. In questo caso, la classe EndpointBehaviorMessageInspector implementa System.ServiceModel.Dispatcher.IDispatchMessageInspector per controllare il messaggio in entrata e in uscita, l'interfaccia IEndpointBehavior per inserire la classe di controllo nel sistema di ispezione per tutti gli endpoint per i quali è valido il comportamento e System.ServiceModel.Configuration.BehaviorExtensionElement per abilitare il comportamento del controllo messaggi utilizzando un file di configurazione dell'applicazione.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.

Il primo passaggio consiste nell'implementare il controllo messaggi.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.");
}

Nell'esempio di codice seguente viene illustrato come utilizzare il metodo ApplyDispatchBehavior per aggiungere il controllo messaggi alla proprietà 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;
}

Nell'esempio di codice seguente viene illustrata l'implementazione di System.ServiceModel.Configuration.BehaviorExtensionElement per abilitare l'utilizzo del comportamento del controllo messaggi da un file di configurazione.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();
}

Nel file di configurazione seguente viene illustrato come utilizzare l'esempio precedente dalla configurazione.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>

Commenti

Implementare l'interfaccia IEndpointBehavior per modificare, esaminare o estendere aspetti dell'esecuzione dell'endpoint a livello di applicazione per applicazioni client o di servizio.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.

  • Utilizzare il metodo AddBindingParameters per passare dati personalizzati della fase di esecuzione per abilitare le associazioni a supportare il comportamento personalizzato.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Utilizzare il metodo ApplyClientBehavior per modificare, esaminare o inserire estensioni in un endpoint di un'applicazione client.Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • Utilizzare il metodo ApplyDispatchBehavior per modificare, esaminare o inserire estensioni in un'esecuzione dell'endpoint in un'applicazione del servizio.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Utilizzare il metodo Validate per verificare che una classe ServiceEndpoint soddisfi requisiti specifici.Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. Questo metodo può essere utilizzato per garantire che in un endpoint sia abilitata una certa impostazione di configurazione, che supporti una particolare funzionalità e altri requisiti.This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

Gli oggetti IEndpointBehavior possono utilizzare uno o più di questi metodi, ma spesso soltanto uno di essi è importante. In questi casi, è possibile che i metodi non utilizzati non eseguano alcuna azione.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.

Nota

Tutti i metodi IEndpointBehavior passano un oggetto ServiceEndpoint come parametro.All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. Questo parametro è utilizzabile solo per attività di esame. Se l'oggetto ServiceEndpoint viene modificato, il comportamento di esecuzione sarà indefinito.This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

Gli oggetti IEndpointBehavior sono utilizzati in genere per accedere alle varie proprietà degli oggetti System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher e System.ServiceModel.Dispatcher.ChannelDispatcher in un'applicazione del servizio e alle classi System.ServiceModel.Dispatcher.ClientRuntime e System.ServiceModel.Dispatcher.ClientOperation in un'applicazione client.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. È inoltre possibile accedere alle proprietà di client e servizi duplex utilizzando le proprietà ClientRuntime.CallbackDispatchRuntime e DispatchRuntime.CallbackClientRuntime, rispettivamente.In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

Per una descrizione delle varie proprietà e personalizzazioni disponibili, vedere estensione di ServiceHost e del livello del modello di servizio.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

Una volta che è stata decisa una personalizzazione (e che l'interfaccia di personalizzazione è stata implementata, se necessario) e che il IEndpointBehavior è stato scelto come ambito di personalizzazione appropriato, la personalizzazione deve essere inserita nell'Windows Communication Foundation (WCF) runtime implementando IEndpointBehavior e aggiungendo il comportamento dell'endpoint al runtime.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.

Esistono due modi per aggiungere il comportamento alla fase di esecuzione:There are two ways to add the behavior to the runtime:

  • Aggiungere il comportamento dell'endpoint a livello di programmazione alla proprietà Behaviors prima dell'apertura del host del servizio (in un'applicazione del servizio) o della channel factory (in un'applicazione client).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).

  • Configurare il comportamento utilizzando un file di configurazione dell'applicazione.Configure the behavior using an application configuration file. Per informazioni dettagliate, vedere <behaviorExtensions @ no__t-2.For details, see <behaviorExtensions>.

Per eseguire un'attività di personalizzazione nel relativo servizio, è necessario aggiungere l'oggetto IEndpointBehavior alla proprietà ServiceEndpoint.Behaviors prima della costruzione della fase di esecuzione del servizio che si verifica quando il metodo ICommunicationObject.Open viene chiamato sull'oggetto 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. Per eseguire un'attività di personalizzazione nel client, è necessario aggiungere l'oggetto IEndpointBehavior alla proprietà ServiceEndpoint.Behaviors prima di chiamare il metodo ChannelFactory<TChannel>.CreateChannel o il metodo ICommunicationObject.Open su 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>.

Metodi

AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection) AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Procedere all'implementazione per passare i dati in fase di esecuzione alle associazioni per garantire il supporto del comportamento personalizzato.Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime) ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementa una modifica o un'estensione del client all'interno di un endpoint.Implements a modification or extension of the client across an endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementa una modifica o un'estensione del servizio all'interno di un endpoint.Implements a modification or extension of the service across an endpoint.

Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint) Validate(ServiceEndpoint)

Procedere all'implementazione per verificare che l'endpoint soddisfi alcuni criteri specificati.Implement to confirm that the endpoint meets some intended criteria.

Si applica a