Condividi tramite


IEndpointBehavior Interfaccia

Definizione

Implementa metodi che possono essere usati per estendere il comportamento di runtime per un endpoint in un servizio o in un'applicazione client.

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

Esempio

Nell'esempio di codice seguente viene illustrata l'implementazione di un comportamento dell'endpoint che aggiunge un System.ServiceModel.Dispatcher.IDispatchMessageInspector oggetto in un'applicazione di servizio. In questo caso, la EndpointBehaviorMessageInspector classe implementa System.ServiceModel.Dispatcher.IDispatchMessageInspector per esaminare il messaggio in ingresso e in uscita, l'interfaccia IEndpointBehavior per inserire la classe inspector nel sistema di ispezione per tutti gli endpoint a cui si applica il comportamento e System.ServiceModel.Configuration.BehaviorExtensionElement per abilitare il comportamento del controllo messaggi usando un file di configurazione dell'applicazione.

Il primo passaggio consiste nell'implementare il controllo messaggi.

// 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 l'uso del ApplyDispatchBehavior metodo per aggiungere il controllo messaggi alla DispatchRuntime.MessageInspectors proprietà .

// 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 consentire l'uso del comportamento del controllo messaggi da un file di configurazione.

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

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

Infine, il file di configurazione seguente illustra come usare l'esempio precedente dalla configurazione.

<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 alcuni aspetti dell'esecuzione a livello di endpoint a livello di applicazione per le applicazioni client o di servizio.

  • Usare il AddBindingParameters metodo per passare dati personalizzati in fase di esecuzione per abilitare le associazioni per supportare il comportamento personalizzato.

  • Usare il ApplyClientBehavior metodo per modificare, esaminare o inserire estensioni in un endpoint in un'applicazione client.

  • Usare il ApplyDispatchBehavior metodo per modificare, esaminare o inserire estensioni per l'esecuzione a livello di endpoint in un'applicazione di servizio.

  • Usare il Validate metodo per verificare che un ServiceEndpoint oggetto soddisfi requisiti specifici. Questa opzione può essere usata per assicurarsi che un endpoint disponga di una determinata impostazione di configurazione abilitata, supporti una particolare funzionalità e altri requisiti.

IEndpointBehavior gli oggetti possono utilizzare uno di questi metodi, ma spesso solo uno è importante; in questi casi, i metodi inutilizzati possono restituire, senza eseguire alcuna azione.

Annotazioni

Tutti i IEndpointBehavior metodi passano un ServiceEndpoint oggetto come parametro. Questo parametro è solo per l'esame; se si modifica l'oggetto il ServiceEndpoint comportamento di esecuzione non è definito.

IEndpointBehavior gli oggetti vengono in genere usati per accedere alle varie proprietà degli System.ServiceModel.Dispatcher.DispatchRuntimeoggetti , System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatchere System.ServiceModel.Dispatcher.ChannelDispatcher in un'applicazione di servizio e System.ServiceModel.Dispatcher.ClientRuntimeSystem.ServiceModel.Dispatcher.ClientOperation in un'applicazione client. Inoltre, è possibile accedere alle proprietà dei client e dei servizi duplex usando rispettivamente le ClientRuntime.CallbackDispatchRuntime proprietà e DispatchRuntime.CallbackClientRuntime .

Per una descrizione delle varie proprietà e personalizzazioni disponibili, vedere Estensione di ServiceHost e del livello del modello di servizio.

Dopo aver deciso una personalizzazione (e l'interfaccia di personalizzazione implementata, se necessario) e l'oggetto IEndpointBehavior è stato deciso è l'ambito appropriato della personalizzazione, la personalizzazione deve essere inserita nel runtime di Windows Communication Foundation (WCF) implementando IEndpointBehavior e aggiungendo il comportamento dell'endpoint al runtime.

Esistono due modi per aggiungere il comportamento al runtime:

  • Aggiungere a livello di codice il comportamento dell'endpoint personalizzato alla Behaviors proprietà prima dell'apertura dell'host del servizio (in un'applicazione di servizio) o della channel factory (in un'applicazione client).

  • Configurare il comportamento usando un file di configurazione dell'applicazione. Per informazioni dettagliate, vedere behaviorExtensions.For details, see< behaviorExtensions>.

Per eseguire l'attività di personalizzazione del servizio per cui è prevista, l'oggetto IEndpointBehavior deve essere aggiunto alla ServiceEndpoint.Behaviors proprietà prima della costruzione del runtime del servizio, che si verifica quando ICommunicationObject.Open viene chiamato il metodo su System.ServiceModel.ServiceHost. Per eseguire un'attività di personalizzazione client, è necessario aggiungere l'oggetto IEndpointBehavior alla ServiceEndpoint.Behaviors proprietà prima di chiamare il ChannelFactory<TChannel>.CreateChannel metodo o il ICommunicationObject.Open metodo in ChannelFactory<TChannel>.

Metodi

Nome Descrizione
AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Implementare per passare i dati in fase di esecuzione alle associazioni per supportare il comportamento personalizzato.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementa una modifica o un'estensione del client in un endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementa una modifica o un'estensione del servizio in un endpoint.

Validate(ServiceEndpoint)

Implementare per verificare che l'endpoint soddisfi alcuni criteri previsti.

Si applica a