IEndpointBehavior Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Implementiert Methoden, die zum Erweitern des Laufzeitverhaltens für einen Endpunkt in einem Dienst oder einer Clientanwendung verwendet werden können.
public interface class IEndpointBehavior
public interface IEndpointBehavior
type IEndpointBehavior = interface
Public Interface IEndpointBehavior
- Abgeleitet
Beispiele
Das folgende Codebeispiel zeigt die Implementierung eines Endpunktverhaltens, das ein System.ServiceModel.Dispatcher.IDispatchMessageInspector Objekt in einer Dienstanwendung hinzufügt. In diesem Fall implementiert die EndpointBehaviorMessageInspector Klasse, um die eingehende und ausgehende Nachricht zu prüfen, die IEndpointBehavior Schnittstelle zum Einfügen der Inspektorklasse in das Inspektionssystem für alle Endpunkte, auf die das Verhalten angewendet wird, und das System.ServiceModel.Configuration.BehaviorExtensionElement Verhalten der Nachrichtenprüfung mithilfe einer Anwendungskonfigurationsdatei zu System.ServiceModel.Dispatcher.IDispatchMessageInspector aktivieren.
Der erste Schritt besteht darin, den Nachrichteninspektor zu implementieren.
// 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.");
}
Das nächste Codebeispiel zeigt die Verwendung der ApplyDispatchBehavior Methode zum Hinzufügen des Nachrichteninspektors DispatchRuntime.MessageInspectors zur Eigenschaft.
// 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;
}
Das folgende Codebeispiel zeigt die Implementierung, System.ServiceModel.Configuration.BehaviorExtensionElement um die Verwendung des Nachrichtenprüfungsverhaltens aus einer Konfigurationsdatei zu ermöglichen.
// 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 vorherige Beispiel aus der Konfiguration verwendet werden kann.
<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
Implementieren Sie die IEndpointBehavior Schnittstelle zum Ändern, Untersuchen oder Erweitern eines Aspekts der endpunktweiten Ausführung auf Anwendungsebene für Client- oder Dienstanwendungen.
Verwenden Sie die AddBindingParameters Methode, um benutzerdefinierte Daten zur Laufzeit zu übergeben, um Bindungen zur Unterstützung des benutzerdefinierten Verhaltens zu ermöglichen.
Verwenden Sie die ApplyClientBehavior Methode, um Erweiterungen an einen Endpunkt in einer Clientanwendung zu ändern, zu untersuchen oder einzufügen.
Verwenden Sie die ApplyDispatchBehavior Methode, um Erweiterungen für die endpunktweite Ausführung in einer Dienstanwendung zu ändern, zu untersuchen oder einzufügen.
Verwenden Sie die Validate Methode, um zu bestätigen, dass eine ServiceEndpoint bestimmte Anforderung erfüllt. Dies kann verwendet werden, um sicherzustellen, dass ein Endpunkt eine bestimmte Konfigurationseinstellung aktiviert hat, ein bestimmtes Feature und andere Anforderungen unterstützt.
IEndpointBehavior Objekte können jede dieser Methoden verwenden, aber häufig ist nur eine wichtig; in solchen Fällen können die nicht verwendeten Methoden zurückgeben und keine Aktion ausführen.
Hinweis
IEndpointBehavior Alle Methoden übergeben ein ServiceEndpoint Objekt als Parameter. Dieser Parameter ist nur zur Untersuchung vorgesehen; wenn Sie das Objekt ändern, ist das ServiceEndpoint Ausführungsverhalten nicht definiert.
IEndpointBehavior Objekte werden in der Regel verwendet, um auf die verschiedenen Eigenschaften von System.ServiceModel.Dispatcher.DispatchRuntime, System.ServiceModel.Dispatcher.DispatchOperation, System.ServiceModel.Dispatcher.EndpointDispatcherund System.ServiceModel.Dispatcher.ChannelDispatcher Objekten in einer Dienstanwendung und der System.ServiceModel.Dispatcher.ClientRuntime und System.ServiceModel.Dispatcher.ClientOperation in einer Clientanwendung zuzugreifen. Darüber hinaus können Sie auf die Eigenschaften von Duplexclients und -diensten über die ClientRuntime.CallbackDispatchRuntime jeweiligen DispatchRuntime.CallbackClientRuntime Eigenschaften zugreifen.
Eine Beschreibung der verschiedenen verfügbaren Eigenschaften und Anpassungen finden Sie unter "Erweitern von ServiceHost" und "Service Model Layer".
Sobald eine Anpassung entschieden wurde (und die Anpassungsschnittstelle bei Bedarf implementiert wurde) und die entscheidungsberechtigt ist, ist der IEndpointBehavior entsprechende Umfang der Anpassung, muss die Anpassung in die Windows Communication Foundation (WCF)-Laufzeit eingefügt werden, indem das Endpunktverhalten zur Laufzeit implementiert IEndpointBehavior und hinzugefügt wird.
Es gibt zwei Möglichkeiten, das Verhalten zur Laufzeit hinzuzufügen:
Fügen Sie programmgesteuert das benutzerdefinierte Endpunktverhalten der Behaviors Eigenschaft vor dem Öffnen des Diensthosts (in einer Dienstanwendung) oder der Kanalfactory (in einer Clientanwendung) hinzu.
Konfigurieren Sie das Verhalten mithilfe einer Anwendungskonfigurationsdatei. Ausführliche Informationen finden Sie unter <behaviorExtensions>.
Um die Aufgabe zum Anpassen des Diensts auszuführen, für die sie vorgesehen ist, muss das IEndpointBehavior Objekt vor der ServiceEndpoint.Behaviors Erstellung der Dienstlaufzeit der Eigenschaft hinzugefügt werden, die auftritt, wenn ICommunicationObject.Open die Methode aufgerufen System.ServiceModel.ServiceHostwird. Zum Ausführen einer Clientanpassungsaufgabe muss das IEndpointBehavior Objekt der ServiceEndpoint.Behaviors Eigenschaft hinzugefügt werden, bevor die ChannelFactory<TChannel>.CreateChannel Methode oder die Methode aufgerufen ChannelFactory<TChannel>wirdICommunicationObject.Open.
Methoden
| Name | Beschreibung |
|---|---|
| AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Implementieren, um Daten zur Laufzeit an Bindungen zu übergeben, um benutzerdefiniertes Verhalten zu unterstützen. |
| ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Implementiert eine Änderung oder Erweiterung des Clients über einen Endpunkt hinweg. |
| ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementiert eine Änderung oder Erweiterung des Diensts über einen Endpunkt hinweg. |
| Validate(ServiceEndpoint) |
Implementieren Sie die Implementierung, um zu bestätigen, dass der Endpunkt einige beabsichtigte Kriterien erfüllt. |