다음을 통해 공유


ASP.NET Compatibility

이 샘플에서는 WCF(Windows Communication Foundation)에서 ASP.NET 호환 모드를 사용하도록 설정하는 방법을 보여 줍니다. ASP.NET 호환 모드에서 실행되는 서비스는 ASP.NET 응용 프로그램 파이프라인에 완전히 참여하고 파일/URL 권한 부여, 세션 상태 및 HttpContext 클래스와 같은 ASP.NET 기능을 활용할 수 있습니다. HttpContext 클래스는 쿠키, 세션 및 기타 ASP.NET 기능에 대한 액세스를 허용합니다. 이 모드에서는 바인딩에 HTTP 전송이 사용되고 서비스 자체가 IIS에서 호스팅되어야 합니다.

이 샘플에서 클라이언트는 콘솔 응용 프로그램(실행 파일)이고 서비스는 IIS(인터넷 정보 서비스)에서 호스팅됩니다.

참고

이 샘플의 설치 절차 및 빌드 지침은 이 항목의 끝부분에 나와 있습니다.

이 샘플은 계산기 서비스를 구현하는 Getting Started 샘플을 기반으로 합니다. 실행 결과를 유지하면서 일련의 작업을 수행할 수 있도록 ICalculator 계약은 ICalculatorSession 계약으로 수정되었습니다.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

계산을 수행하기 위해 여러 서비스 작업이 호출될 때 서비스는 이 기능을 사용하여 각 클라이언트에 대한 상태를 유지 관리합니다. 클라이언트는 Result를 호출하여 현재 결과를 검색하고 Clear를 호출하여 결과를 0으로 지울 수 있습니다.

서비스는 ASP.NET 세션을 사용하여 각 클라이언트 세션의 결과를 저장합니다. 따라서 서비스는 여러 서비스 호출에서 각 클라이언트에 대한 실행 결과를 유지 관리할 수 있습니다.

참고

ASP.NET 세션 상태와 WCF 세션은 전혀 다릅니다. WCF 세션에 대한 자세한 내용은 세션을 참조하십시오.

서비스는 ASP.NET 세션 상태에 크게 의존하며 올바른 작동을 위해 ASP.NET 호환 모드가 필요합니다. 이러한 요구 사항은 AspNetCompatibilityRequirements 특성을 적용하여 선언적으로 표현됩니다.

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double Result
    {  // store result in AspNet Session
       get {
          if (HttpContext.Current.Session["Result"] != null)
             return (double)HttpContext.Current.Session["Result"];
          return 0.0D;
       }
       set
       {
          HttpContext.Current.Session["Result"] = value;
       }
    }
    public void Clear()
    {
        Result = 0.0D;
    }
    public void AddTo(double n)
    {
        Result += n;
    }
    public void SubtractFrom(double n)
    {
        Result -= n;
    }
    public void MultiplyBy(double n)
    {
        Result *= n;
    }
    public void DivideBy(double n)
    {
        Result /= n;
    }
    public double Result()
    {
        return Result;
    }
}

샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 클라이언트를 종료하려면 클라이언트 창에서 Enter 키를 누릅니다.

    0, + 100, - 50, * 17.65, / 2 = 441.25
    Press <ENTER> to terminate client.

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

  1. Windows Communication Foundation 샘플의 일회 설치 절차를 수행했는지 확인합니다.

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

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

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.