IEndpointBehavior Schnittstelle

Definition

Implementiert Methoden, die verwendet werden können, um das Laufzeitverhalten eines Endpunkts in einer Dienst- oder Clientanwendung zu erweitern.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
Abgeleitet

Beispiele

Im folgenden Codebeispiel wird eine Implementierung eines Endpunktverhaltens gezeigt, mit der ein System.ServiceModel.Dispatcher.IDispatchMessageInspector-Objekt in eine Dienstanwendung einfügt wird.The following code example shows the implementation of an endpoint behavior that adds an System.ServiceModel.Dispatcher.IDispatchMessageInspector object in a service application. In diesem Beispiel implementiert die EndpointBehaviorMessageInspector-Klasse System.ServiceModel.Dispatcher.IDispatchMessageInspector, um die eingehende und ausgehende Nachricht zu prüfen, außerdem die IEndpointBehavior-Schnittstelle, um die Inspektorklasse in das Inspektionssystem für alle Endpunkte einzufügen, für die das Verhalten gilt, und das System.ServiceModel.Configuration.BehaviorExtensionElement, um das Nachrichteninspektorverhalten mithilfe einer Anwendungskonfigurationsdatei zu aktivieren.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.

Der erste Schritt ist die Implementierung des Nachrichteninspektors.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.");
}

Im folgenden Codebeispiel wird die Verwendung der ApplyDispatchBehavior-Methode zum Hinzufügen des Nachrichteninspektors zur DispatchRuntime.MessageInspectors-Eigenschaft veranschaulicht.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;
}

Im folgenden Codebeispiel wird eine Implementierung von System.ServiceModel.Configuration.BehaviorExtensionElement gezeigt, mit der die Verwendung des Nachrichteninspektorverhaltens anhand einer Konfigurationsdatei ermöglicht wird.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();
}

Schließlich zeigt die folgende Konfigurationsdatei, wie das vorangehende Beispiel in der Konfiguration verwendet werden kann.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>

Hinweise

Implementiert die IEndpointBehavior-Schnittstelle, um Aspekte der Endpunkt-weiten Ausführung auf Anwendungsebene für Client- oder Dienstanwendungen zu ändern, zu überprüfen oder zu erweitern.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.

  • Verwenden Sie die AddBindingParameters-Methode, um benutzerdefinierte Daten zur Laufzeit zu übergeben, die bewirken, dass Bindungen benutzerdefiniertes Verhalten unterstützen.Use the AddBindingParameters method to pass custom data at runtime to enable bindings to support custom behavior.

  • Verwenden Sie die ApplyClientBehavior-Methode, um in einer Clientanwendung Erweiterungen eines Endpunkts zu ändern, zu überprüfen oder ihm Erweiterungen hinzuzufügen.Use the ApplyClientBehavior method to modify, examine, or insert extensions to an endpoint in a client application.

  • Verwenden Sie die ApplyDispatchBehavior-Methode, um in einer Dienstanwendung Erweiterungen einer Endpunkt-weiten Ausführung zu ändern, zu überprüfen oder ihr hinzuzufügen.Use the ApplyDispatchBehavior method to modify, examine, or insert extensions to endpoint-wide execution in a service application.

  • Verwenden Sie die Validate-Methode, um zu prüfen, ob ServiceEndpoint bestimmte Anforderungen erfüllt.Use the Validate method to confirm that a ServiceEndpoint meets specific requirements. Dies kann zur Prüfung verwendet werden, ob für einen Endpunkt eine bestimmte Konfigurationseinstellung aktiviert wurde und ob er bestimmte Funktionen und andere Anforderungen unterstützt.This can be used to ensure that an endpoint has a certain configuration setting enabled, supports a particular feature and other requirements.

IEndpointBehavior-Objekte können jede dieser Methoden nutzen, jedoch ist häufig nur eine Methode von Bedeutung; in einem solchen Fall geben die nicht verwendeten Methoden Werte ohne Durchführung einer Aktion zurück.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.

Hinweis

Alle IEndpointBehavior-Methoden übergeben ein ServiceEndpoint-Objekt als Parameter.All of the IEndpointBehavior methods pass a ServiceEndpoint object as a parameter. Dieser Parameter dient nur für die Prüfung; wenn Sie das ServiceEndpoint-Objekt ändern, ist das Ausführungsverhalten nicht definiert.This parameter is for examination only; if you modify the ServiceEndpoint object the execution behavior is undefined.

IEndpointBehavior-Objekte werden in der Regel verwendet, um auf die verschiedenen Eigenschaften der Objekte System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcher und System.ServiceModel.Dispatcher.ChannelDispatcher in einer Dienstanwendung und System.ServiceModel.Dispatcher.ClientRuntime und System.ServiceModel.Dispatcher.ClientOperation in einer Clientanwendung zuzugreifen.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. Außerdem können Sie auf die Eigenschaften von Duplexclients und -diensten mithilfe der ClientRuntime.CallbackDispatchRuntime-Eigenschaft bzw. der DispatchRuntime.CallbackClientRuntime-Eigenschaft zugreifen.In addition, you can access the properties of duplex clients and services using the ClientRuntime.CallbackDispatchRuntime and DispatchRuntime.CallbackClientRuntime properties, respectively.

Eine Beschreibung der verschiedenen verfügbaren Eigenschaften und Anpassungen finden Sie unter Erweitern von Service Host und der Dienstmodell Ebene.For a description of the various properties and customizations available, see Extending ServiceHost and the Service Model Layer.

Nachdem eine Anpassung festgelegt wurde (und die Anpassungs Schnittstelle bei Bedarf implementiert wurde) und die IEndpointBehavior entschieden wurde, ist der geeignete Anpassungsbereich. die Anpassung muss in die Windows Communication Foundation (WCF) eingefügt werden. Runtime durch Implementieren von IEndpointBehavior und Hinzufügen des Endpunkt Verhaltens zur Laufzeit.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.

Es gibt zwei Möglichkeiten, das Verhalten der Laufzeit hinzuzufügen:There are two ways to add the behavior to the runtime:

  • Fügen Sie das benutzerdefinierte Endpunktverhalten den Behaviors-Eigenschaften vor dem Öffnen des Diensthosts (in einer Dienstanwendung) bzw. der Kanalfactory (in einer Clientanwendung) hinzu.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).

  • Konfigurieren Sie das Verhalten mithilfe einer Anwendungskonfigurationsdatei.Configure the behavior using an application configuration file. Weitere Informationen finden Sie unter <verhaltextensions @ no__t-2.For details, see <behaviorExtensions>.

Um eine Dienstanpassungsaufgabe auszuführen, muss das entsprechende IEndpointBehavior-Objekt der ServiceEndpoint.Behaviors-Eigenschaft vor der Erstellung der Dienstlaufzeit hinzugefügt werden, was erfolgt, wenn die ICommunicationObject.Open-Methode für System.ServiceModel.ServiceHost aufgerufen wird.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. Um eine Clientanpassungsaufgabe auszuführen, muss das IEndpointBehavior-Objekt der ServiceEndpoint.Behaviors-Eigenschaft hinzugefügt werden, bevor die ChannelFactory<TChannel>.CreateChannel-Methode bzw. die ICommunicationObject.Open-Methode für ChannelFactory<TChannel> aufgerufen wird.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>.

Methoden

AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Wird implementiert, um Daten zur Laufzeit an Bindungen zu übergeben und damit benutzerdefiniertes Verhalten zu unterstützen.Implement to pass data at runtime to bindings to support custom behavior.

ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementiert eine Änderung oder Erweiterung des Clients in einem Endpunkt.Implements a modification or extension of the client across an endpoint.

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementiert eine Änderung oder eine Erweiterung des Diensts in einem Endpunkt.Implements a modification or extension of the service across an endpoint.

Validate(ServiceEndpoint)

Implementieren Sie dies, um zu prüfen, ob der Endpunkt bestimmte Kriterien erfüllt.Implement to confirm that the endpoint meets some intended criteria.

Gilt für: