OperationContractAttribute 클래스

정의

메서드가 WCF(Windows Communication Foundation) 애플리케이션에서 서비스 계약의 일부인 작업을 정의함을 나타냅니다.

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
상속
OperationContractAttribute
특성

예제

다음 코드 예제에서는 하나의 작업이 있는 간단한 서비스 계약을 보여 집니다.

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
      return "The service greets you: " + msg;
  }

  #endregion
  }
}
Imports System.Net.Security
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="Microsoft.WCF.Documentation")> _
  Public Interface ISampleService
    ' This operation specifies an explicit protection level requirement.
    <OperationContract(ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Called with: {0}", msg)
       Return "The service greets you: " & msg
  End Function

  #End Region
  End Class
End Namespace

다음 예제는 세 가지 작업을 지정하는 암시적 서비스 계약을 구현하는 서비스입니다. 두 가지 작업은 반환 값에 관계없이 기본 응답 메시지를 호출자에게 반환하는 양방향 작업입니다. 세 번째 작업은 기본 인바운드 메시지인 호출을 수신하지만 기본 응답 메시지를 반환하지 않습니다.

[ServiceContractAttribute]  
public class OneAndTwoWay  
{  
  // The client waits until a response message appears.  
  [OperationContractAttribute]  
  public int MethodOne (int x, out int y)  
  {  
    y = 34;  
    return 0;  
  }  

  // The client waits until an empty response message appears.  
  [OperationContractAttribute]  
  public void MethodTwo (int x)  
  {  
    return;  
  }  

  // The client returns as soon as an outbound message  
  // is dispatched to the service; no response  
  // message is generated or sent from the service.  
  [OperationContractAttribute(IsOneWay=true)]  
  public void MethodThree (int x)  
  {  
    return;  
  }  
}  

설명

메서드에 OperationContractAttribute 적용하여 메서드가 서비스 계약의 일부로 서비스 작업을 구현함을 나타냅니다(특성으로 ServiceContractAttribute 지정됨).

OperationContractAttribute 속성을 사용하여 작업의 구조와 메타데이터에 표현된 값을 제어합니다.

  • 이 속성은 Action 이 작업을 고유하게 식별하는 작업을 지정합니다. WCF는 해당 작업에 따라 메서드에 요청 메시지를 디스패치합니다.

  • 이 속성은 AsyncPattern 작업이 구현되었거나 Begin/End 메서드 쌍을 사용하여 비동기적으로 호출될 수 있음을 나타냅니다.

  • 속성이 HasProtectionLevel 명시적으로 설정되었는지 여부를 ProtectionLevel 나타냅니다.

  • 이 속성은 IsOneWay 작업이 단일 입력 메시지로만 구성되었음을 나타냅니다. 작업에 연결된 출력 메시지가 없습니다.

  • 이 속성은 IsInitiating 이 작업이 세션의 초기 작업이 될 수 있는지 여부를 지정합니다.

  • 이 속성은 IsTerminating 작업이 완료된 후 WCF가 현재 세션을 종료하려고 하는지 여부를 지정합니다.

  • 이 속성은 ProtectionLevel 런타임에 작업에 필요한 메시지 수준 보안을 지정합니다.

  • 이 속성은 ReplyAction 작업에 대한 회신 메시지의 동작을 지정합니다.

이 특성은 OperationContractAttribute 메서드가 서비스 계약의 작업임을 선언합니다. 특성이 있는 OperationContractAttribute 메서드만 서비스 작업으로 노출됩니다. 표시된 메서드 OperationContractAttribute 가 없는 서비스 계약은 작업을 노출하지 않습니다.

이 속성은 AsyncPattern 한 쌍과 End``Begin<methodName><methodName> 메서드가 비동기적으로 구현된 단일 작업(클라이언트 또는 서비스)을 형성한다는 것을 나타냅니다. 비동기적으로 작업을 구현하는 서비스의 기능은 서비스 구현 세부 정보이며 메타데이터(예: WSDL(웹 서비스 설명 언어))에 노출되지 않습니다.

마찬가지로 클라이언트는 서비스 메서드가 구현되는 방식과 관계없이 비동기적으로 작업을 호출하도록 선택할 수 있습니다. 서비스 메서드가 다소 시간이 걸리지만 클라이언트에 직접 정보를 반환해야 하는 경우 클라이언트에서 서비스 작업을 비동기적으로 호출하는 것이 좋습니다. 자세한 내용은 AsyncPattern를 참조하십시오.

이 속성은 IsOneWay 메서드가 빈 기본 응답 메시지를 포함하여 값을 전혀 반환하지 않음을 나타냅니다. 이 유형의 메서드는 알림 또는 이벤트 스타일 통신에 유용합니다. 이러한 종류의 메서드는 회신 메시지를 반환할 수 없으므로 메서드의 선언이 반환 void되어야 합니다.

중요

이 특성의 정보 저장소를 프로그래밍 방식으로 검색하는 경우 리플렉션 대신 클래스를 ContractDescription 사용합니다.

참고

속성이 IsOneWay (기본값)로 false설정된 경우 반환 void 하는 메서드도 기본 메시지 수준에서 양방향 메서드입니다. 이 경우 인프라에서 빈 메시지를 만들고 전송하여 호출자에게 메서드가 반환되었음을 나타냅니다. 이 방법을 사용하면 애플리케이션 및 인프라에서 SOAP 오류와 같은 오류 정보를 다시 클라이언트로 보낼 수 있습니다. true 설정 IsOneWay 은 회신 메시지를 만들고 디스패치하는 것을 방지하는 유일한 방법입니다. 자세한 내용은 단방향 서비스를 참조하세요.

Action ReplyAction 속성을 사용하여 SOAP 메시지의 기본 동작을 수정할 뿐만 아니라 인식할 수 없는 메시지에 대한 처리기를 만들거나 직접 메시지 프로그래밍에 대한 작업 추가를 사용하지 않도록 설정할 수 있습니다. 클라이언트가 IsInitiating 다른 작업 전에 특정 서비스 작업을 호출하지 못하도록 하려면 이 속성을 사용합니다. 클라이언트가 IsTerminating 특정 서비스 작업을 호출한 후 WCF가 채널을 닫도록 하려면 이 속성을 사용합니다. 자세한 내용은 세션 사용을 참조하세요.

ProtectionLevel 속성을 사용하면 작업 메시지를 서명, 암호화 또는 서명 및 암호화할지 여부를 작업 계약에 지정할 수 있습니다. 바인딩이 계약에 필요한 보안 수준을 제공할 수 없는 경우 런타임에 예외가 throw됩니다. 자세한 내용은 보호 수준 및 이해를 참조 ProtectionLevel 하세요.

생성자

OperationContractAttribute()

OperationContractAttribute 클래스의 새 인스턴스를 초기화합니다.

속성

Action

요청 메시지의 WS-Addressing 동작을 가져오거나 설정합니다.

AsyncPattern

서비스 계약의 Begin<methodName> 및 End<methodName> 메서드 쌍을 사용하여 작업이 비동기적으로 구현됨을 나타냅니다.

HasProtectionLevel

이 작업의 메시지에 대해 암호화, 서명 또는 둘 모두를 수행해야 할지 나타내는 값을 가져옵니다.

IsInitiating

메서드가 서버의 세션(있는 경우)을 시작할 수 있는 작업을 구현할지 여부를 나타내는 값을 가져오거나 설정합니다.

IsOneWay

작업이 회신 메시지를 반환하는지 여부를 나타내는 값을 가져오거나 설정합니다.

IsTerminating

회신 메시지(있는 경우)를 보낸 후 서비스 작업의 결과로 서버에서 세션을 종료할지 여부를 나타내는 값을 가져오거나 설정합니다.

Name

작업의 이름을 가져오거나 설정합니다.

ProtectionLevel

작업의 메시지에 대해 암호화, 서명 또는 둘 모두를 수행해야 할지 지정하는 값을 가져오거나 설정합니다.

ReplyAction

작업의 회신 메시지에 대한 SOAP 동작 값을 가져오거나 설정합니다.

TypeId

파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다.

(다음에서 상속됨 Attribute)

메서드

Equals(Object)

이 인스턴스가 지정된 개체와 같은지를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

(다음에서 상속됨 Attribute)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
IsDefaultAttribute()

파생 클래스에서 재정의된 경우 이 인스턴스 값이 파생 클래스에 대한 기본값인지 여부를 표시합니다.

(다음에서 상속됨 Attribute)
Match(Object)

파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다.

(다음에서 상속됨 Attribute)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다.

(다음에서 상속됨 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1).

(다음에서 상속됨 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다.

(다음에서 상속됨 Attribute)

적용 대상