Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IEndpointBehavior-Schnittstelle

 

Veröffentlicht: Oktober 2016

Implementiert Methoden, die verwendet werden können, um das Laufzeitverhalten eines Endpunkts in einer Dienst- oder Clientanwendung zu erweitern.

Namespace:   System.ServiceModel.Description
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public interface IEndpointBehavior

NameBeschreibung
System_CAPS_pubmethodAddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Wird implementiert, um Daten zur Laufzeit an Bindungen zu übergeben und damit benutzerdefiniertes Verhalten zu unterstützen.

System_CAPS_pubmethodApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Implementiert eine Änderung oder Erweiterung des Clients in einem Endpunkt.

System_CAPS_pubmethodApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implementiert eine Änderung oder eine Erweiterung des Diensts in einem Endpunkt.

System_CAPS_pubmethodValidate(ServiceEndpoint)

Implementieren Sie dies, um zu prüfen, ob der Endpunkt bestimmte Kriterien erfüllt.

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.

  • Verwenden Sie die AddBindingParameters-Methode, um benutzerdefinierte Daten zur Laufzeit zu übergeben, die bewirken, dass Bindungen benutzerdefiniertes Verhalten unterstützen.

  • Verwenden Sie die ApplyClientBehavior-Methode, um in einer Clientanwendung Erweiterungen eines Endpunkts zu ändern, zu überprüfen oder ihm Erweiterungen hinzuzufügen.

  • Verwenden Sie die ApplyDispatchBehavior-Methode, um in einer Dienstanwendung Erweiterungen einer Endpunkt-weiten Ausführung zu ändern, zu überprüfen oder ihr hinzuzufügen.

  • Verwenden Sie die Validate-Methode, um zu prüfen, ob ServiceEndpoint bestimmte Anforderungen erfüllt. 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.

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.

System_CAPS_noteHinweis

Alle IEndpointBehavior-Methoden übergeben ein ServiceEndpoint-Objekt als Parameter. Dieser Parameter dient nur für die Prüfung; wenn Sie das ServiceEndpoint-Objekt ändern, ist das Ausführungsverhalten nicht definiert.

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. Außerdem können Sie auf die Eigenschaften von Duplexclients und -diensten mithilfe der ClientRuntime.CallbackDispatchRuntime-Eigenschaft bzw. der DispatchRuntime.CallbackClientRuntime-Eigenschaft zugreifen.

Eine Beschreibung der verschiedenen Eigenschaften und verfügbaren Anpassungen finden Sie unter Erweitern von ServiceHost und der Dienstmodellebene.

Nachdem über eine Anpassung entschieden wurde (und die Anpassungsschnittstelle falls notwendig implementiert wurde) und festgelegt wurde, dass IEndpointBehavior der geeignete Bereich für die Anpassung ist, muss die Anpassung in die Windows Communication Foundation (WCF)-Laufzeit durch Implementierung von IEndpointBehavior und Hinzufügen des Endpunktverhaltens eingefügt werden.

Es gibt zwei Möglichkeiten, das Verhalten der Laufzeit hinzuzufügen:

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

  • Konfigurieren Sie das Verhalten mithilfe einer Anwendungskonfigurationsdatei. Ausführliche Informationen finden Sie unter <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. 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.

Im folgenden Codebeispiel wird eine Implementierung eines Endpunktverhaltens gezeigt, mit der ein System.ServiceModel.Dispatcher.IDispatchMessageInspector-Objekt in eine Dienstanwendung einfügt wird. 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.

Der erste Schritt ist die Implementierung des Nachrichteninspektors.

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

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

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

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 4.0
Zurück zum Anfang
Anzeigen: