온프레미스 배포의 경우, ASP.NET 세션 상태는 세 가지 기본 제공 저장소 옵션(InProc, StateServer, SqlServer)과 네 번째 "사용자 지정" 옵션을 제공합니다. 처음 두 가지 기본 제공 옵션(InProc StateServer)은 확장성 문제가 있는 반면, SqlServer 옵션은 성능과 확장성 모두에 문제가 있습니다.
훨씬 더 나은 전략은 "사용자 지정" 옵션과 플러그인을 사용하는 것입니다. NCache 너처럼 ASP.NET 세션 상태 공급자. NCache .NET용으로 매우 빠르고 확장 가능한 오픈 소스 분산 캐시입니다. 런타임에 더 많은 캐시 서버를 추가하고 선형적으로 확장할 수 있도록 하여 극심한 트랜잭션 로드를 처리합니다. NCache 또한 지능형 기능을 제공합니다 캐시 복제 따라서 웹 서버나 캐시 서버가 다운되더라도 ASP.NET 세션 상태가 손실되지 않습니다.
구현 NCache 세션 상태 공급자(SSP)를 사용하려면 코드 변경이 전혀 필요하지 않습니다. 다음 단계를 따르기만 하면 됩니다.
설정 방법에 대한 자세한 내용을 참조하세요. ASP.NET 세션 상태 공급자 을 통한 NCache. 다음은 사용 시 얻을 수 있는 몇 가지 이점입니다. NCache ASP.NET 세션 상태 공급자로:
NCache 여러 지역(데이터 센터)에서 실행되는 애플리케이션의 ASP.NET 세션 상태를 관리하고 세션 일관성을 유지하는 두 가지 방법을 제공합니다. 다음과 같습니다.
ASP.NET 세션 상태의 WAN 복제: NCache 를 제공합니다 브리지 토폴로지 전체 ASP.NET 세션 상태 저장소(분산 캐시)를 다른 지역(데이터 센터)에 복제할 수 있도록 합니다. WAN이렇게 하면 세션이 항상 여러 지역(데이터 센터)에 존재합니다. 이 기능은 액티브-패시브(재해 복구용) 또는 액티브-액티브 모드로 사용할 수 있습니다. 액티브-액티브 모드에서는 여러 지역(데이터 센터) 간의 트래픽 부하를 분산할 수도 있습니다. 이 모든 기능은 구성 변경을 통해 수행됩니다.
다중 지역 ASP.NET 세션 상태: 대역폭 소모 비용으로 인해 WAN을 통해 ASP.NET 세션 상태를 복제하지 않으려면 다음을 사용할 수 있습니다. 다중 사이트 ASP.NET 세션 상태 특징 NCache이 경우 ASP.NET 세션 상태는 사이트 간에 복제되지 않고 생성 위치에 저장됩니다. 하지만 한 지역(데이터 센터)에서 다른 지역(데이터 센터)으로 트래픽을 이동하면 ASP.NET 세션 상태도 함께 이동합니다. 이를 통해 두 개 이상의 활성 지역(데이터 센터)을 운영할 수 있으며, 각 지역(데이터 센터)은 대부분의 트래픽을 로컬로 유지하지만, 필요에 따라 다른 지역으로 트래픽이 오버플로되는 경우가 있습니다.
또한, 다른 데이터 센터에서도 사용자의 세션에 접근할 수 있으므로 사용자에게 어떠한 중단도 일으키지 않고 한 데이터 센터를 중단할 수도 있습니다.
The NCache ASP.NET 세션 상태 공급자는 모든 표준을 구현합니다. ASP.NET 세션 상태 공급자 기능. 또한, 애플리케이션의 복잡한 상황을 처리할 수 있도록 다양한 고급 기능을 제공합니다.
INSTALL_DIR\NCache\log-files\SessionStoreProvider 폴더)를 지정하여 enableLogs = "true". 다음을 지정하여 Windows 이벤트 로그에 대한 오류 로깅을 활성화할 수도 있습니다. writeExceptionsToEventLog = "true".표준 세션 잠금: 표준 ASP.NET 세션 잠금 동작은 세션이 잠긴 경우, 해당 세션에 대한 다른 요청이 90초(설정 가능) 동안 대기하고, 종료 시 세션의 잠금을 강제 해제하는 것입니다. 이 옵션은 다음과 같이 지정할 수 있습니다.
enableSessionLocking = "true" sessionLockingRetry = "-1" emptySessionWhenLocked = "false"
향상된 세션 잠금: 트래픽이 많은 ASP.NET 애플리케이션에서 로봇이 데이터를 스크래핑하고 수백 또는 수천 건의 요청에 동일한 세션 ID를 동시에 사용하는 경우, 90초 동안 기다리면 사용 가능한 모든 소켓이 부족해질 수 있으므로 표준 세션 잠금 옵션을 사용할 여유가 없습니다. 대신, 요청을 신속하게 반환하여 실패를 알리고 싶을 수 있습니다. 다음과 같이 지정할 수 있습니다.
enableSessionLocking = "true" sessionLockingRetry = "5" emptySessionWhenLocked = "false"
이 기능은 0.5초 간격으로 5번 재시도한 후 실패를 나타내기 위해 빈 세션을 반환합니다.