기본 샘플에서는 서비스 동작 설정을 구성하는 방법을 보여 줍니다. 샘플은 Getting Started에 기반하며, ICalculator
서비스 계약을 구현합니다. 이 샘플은 ServiceBehaviorAttribute 및 OperationBehaviorAttribute 속성을 사용하여 서비스 및 작업 동작을 명시적으로 정의합니다. 구성 파일 또는 명령적으로 코드에서 동작을 구성할 수 있습니다(이 샘플에서 보여 주듯이).
이 샘플에서 클라이언트는 콘솔 애플리케이션(.exe)이며 서비스는 IIS(인터넷 정보 서비스)에서 호스팅됩니다.
비고
이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.
서비스 클래스는 다음 코드 샘플에서 ServiceBehaviorAttribute 및 OperationBehaviorAttribute과 함께 동작을 지정합니다. 지정된 모든 값이 기본값입니다.
[ServiceBehavior(
AutomaticSessionShutdown=true,
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
IncludeExceptionDetailInFaults=false,
UseSynchronizationContext=true,
ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
[OperationBehavior(
TransactionAutoComplete=true,
TransactionScopeRequired=false,
Impersonation=ImpersonationOption.NotAllowed)]
public double Add(double n1, double n2)
{
System.Threading.Thread.Sleep(1600);
return n1 + n2;
}
...
}
서비스 동작은 ServiceBehaviorAttribute 특성으로 지정됩니다. 다음 표에서는 이러한 동작 중 일부에 대해 설명합니다.
서비스 동작 | 설명 |
---|---|
AutomaticSessionShutdown | 클라이언트의 요청에 따라 세션을 자동으로 종료합니다. |
ConcurrencyMode | 각 서비스 인스턴스에 대한 동시성 모드를 지정합니다. |
InstanceContextMode | 인스턴스 컨텍스트 모드를 지정합니다. |
UseSynchronizationContext | 제공된 동기화 컨텍스트를 사용할지 여부를 결정합니다(설정된 경우). Windows Forms 애플리케이션에서 사용할 WindowsFormsSynchronizationContext 지 여부를 제어하려는 경우 이를 사용합니다. |
IncludeExceptionDetailInFaults | 일반 처리되지 않은 실행 예외를 변환하여 오류 메시지로 Fault<string> 보낼지 여부를 결정합니다. |
TransactionIsolationLevel | 트랜잭션의 격리 수준을 지정합니다. |
ValidateMustUnderstand | 예기치 않은 메시지 헤더로 인해 오류 조건이 발생하는지 여부를 확인합니다. |
작업 동작은 OperationBehaviorAttribute 특성을 사용하여 지정하는 데 사용됩니다. 다음 표에서는 이러한 동작 중 일부에 대해 설명합니다.
작업 동작 | 설명 |
---|---|
TransactionAutoComplete | 서비스 작업 완료가 현재 트랜잭션을 커밋하는지 여부를 결정합니다. |
TransactionScopeRequired | 서비스 작업이 클라이언트 흐름 트랜잭션에 참여하는지 여부를 결정합니다. |
Impersonation | 서비스 작업이 호출자의 ID를 가장하는지 여부를 결정합니다. |
ReleaseInstanceMode | 서비스 작업 호출의 시작 또는 끝에서 서비스 인스턴스를 재활용할지 여부를 결정합니다. |
샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 호출 사이의 지연은 서비스 작업에서 수행된 System.Threading.Thread.Sleep()
호출의 결과입니다. 나머지 동작 샘플에서는 이러한 동작에 대해 자세히 설명합니다. 클라이언트 창에서 Enter 키를 눌러 클라이언트를 종료합니다.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
샘플을 설정, 빌드 및 실행하려면
Windows Communication Foundation 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.
솔루션의 C# 또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플빌드의 지침을 따릅니다.
단일 또는 컴퓨터 간 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플실행의 지침을 따릅니다.