반응형
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 프레임 워크 전체에 노출되어 추상 클래스를 모의 할 수 있고 기본을 숨기고 단위 테스트를 단순화합니다.
예를 들어, 가지고있는 세션 객체 와 그 구현에 대해 .HttpSessionStateBase
HttpSessionStateWrapper
다음은 클래식 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를 계속 얻을 수 있습니다.
반응형
'ProgramingTip' 카테고리의 다른 글
C #에서 할당 연산자 오버로딩 (0) | 2020.12.12 |
---|---|
무게를 제외하고 동일한 글꼴이 다른 브라우저에서 다르게 글꼴입니다. (0) | 2020.12.12 |
Windows 용 Sequel Pro 대안 (0) | 2020.12.12 |
Java 7 java.nio.file.Path에서 하위 파일 / 폴더에 액세스하는 방법은 무엇입니까? (0) | 2020.12.12 |
Unix 도메인 소켓은 여러 클라이언트를 어떻게 구별합니까? (0) | 2020.12.12 |