IOperationBehavior Gränssnitt

Definition

Implementerar metoder som kan användas för att utöka körningsbeteendet för en åtgärd i antingen en tjänst eller ett klientprogram.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
Härledda

Exempel

I följande kodexempel visas en implementering av System.ServiceModel.Dispatcher.IParameterInspector skrivningar till konsolen när inspektören anropas för en åtgärd. Den här anpassningen System.ServiceModel.Dispatcher.DispatchOperation kan bara kopplas till eller System.ServiceModel.Dispatcher.ClientOperation och infogas därför vanligtvis av ett åtgärdsbeteende.

#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

I följande kodexempel visas hur åtgärdsbeteendet kopplar parameterkontrollen till körningen.

#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

Kommentarer

IOperationBehavior Implementera gränssnittet för att ändra, undersöka eller utöka någon aspekt av körning i hela driften på programnivå för klient- eller tjänstprogram.

  • AddBindingParameters Använd metoden för att skicka anpassade data vid körning för att aktivera bindningar för att stödja anpassat beteende.

  • ApplyClientBehavior Använd metoden för att ändra, undersöka eller infoga tillägg till en klientutskickare i ett klientprogram.

  • ApplyDispatchBehavior Använd metoden för att ändra, undersöka eller infoga tillägg för körning i hela driften i ett tjänstprogram.

  • Validate Använd metoden för att bekräfta att en OperationDescription uppfyller specifika krav. Detta kan användas för att säkerställa att en åtgärd har en viss konfigurationsinställning aktiverad, stöder en viss funktion och andra krav.

IOperationBehavior objekt kan använda någon av dessa metoder, men ofta är bara en viktig; I sådana fall kan de oanvända metoderna returnera och inte utföra någon åtgärd.

Note

IOperationBehavior Alla metoder skickar ett OperationDescription objekt som en parameter. Den här parametern är endast avsedd för undersökning. om du ändrar OperationDescription objektet är körningsbeteendet odefinierat.

IOperationBehavior objekt används vanligtvis för att komma åt de olika egenskaperna för System.ServiceModel.Dispatcher.DispatchOperation objektet i ett tjänstprogram och System.ServiceModel.Dispatcher.ClientOperation objektet i ett klientprogram.

Vanligtvis granskar utvecklaren först utökningspunkterna för att avgöra vilket anpassningsalternativ som passar programscenariot och implementerar sedan anpassningen i lämpligt omfång. Objekt kan till exempel System.ServiceModel.Description.IServiceBehavior infoga anpassningar för alla meddelanden i en hel tjänst och System.ServiceModel.Description.IContractBehavior objekt kan infoga anpassningar för alla meddelanden i ett visst kontrakt och så vidare. En beskrivning av de olika egenskaper och anpassningar som är tillgängliga finns i Utöka ServiceHost och Service Model Layer.

När en anpassning har beslutats (och anpassningsgränssnittet implementerats om det behövs) och IOperationBehavior är lämpligt omfång för anpassning, måste anpassningen infogas i Windows Communication Foundation -körningen (WCF) genom att implementera IOperationBehavior och lägga till åtgärdsbeteendet i körningen.

Det finns två sätt att lägga IOperationBehavior till i körningen:

  • Lägg programmatiskt till beteendet för anpassad åtgärd i OperationDescription.Behaviors egenskapen innan tjänstvärden öppnas (i ett tjänstprogram) eller kanalfabriken (i ett klientprogram).

  • Lägg till beteendet med ett anpassat attribut.

För att kunna utföra den tjänstanpassningsuppgift som det är avsett IOperationBehavior för måste objektet läggas till i OperationDescription.Behaviors egenskapen innan servicekörningen byggs, vilket inträffar när ICommunicationObject.Open metoden anropas på System.ServiceModel.ServiceHost. Om du vill utföra en klientanpassningsaktivitet IOperationBehavior måste objektet läggas till i OperationDescription.Behaviors egenskapen innan metoden eller metoden anropas ChannelFactory<TChannel>.CreateChannelICommunicationObject.OpenChannelFactory<TChannel>.

Även om åtgärdsbeteendet är utformat för enkel åtkomst till körningen i omfånget för en enskild åtgärd, kan du komma åt körningen i ett större omfång genom att komma åt det överordnade körningsobjektet.

Metoder

Name Description
AddBindingParameters(OperationDescription, BindingParameterCollection)

Implementera för att skicka data vid körning till bindningar för att stödja anpassat beteende.

ApplyClientBehavior(OperationDescription, ClientOperation)

Implementerar en ändring eller ett tillägg av klienten i en åtgärd.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementerar en ändring eller ett tillägg av tjänsten i en åtgärd.

Validate(OperationDescription)

Implementera för att bekräfta att åtgärden uppfyller vissa avsedda kriterier.

Gäller för