Udostępnij za pośrednictwem


IOperationBehavior Interfejs

Definicja

Implementuje metody, które mogą służyć do rozszerzania zachowania czasu wykonywania dla operacji w usłudze lub aplikacji klienckiej.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
Pochodne

Przykłady

Poniższy przykład kodu przedstawia implementację System.ServiceModel.Dispatcher.IParameterInspector tego zapisu w konsoli, gdy inspektor jest wywoływany w operacji. To dostosowanie można dołączyć tylko do System.ServiceModel.Dispatcher.DispatchOperation elementu lub System.ServiceModel.Dispatcher.ClientOperation i dlatego jest zwykle wstawiane przez zachowanie operacji.

#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

Poniższy przykład kodu pokazuje, jak zachowanie operacji dołącza inspektora parametrów do środowiska uruchomieniowego.

#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

Uwagi

Zaimplementuj interfejs, IOperationBehavior aby zmodyfikować, zbadać lub rozszerzyć pewien aspekt wykonywania w całej operacji na poziomie aplikacji dla aplikacji klienckich lub usług.

  • AddBindingParameters Użyj metody , aby przekazać dane niestandardowe w czasie wykonywania, aby umożliwić tworzenie powiązań w celu obsługi zachowania niestandardowego.

  • ApplyClientBehavior Użyj metody , aby zmodyfikować, zbadać lub wstawić rozszerzenia do dyspozytora klienta w aplikacji klienckiej.

  • ApplyDispatchBehavior Użyj metody , aby zmodyfikować, zbadać lub wstawić rozszerzenia do wykonywania w całej operacji w aplikacji usługi.

  • Validate Użyj metody , aby potwierdzić, że OperationDescription spełnia określone wymagania. Może to służyć do zapewnienia, że operacja ma włączone określone ustawienie konfiguracji, obsługuje określoną funkcję i inne wymagania.

IOperationBehavior obiekty mogą korzystać z dowolnej z tych metod, ale często tylko jedna z nich jest ważna; w takich przypadkach nieużywane metody mogą zwracać, nie wykonując żadnej akcji.

Uwaga

IOperationBehavior Wszystkie metody przekazują OperationDescription obiekt jako parametr. Ten parametr jest przeznaczony tylko do badania; jeśli zmodyfikujesz OperationDescription obiekt, zachowanie wykonywania jest niezdefiniowane.

IOperationBehavior Obiekty są zwykle używane do uzyskiwania dostępu do różnych właściwości System.ServiceModel.Dispatcher.DispatchOperation obiektu w aplikacji usługi i System.ServiceModel.Dispatcher.ClientOperation obiektu w aplikacji klienckiej.

Zazwyczaj deweloper najpierw przegląda punkty rozszerzalności, aby określić, która opcja dostosowywania odpowiada scenariuszowi aplikacji, a następnie implementuje dostosowanie w odpowiednim zakresie. Na przykład System.ServiceModel.Description.IServiceBehavior obiekty mogą wstawiać dostosowania dla wszystkich komunikatów w całej usłudze, a System.ServiceModel.Description.IContractBehavior obiekty mogą wstawiać dostosowania dla wszystkich komunikatów w określonym kontrakcie itd. Opis różnych dostępnych właściwości i dostosowań można znaleźć w temacie Extending ServiceHost and the Service Model Layer (Rozszerzanie elementu ServiceHost i warstwy modelu usług).

Po podjęciu decyzji o dostosowaniu (i zaimplementowaniu interfejsu dostosowywania w razie potrzeby) i IOperationBehavior odpowiednim zakresie dostosowywania należy wstawić dostosowanie do środowiska uruchomieniowego programu Windows Communication Foundation (WCF), implementując IOperationBehavior i dodając zachowanie operacji do środowiska uruchomieniowego.

Istnieją dwa sposoby dodawania elementu IOperationBehavior do środowiska uruchomieniowego:

  • Programowe dodawanie zachowania operacji niestandardowej do OperationDescription.Behaviors właściwości przed otwarciem hosta usługi (w aplikacji usługi) lub fabryki kanałów (w aplikacji klienckiej).

  • Dodaj zachowanie przy użyciu atrybutu niestandardowego.

Aby wykonać zadanie dostosowywania usługi, dla którego jest on przeznaczony, IOperationBehavior należy dodać obiekt do OperationDescription.Behaviors właściwości przed utworzeniem środowiska uruchomieniowego usługi, co ma miejsce, gdy ICommunicationObject.Open wywoływana jest metoda .System.ServiceModel.ServiceHost Aby wykonać zadanie dostosowywania klienta, IOperationBehavior przed wywołaniem ChannelFactory<TChannel>.CreateChannel metody lub ICommunicationObject.Open metody w ChannelFactory<TChannel>metodzie należy dodać obiekt do OperationDescription.Behaviors właściwości .

Chociaż zachowanie operacji jest przeznaczone do łatwego dostępu do środowiska uruchomieniowego w zakresie pojedynczej operacji, można uzyskać dostęp do środowiska uruchomieniowego w większym zakresie, korzystając z nadrzędnego obiektu środowiska uruchomieniowego.

Metody

AddBindingParameters(OperationDescription, BindingParameterCollection)

Zaimplementuj przekazywanie danych w czasie wykonywania do powiązań w celu obsługi zachowania niestandardowego.

ApplyClientBehavior(OperationDescription, ClientOperation)

Implementuje modyfikację lub rozszerzenie klienta w ramach operacji.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

Implementuje modyfikację lub rozszerzenie usługi w ramach operacji.

Validate(OperationDescription)

Zaimplementuj, aby potwierdzić, że operacja spełnia określone kryteria.

Dotyczy