다음을 통해 공유


OperationContractAttribute.IsOneWay 속성

정의

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

public:
 property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean

속성 값

Boolean

이 메서드가 요청 메시지를 수신하고 회신 메시지를 반환하지 않으면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다.

예제

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

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

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

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

설명

IsOneWay 속성을 사용하여 작업이 회신 메시지를 반환하지 않음을 나타냅니다. 이러한 유형의 작업은 알림 또는 이벤트 스타일 통신, 특히 양방향 통신에 유용합니다. 기본 응답 메시지를 기다리지 않고 단방향 작업의 호출자는 요청 메시지를 처리하는 동안 오류를 직접 검색할 수 없습니다. 신뢰할 수 있는 채널을 사용하는 서비스 애플리케이션 및 단방향 작업으로 채널 수준에서 메시지 배달 오류를 검색할 수 있습니다. 자세한 내용은 신뢰할 수 있는 세션 개요를 참조하세요.)

클라이언트와 서버가 서로 독립적으로 통신하는 이중(양방향) 서비스 기반 애플리케이션에서 클라이언트 채널은 해당 메서드에 IsOneWay 속성을 사용하여 서비스에서 클라이언트에 대하여 클라이언트가 이벤트로 처리할 수 있는 단방향 호출을 클라이언트에 대해 만들 수 있음을 나타낼 수 있습니다. 서비스에서 응답 메시지를 기대하지 않으므로 반환 호출 또는 메시지가 생성되지 않습니다.

속성이 IsOneWay (기본값)으로 false 설정된 경우 반환 void 하는 메서드도 회신 메시지를 생성합니다. 이 경우 인프라에서 빈 메시지를 만들고 전송하여 호출자에게 메서드가 반환되었음을 나타냅니다. (이 방법을 사용하면 인프라에서 SOAP 오류를 클라이언트로 다시 보낼 수 있습니다.) true 설정 IsOneWay 은 응답 메시지의 생성 및 디스패치를 취소하는 유일한 방법입니다.

단방향 메서드는 값을 반환하거나 매개 변수가 out 있으면 ref 안 되며, 그렇지 않으면 예외가 System.InvalidOperationException throw됩니다.

작업이 단방향 작업임을 지정하면 응답 메시지가 없음을 의미합니다. 연결할 수 없거나 아웃바운드 메시지가 매우 크거나 서비스가 인바운드 정보를 충분히 빨리 읽을 수 없는 경우 차단할 수 있습니다. 클라이언트에 비차단 호출이 필요한 경우 작업을 생성 AsyncPattern 합니다. 자세한 내용은 WCF 클라이언트를 사용하여 단방향 서비스 및 액세스 서비스를 참조하세요.

적용 대상