다음을 통해 공유


IOperationBehavior 인터페이스

정의

서비스 또는 클라이언트 애플리케이션에서 작업에 대한 런타임 동작을 확장하는 데 사용할 수 있는 메서드를 구현합니다.

public interface class IOperationBehavior
public interface IOperationBehavior
type IOperationBehavior = interface
Public Interface IOperationBehavior
파생

예제

다음 코드 예제에서는 작업에서 System.ServiceModel.Dispatcher.IParameterInspector 검사기를 호출할 때 콘솔에 쓰는 구현을 보여 줍니다. 이 사용자 지정은 해당 사용자 지정에 System.ServiceModel.Dispatcher.DispatchOperation System.ServiceModel.Dispatcher.ClientOperation 만 연결할 수 있으며, 따라서 일반적으로 작업 동작에 의해 삽입됩니다.

#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

다음 코드 예제에서는 작업 동작이 매개 변수 검사기를 런타임에 연결하는 방법을 보여줍니다.

#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

설명

클라이언트 또는 서버 애플리케이션에 대해 애플리케이션 수준에서 작업 차원 실행의 일부 측면을 수정, 검사 또는 확장하기 위한 IOperationBehavior 인터페이스를 구현합니다.

  • 메서드를 AddBindingParameters 사용하여 런타임에 사용자 지정 데이터를 전달하여 바인딩이 사용자 지정 동작을 지원할 수 있도록 합니다.

  • 클라이언트 애플리케이션에서 클라이언트 디스패처에 대한 확장을 수정, 검사 또는 삽입하려면 ApplyClientBehavior 메서드를 사용합니다.

  • 클라이언트 애플리케이션에서 작업 차원의 실행에 대한 확장을 수정, 검사 또는 삽입하려면 ApplyDispatchBehavior 메서드를 사용합니다.

  • 메서드를 Validate 사용하여 특정 요구 사항을 충족하는지 OperationDescription 확인합니다. 이는 작업에 특정 구성 설정을 사용하도록 설정하고 특정 기능 및 기타 요구 사항을 지원하는 데 사용할 수 있습니다.

IOperationBehavior 개체는 이러한 메서드 중 하나를 사용할 수 있지만 종종 하나만 중요합니다. 이러한 경우 사용되지 않는 메서드는 아무 작업도 수행하지 않고 반환할 수 있습니다.

참고

모든 메서드는 IOperationBehavior 개체를 OperationDescription 매개 변수로 전달합니다. 이 매개 변수는 검사 전용입니다. 개체를 OperationDescription 수정하면 실행 동작이 정의되지 않습니다.

IOperationBehavior 개체는 일반적으로 서비스 애플리케이션의 다양한 System.ServiceModel.Dispatcher.DispatchOperation 개체 속성과 클라이언트 애플리케이션의 다양한 System.ServiceModel.Dispatcher.ClientOperation 개체 속성을 액세스하는 데 사용됩니다.

일반적으로 개발자는 먼저 확장성 지점을 검토하여 애플리케이션 시나리오에 적합한 사용자 지정 옵션을 결정한 다음 해당 범위에서 사용자 지정을 구현합니다. 예를 들어 System.ServiceModel.Description.IServiceBehavior 개체는 전체 서비스의 모든 메시지에 대한 사용자 지정을 삽입할 수 있으며 System.ServiceModel.Description.IContractBehavior 개체는 특정 계약에서 모든 메시지에 대한 사용자 지정을 삽입할 수 있습니다. 사용 가능한 다양한 속성 및 사용자 지정에 대한 설명은 ServiceHost 및 서비스 모델 계층 확장을 참조하세요.

사용자 지정이 결정되고 필요한 IOperationBehavior 경우 사용자 지정 인터페이스가 구현되고 적절한 사용자 지정 범위가 되면 런타임에 작업 동작을 구현 IOperationBehavior 하고 추가하여 Windows Communication Foundation(WCF) 런타임에 사용자 지정을 삽입해야 합니다.

런타임에 추가하는 IOperationBehavior 방법에는 두 가지가 있습니다.

  • 서비스 애플리케이션의 서비스 호스트 또는 클라이언트 애플리케이션의 채널 팩터리를 열기 전에 OperationDescription.Behaviors 속성에 사용자 지정 작업 동작을 프로그래밍 방식으로 추가합니다.

  • 사용자 지정 특성을 사용하여 동작을 추가합니다.

의도한 IOperationBehavior 서비스 사용자 지정 작업을 수행하려면 메서드가 호출될 때 ICommunicationObject.Open 발생하는 서비스 런타임을 생성하기 전에 속성에 개체를 System.ServiceModel.ServiceHost추가 OperationDescription.Behaviors 해야 합니다. 클라이언트 사용자 지정 작업을 IOperationBehavior 수행하려면 메서드 또는 메서드를 호출하기 OperationDescription.Behaviors 전에 속성에 ChannelFactory<TChannel>개체를 ChannelFactory<TChannel>.CreateChannel ICommunicationObject.Open 추가해야 합니다.

작업 동작은 개별 작업의 범위에서 런타임에 쉽게 액세스할 수 있도록 설계되었지만 부모 런타임 개체에 액세스하여 더 큰 범위에서 런타임에 액세스할 수 있습니다.

메서드

AddBindingParameters(OperationDescription, BindingParameterCollection)

런타임에 바인딩에 데이터를 전달하여 사용자 지정 동작을 지원하려면 구현합니다.

ApplyClientBehavior(OperationDescription, ClientOperation)

작업에 대해 클라이언트의 수정이나 확장을 구현합니다.

ApplyDispatchBehavior(OperationDescription, DispatchOperation)

작업에 대해 서비스의 수정이나 확장을 구현합니다.

Validate(OperationDescription)

작업이 해당 조건을 충족하는지 확인하려면 구현합니다.

적용 대상