방법: 단방향 계약 만들기
이 항목에서는 단방향 계약을 사용하는 메서드를 만드는 기본 단계를 보여 줍니다. 이러한 메서드는 클라이언트에서 WCF(Windows Communication Foundation) 서비스에 대한 작업을 호출하지만 응답을 기대하지 않습니다. 이러한 형식의 계약은 예를 들어 여러 구독자에게 알림을 게시하는 데 사용될 수 있습니다. 또한 이중(양방향) 계약을 만들 때 단방향 계약을 사용할 수 있으며 이를 통해 클라이언트 및 서버가 각각 독립적으로 통신하므로 서로 호출을 시작할 수 있습니다. 특히 이 기능을 통해 서버는 클라이언트가 이벤트로 처리할 수 있는 클라이언트에 대한 단방향 호출을 만들 수 있습니다. 단방향 메서드 지정에 대한 자세한 내용은 IsOneWay 속성 및 OperationContractAttribute 클래스를 참조하십시오.
이중 계약을 위한 클라이언트 애플리케이션 만들기에 대한 자세한 내용은 방법: 단방향 및 요청-회신 계약으로 서비스 액세스를 참조하세요. 작동하는 샘플은 단방향 샘플을 참조하세요.
단방향 계약을 만들려면
ServiceContractAttribute 클래스를 서비스가 구현할 메서드를 정의하는 인터페이스에 적용하여 서비스 계약을 만듭니다.
OperationContractAttribute 클래스를 클라이언트가 호출할 수 있는 인터페이스의 메서드에 적용하여 해당 메서드를 나타냅니다.
출력이 없는 작업(반환 값이 없고 out 또는 ref 매개 변수가 없음)은 IsOneWay 속성을
true
로 설정하여 단방향으로 지정합니다. OperationContractAttribute 클래스가 있는 작업은 IsOneWay 속성이 기본적으로false
이기 때문에 기본적으로 요청-회신 계약을 충족합니다. 따라서 메서드에 대한 단방향 계약을 원하는 경우 특성 속성 값을 명시적으로true
로 지정해야 합니다.
예시
다음 코드 예제에서는 여러 단방향 메서드를 포함하는 서비스에 대한 계약을 정의합니다. 기본값이 요청-회신이며 결과를 반환하는 Equals
를 제외하고 모든 메서드에는 단방향 계약이 포함되어 있습니다.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
[OperationContract(IsOneWay=true)]
void Clear();
[OperationContract(IsOneWay = true)]
void AddTo(double n);
[OperationContract(IsOneWay = true)]
void SubtractFrom(double n);
[OperationContract(IsOneWay = true)]
void MultiplyBy(double n);
[OperationContract(IsOneWay = true)]
void DivideBy(double n);
[OperationContract]
double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession
<OperationContract(IsOneWay:=True)> _
Sub Clear()
<OperationContract(IsOneWay:=True)> _
Sub AddTo(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub SubtractFrom(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub MultiplyBy(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub DivideBy(ByVal n As Double)
<OperationContract()> _
Function Equal() As Double
End Interface