ProgramingTip

ASP.NET에 두 가지 호환되지 않는 세션 상태 유형이있는 이유는 무엇입니까?

bestdevel 2020. 12. 12. 12:13
반응형

ASP.NET에 두 가지 호환되지 않는 세션 상태 유형이있는 이유는 무엇입니까?


ASP.NET MVC에서 세션 데이터로 작업하는 두 가지 방법이 있습니다.

  • System.Web.SessionState.HttpSessionState, 사용 가능 HttpApplication
  • System.Web.HttpSessionStateBase, 사용 가능 Controller

하나에 저장된 데이터는 다른 하나에서 사용할 수있는 것입니다.

불행히도이 두 유형의 유일한 공통 조상은이며 , 이는 이는 System.Object둘 중 하나를 추상화하기 위해 가능한 유틸리티 코드를 만들 수 없음을 의미합니다.

API는 왜 이런 식입니까? 내가 놓친 둘 사이에 중요한 차이점이 있습니까?


ASP.NET MVC에서 클래식 HttpContext 개체 Request, Response, Session에 대한 추상화가 도입되었습니다. 추상 클래스를 사용할 수 있으며 MVC 프레임 워크 전체에 노출되어 추상 클래스를 모의 할 수 있고 기본을 숨기고 단위 테스트를 단순화합니다.

예를 들어, 가지고있는 세션 객체 와 그 구현에 대해 .HttpSessionStateBaseHttpSessionStateWrapper

다음은 클래식 ASP.NET 세션과 추상화간에 변환하는 방법의 예입니다.

HttpSessionStateBase session = new HttpSessionStateWrapper(HttpContext.Current.Session);

그래서 System.Web.SessionState.HttpSessionState당신이 서술하는 고전적인 ASP.NET 1.0 이후 존재했던 기본 세션입니다. MVC 에서이 개체는 HttpSessionStateWrapper. 그러나 ASP.NET MVC는 ASP.NET 응용 프로그램 베어 세션이있는 Global.asax를 계속 얻을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/5447611/why-are-there-two-incompatible-session-state-types-in-asp-net

반응형