기본 서비스 동작
Default 샘플에서는 서비스 동작 설정을 구성하는 방법을 보여 줍니다. 샘플은 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 샘플의 일회 설치 절차를 수행했는지 확인합니다.
C# 또는 Visual Basic .NET 버전의 솔루션을 빌드하려면 Building the Windows Communication Foundation Samples의 지침을 따릅니다.
단일 컴퓨터 또는 다중 컴퓨터 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플 실행의 지침을 따릅니다.