다음을 통해 공유


기본 서비스 동작

기본 샘플에서는 서비스 동작 설정을 구성하는 방법을 보여 줍니다. 샘플은 Getting Started에 기반하며, ICalculator 서비스 계약을 구현합니다. 이 샘플은 ServiceBehaviorAttributeOperationBehaviorAttribute 속성을 사용하여 서비스 및 작업 동작을 명시적으로 정의합니다. 구성 파일 또는 명령적으로 코드에서 동작을 구성할 수 있습니다(이 샘플에서 보여 주듯이).

이 샘플에서 클라이언트는 콘솔 애플리케이션(.exe)이며 서비스는 IIS(인터넷 정보 서비스)에서 호스팅됩니다.

비고

이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.

서비스 클래스는 다음 코드 샘플에서 ServiceBehaviorAttributeOperationBehaviorAttribute과 함께 동작을 지정합니다. 지정된 모든 값이 기본값입니다.

[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.

샘플을 설정, 빌드 및 실행하려면

  1. Windows Communication Foundation 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.

  2. 솔루션의 C# 또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플빌드의 지침을 따릅니다.

  3. 단일 또는 컴퓨터 간 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플실행의 지침을 따릅니다.