programing

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

topblog 2023. 6. 7. 22:05
반응형

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

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

  • System.Web.SessionState.HttpSessionState에서 이용할 수 있는.HttpApplication
  • System.Web.HttpSessionStateBase에서 이용할 수 있는.Controller

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

불행하게도 이 두 가지 유형의 유일한 공통 조상은System.Object즉, 둘 중 하나의 추상화를 위해 재사용 가능한 유틸리티 코드를 만들 수 없습니다.

API가 왜 이런 식입니까?제가 빠진 두 가지 사이에 중요한 차이점이 있습니까?

고전적인 HttpContext 객체 Request, Response, Session에 대한 ASP.NET MVC 추상화에 도입되었습니다.추상 클래스를 나타내며, 추상 클래스가 조롱당할 수 있기 때문에 기본 컨텍스트를 숨기고 단위 테스트를 단순화하기 위해 MVC 프레임워크 전체에 노출됩니다.

예를 들어 사용자가 가지고 있는 세션 개체 및 해당 개체의 구현입니다.

다음은 기존 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

반응형