티스토리 뷰
제목에는 세션상태 마이그레이션 이라고 했지만, 보다 구체적으로 언급하면 세션 공급자를 구현하는 단원입니다. 이전에 보았던 아래의 그림과 같이 ASP.NET 이 제공하는 몇 가지의 세션상태 저장소가 있지만, 상황에 따라서 사용할 수 없는 경우도 생길 수 가 있습니다. .NET Framework 는 3가지의 세션 공급자를 제공해 주지만 어떠한 경우는 이 3가지 모두 쓸 수 없기 때문입니다.
[그림1] ASP.NET 이 제공하는 기본적인 세션 공급자
만약, ASP.NET 프로젝트가 MS-SQL 데이터베이스 기반으로 구축이 된다면 SQL Server 를 이용한 세션 관리가 가능하지만, Oracle 데이터베이스 기반일 경우 .NET Framework 는 Oracle Session Provider 를 기본으로 제공하지 않기 때문에 세션관리에 이슈가 있다면 프로젝트 착수 단계부터 개발 플랫폼의 선택의 기회에 제외될 수 있기도 합니다. 가령, Oracle / JSP나 ASP 베이스의 시스템을 닷넷으로 전환하고자 한다면, 세션 서버 구축 때문에 비싼 비용을 지불하여 MS-SQL 을 구입할 수 도 없는 노릇이지요. 또한, 세션에 추가 정보나 필드 등이 추가 되어야 할 경우 기존 상태 저장소는 사용할 수 없게 되기 때문에, 새로운 방안을 모색해야 할 것입니다.
ASP.NET 은 이러한 다양한 상태 공급자를 구현할 수 있도록 SessionStateStoreProviderBase 인 추상 클래스를 제공하고 있습니다. 이 클래스는 System.Web.SessionState 네임스페이스에 존재합니다. 우선 이 클래스와 상속 구현을 위해 아래의 MSDN 문서를 참고하시기 바랍니다.
그리고 Access 데이터베이스를 이용한 세션 상태 공급자의 소스를 구현한 MSDN 소스를 참고하시기 바랍니다.
소스코드가 복잡하지 않기 때문에, 적절한 다른 종류의 데이터베이스로의 전환은 쉽게 하실 수 있으리라 생각합니다.
우리가 직접 세션 공급자(Session Provider) 를 구현한다는 것은 많은 의미를 내포할 수 있습니다. 그 중, 가장 의미 있는 것은 이 Custom Session Provider 를 구현함으로써 개발자나 구축하는 프로젝트는 아무런 코드의 수정 없이 데이터베이스 플랫폼의 전환이 가능하다는 것입니다. 단지, web.config 에서 Session Provider 만 지정해주면 됩니다.
위의 첨부파일은 MSDN 예제의 Access Database 에 Session 을 저장하는 예제인데, MSSQL Database 로 변경한 소스입니다.
web.config 와 테이블의 내용을 보면 다음과 같습니다.
[그림2] Custom Session Provider 를 web.config 에 설정
[그림3] DB 테이블에 Custom Sessino Provider 가 세션을 저장한 결과
위의 web.config 의 connectionString 에 적절한 id 와 password 를 넣어주는 센스만 보여주신다면, 무리 없이 바로 샘플은 동작할 겁니다. ( Database 와 Table 만드는 스크립트는 코드의 주석에 포함되어 있습니다)
처음 저의 의도와 달리 포스팅을 점점 날로 먹으려고 하는 것 같네요. 원래 이번 포스팅부터 많은 내용을 익혀서 전달해 드리려고 했는데 요즘 Umc.Core 에 올인하고 있기 때문에 포스팅을 성의 있게 쓰기에 시간이 턱없이 부족하네요. 이렇게 올인해도 집에 와서 코딩하면 20 라인 만들기도 정말 벅차답니다. 만들면서 잘못된 설계 때문에 몇 번이나 엎었는지 ^^; “세션 분산처리”도 포스팅 최종회에 함께 포함하도록 합니다.
다음 포스팅에 실제 SSO 시스템을 적용한 예제도 준비하려고 했지만, 그렇게 하지 못할 것 같아요. 하지만, Custom Session Provider 와 SSO 시스템에 대한 큰 그림과 세부적인 구현방법은 최대한 자세히 기술할 예정이니, 관심 있는 분은 좋은 팁 배워간다 생각하시고 보시면 될겁니다.
'.NET > ASP.NET' 카테고리의 다른 글
ASP.NET 서버 모델의 성능에 대한 고찰 [2] (2) | 2009.03.02 |
---|---|
ASP.NET 서버 모델의 성능에 대한 고찰 [1] (2) | 2009.03.02 |
실전 ASP.NET Session [3] - 다양한 세션 관리 방법 (0) | 2008.06.09 |
실전 ASP.NET Session [2] - 상태관리의 종류 (0) | 2008.06.07 |
실전 ASP.NET Session [1] - 쿠키를 이용한 상태관리와 위험성 (0) | 2008.05.25 |
- Total
- Today
- Yesterday
- ***** MY SOCIAL *****
- [SOCIAL] 페이스북
- [SOCIAL] 팀 블로그 트위터
- .
- ***** MY OPEN SOURCE *****
- [GITHUB] POWERUMC
- .
- ***** MY PUBLISH *****
- [MSDN] e-Book 백서
- .
- ***** MY TOOLS *****
- [VSX] VSGesture for VS2005,200…
- [VSX] VSGesture for VS2010,201…
- [VSX] Comment Helper for VS200…
- [VSX] VSExplorer for VS2005,20…
- [VSX] VSCmd for VS2005,2008
- .
- ***** MY FAVORITES *****
- MSDN 포럼
- MSDN 라이브러리
- Mono Project
- STEN
- 일본 ATMARKIT
- C++ 빌더 포럼
- .
- test
- TFS
- ALM
- ASP.NET
- Visual Studio 11
- TFS 2010
- 비주얼 스튜디오
- .NET Framework 4.0
- 땡초
- Managed Extensibility Framework
- MEF
- github
- c#
- umc
- Visual Studio 2010
- .NET
- Silverlight
- testing
- Team Foundation Server 2010
- 엄준일
- LINQ
- Team Foundation Server
- monodevelop
- mono
- Windows 8
- Visual Studio
- 비주얼 스튜디오 2010
- Visual Studio 2008
- 팀 파운데이션 서버
- POWERUMC