IOperationBehavior 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 Vorgang in einem Dienst oder einer Clientanwendung verwendet werden können.
public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
- Abgeleitet
Beispiele
Das folgende Codebeispiel zeigt eine Implementierung, die System.ServiceModel.Dispatcher.IParameterInspector in die Konsole schreibt, wenn der Inspektor für einen Vorgang aufgerufen wird. Diese Anpassung kann nur an das Oder oder System.ServiceModel.Dispatcher.ClientOperation angefügt werden und wird daher in der System.ServiceModel.Dispatcher.DispatchOperation Regel durch ein Vorgangsverhalten eingefügt.
#region IParameterInspector Members
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Console.WriteLine(
"IParameterInspector.AfterCall called for {0} with return value {1}.",
operationName,
returnValue.ToString()
);
}
public object BeforeCall(string operationName, object[] inputs)
{
Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName);
return null;
}
#Region "IParameterInspector Members"
Public Sub AfterCall(ByVal operationName As String, ByVal outputs() As Object, ByVal returnValue As Object, _
ByVal correlationState As Object) Implements IParameterInspector.AfterCall
Console.WriteLine("IParameterInspector.AfterCall called for {0} with return value {1}.", _
operationName, returnValue.ToString())
End Sub
Public Function BeforeCall(ByVal operationName As String, ByVal inputs() As Object) As Object Implements _
IParameterInspector.BeforeCall
Console.WriteLine("IParameterInspector.BeforeCall called for {0}.", operationName)
Return Nothing
End Function
Das folgende Codebeispiel zeigt, wie das Vorgangsverhalten den Parameterinspektor an die Laufzeit anfügt.
#region IOperationBehavior Members
public void AddBindingParameters(
OperationDescription operationDescription, BindingParameterCollection bindingParameters
)
{ return; }
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
{
clientOperation.ParameterInspectors.Add(new Inspector());
}
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
dispatchOperation.ParameterInspectors.Add(new Inspector());
}
public void Validate(OperationDescription operationDescription){ return; }
#Region "IOperationBehavior Members"
Public Sub AddBindingParameters(ByVal operationDescription As OperationDescription, _
ByVal bindingParameters As BindingParameterCollection) Implements _
IOperationBehavior.AddBindingParameters
Return
End Sub
Public Sub ApplyClientBehavior(ByVal operationDescription As OperationDescription, ByVal _
clientOperation As ClientOperation) Implements IOperationBehavior.ApplyClientBehavior
clientOperation.ParameterInspectors.Add(New Inspector())
End Sub
Public Sub ApplyDispatchBehavior(ByVal operationDescription As OperationDescription, ByVal dispatchOperation As _
DispatchOperation) Implements IOperationBehavior.ApplyDispatchBehavior
dispatchOperation.ParameterInspectors.Add(New Inspector())
End Sub
Public Sub Validate(ByVal operationDescription As OperationDescription) Implements IOperationBehavior.Validate
Return
End Sub
Hinweise
Implementieren Sie die IOperationBehavior Schnittstelle zum Ändern, Untersuchen oder Erweitern eines Aspekts der betriebsweiten 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 in einer Clientanwendung zu ändern, zu untersuchen oder einzufügen.
Verwenden Sie die Methode, um Erweiterungen für die ApplyDispatchBehavior betriebsweite Ausführung in einer Dienstanwendung zu ändern, zu untersuchen oder einzufügen.
Verwenden Sie die Validate Methode, um zu bestätigen, dass eine OperationDescription bestimmte Anforderung erfüllt. Dies kann verwendet werden, um sicherzustellen, dass ein Vorgang eine bestimmte Konfigurationseinstellung aktiviert hat, ein bestimmtes Feature und andere Anforderungen unterstützt.
IOperationBehavior 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
IOperationBehavior Alle Methoden übergeben ein OperationDescription Objekt als Parameter. Dieser Parameter ist nur zur Untersuchung vorgesehen; wenn Sie das Objekt ändern, ist das OperationDescription Ausführungsverhalten nicht definiert.
IOperationBehavior Objekte werden in der Regel verwendet, um auf die verschiedenen Eigenschaften des System.ServiceModel.Dispatcher.DispatchOperation Objekts in einer Dienstanwendung und auf das System.ServiceModel.Dispatcher.ClientOperation Objekt in einer Clientanwendung zuzugreifen.
In der Regel überprüft der Entwickler zuerst die Erweiterbarkeitspunkte, um zu bestimmen, welche Anpassungsoption für das Anwendungsszenario geeignet ist, und implementiert dann die Anpassung auf dem entsprechenden Bereich. Beispielsweise System.ServiceModel.Description.IServiceBehavior können Objekte Anpassungen für alle Nachrichten in einem gesamten Dienst einfügen, und System.ServiceModel.Description.IContractBehavior Objekte können Anpassungen für alle Nachrichten in einem bestimmten Vertrag usw. einfügen. 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 der IOperationBehavior entsprechende Umfang der Anpassung ist, muss die Anpassung in die Windows Communication Foundation (WCF)-Laufzeit eingefügt werden, indem das Betriebsverhalten zur Laufzeit implementiert IOperationBehavior und hinzugefügt wird.
Es gibt zwei Möglichkeiten, die IOperationBehavior Laufzeit hinzuzufügen:
Fügen Sie programmgesteuert das verhalten des benutzerdefinierten Vorgangs vor OperationDescription.Behaviors dem Öffnen des Diensthosts (in einer Dienstanwendung) oder der Kanalfactory (in einer Clientanwendung) zur Eigenschaft hinzu.
Fügen Sie das Verhalten mithilfe eines benutzerdefinierten Attributs hinzu.
Um die Aufgabe zum Anpassen des Diensts auszuführen, für die sie vorgesehen ist, muss das IOperationBehavior Objekt vor der OperationDescription.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 IOperationBehavior Objekt der OperationDescription.Behaviors Eigenschaft hinzugefügt werden, bevor die ChannelFactory<TChannel>.CreateChannel Methode oder die Methode aufgerufen ChannelFactory<TChannel>wirdICommunicationObject.Open.
Obwohl das Vorgangsverhalten für den einfachen Zugriff auf die Laufzeit im Bereich eines einzelnen Vorgangs konzipiert ist, können Sie auf die Laufzeit in einem größeren Bereich zugreifen, indem Sie auf das übergeordnete Laufzeitobjekt zugreifen.
Methoden
| Name | Beschreibung |
|---|---|
| AddBindingParameters(OperationDescription, BindingParameterCollection) |
Implementieren, um Daten zur Laufzeit an Bindungen zu übergeben, um benutzerdefiniertes Verhalten zu unterstützen. |
| ApplyClientBehavior(OperationDescription, ClientOperation) |
Implementiert eine Änderung oder Erweiterung des Clients über einen Vorgang hinweg. |
| ApplyDispatchBehavior(OperationDescription, DispatchOperation) |
Implementiert eine Änderung oder Erweiterung des Diensts über einen Vorgang hinweg. |
| Validate(OperationDescription) |
Implementieren Sie die Implementierung, um zu bestätigen, dass der Vorgang einige beabsichtigte Kriterien erfüllt. |