Share via


Azure 역할 내 캐시용 세션 상태 공급자

중요

모든 새 개발에서는 Azure Redis Cache를 사용하는 것이 좋습니다. Azure Cache 제품을 선택하는 방법에 대한 현재 설명서 및 지침 은 나에게 적합한 Azure Cache 제품을 참조하세요.

세션 상태 공급자는 ASP.NET 애플리케이션에 대한 out-of-process 스토리지 메커니즘입니다. 이 공급자를 사용하면 메모리 내 또는 SQL Server 데이터베이스가 아닌 캐시에 세션 상태를 저장할 수 있습니다.

세션 상태 캐싱 샘플은 캐싱 세션 상태 및 출력 캐싱 샘플을 참조하세요.

기능

세션 상태 공급자는 지난 ASP.NET 세션 상태 공급자보다 다음과 같이 개선되었습니다.

  • 세션 상태 직렬화에 내부적으로 NetDataContractSerializer 클래스를 사용합니다.

  • 서로 다른 ASP.NET 응용 프로그램 간에 세션 상태를 공유할 수 있습니다.

  • 여러 판독기와 단일 작성기에 대해 동일한 세션 상태 집합에 대한 동시 액세스를 지원합니다.

  • 캐시 클라이언트 속성을 통해 압축을 사용할 수 있습니다.

직렬화에 NetDataContractSerializer 클래스를 사용하면 보다 광범위한 직렬화 가능 유형을 지원할 수 있습니다. 여기에는 이진 직렬화 가능 유형에 대한 지원이 포함됩니다.

공급자는 서로 다른 ASP.NET 응용 프로그램에서 같은 세션 상태 데이터를 읽고 쓰는 기능을 지원합니다. 예를 들어 개발자에게 두 개의 서로 다른 ASP.NET 사이트인 /contoso 및 /adventureworks가 있다고 가정해 보겠습니다. 세션 상태 공급자는 캐시 클러스터의 동일한 세션 상태 저장소를 가리키도록 각 웹 응용 프로그램에 구성될 수 있습니다. 따라서 두 응용 프로그램 모두 주어진 세션 식별자에 대해 동일한 세션 데이터를 읽고 씁니다.

세션 상태 공급자는 여러 판독기와 단일 작성기에 대해 동일한 세션 상태 집합에 대한 동시 액세스를 지원합니다. 이 경우의 판독기는 ReadOnly 세션 상태를 사용할 때처럼 표시되는 페이지로 정의됩니다. 대다수 응용 프로그램의 세션 상태 액세스 패턴에 세션 상태에 대한 읽기 전용 액세스만 필요한 경우 AJAX 콜백을 광범위하게 사용하는 응용 프로그램에서는 서버 쪽 요청 대기가 발생하지 않습니다.

세션 상태 공급자를 ASP.NET 프로젝트에 추가하려면

  1. 먼저 ASP.NET 공급자에서 사용할 캐시를 구성합니다. 공동 배치된 토폴로지 또는 전용 역할로 캐싱을 호스트할 수 있습니다.

  2. NuGet 사용하여 Visual Studio ASP.NET 프로젝트에 캐싱 지원을 추가합니다. 지침은 방법: Azure In-Role Cache를 사용하도록 Visual Studio 준비를 참조하세요.

    중요

    이러한 단계를 수행하려면 최신 NuGet 패키지 관리자(버전 2.1.31002.9028 이상)가 있어야 합니다. 최신 NuGet 패키지 관리자 https://go.microsoft.com/fwlink/?LinkId=240311설치하려면 .

  3. 세션 상태 캐싱을 구성하는 기존 sessionState 요소를 제거합니다. NuGet 패키지에 의해 추가된 주석이 추가된 sessionState 섹션을 제거하지 마세요.

  4. web.config 파일에서 sessionState 섹션의 주석 처리를 제거합니다.

        <!-- Azure Caching session state provider -->
        <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
          <providers>
            <add name="AFCacheSessionStateProvider" 
              type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
              cacheName="default" 
              dataCacheClientName="default" 
              applicationName="AFCacheSessionState"/>
          </providers>
        </sessionState>
    

다음 목록에는 출력 캐시 공급자에 영향을 주는 선택적 구성 변경 사항이 나와 있습니다.

  • add 요소의 cacheName 특성을 사용하여 대상 명명된 캐시를 변경합니다.

  • add 요소의 dataCacheClientName 특성을 사용하여 캐시 클라이언트 설정의 원본을 변경합니다. 이 특성을 web.config 파일의 기존 dataCacheClient 섹션 이름으로 설정합니다.

  • 연결된 dataCacheClient 섹션에서 설정을 변경하여 캐시 클라이언트의 동작을 수정합니다. 예를 들어 isCompressionEnabled 특성으로 압축을 사용하도록 설정합니다.

    <dataCacheClient name="default" isCompressionEnabled="true">
    

    사용 가능한 구성 옵션 목록은 역할 내 캐시 클라이언트 구성 설정(Web.config)를 참조하세요. 캐싱에 대한 ASP.NET 공급자는 이진 또는 사용자 지정 serialization 형식을 지원하지 않습니다. 이러한 직렬 변환기가 세션 상태에 사용되는 경우 다음 예외가 발생합니다. "'Microsoft.Web.DistributedCache, Version=101.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 어셈블리의 'Microsoft.Web.DistributedCache.SerializableSessionStateStoreData' 형식이 serializable로 표시되지 않습니다."

  • 세션 상태 공급자의 설정을 변경합니다. 사용 가능한 구성 옵션 목록은 Azure In-Role Cache의 세션 상태 공급자 구성 설정 ASP.NET 참조하세요.

섹션 내용

참고 항목

개념

Azure 역할 내 캐시용 ASP.NET 4 캐시 공급자