티스토리 뷰



[.NET/ASP.NET] - 실전 ASP.NET Session [1] - 쿠키를 이용한 상태관리와 위험성
[.NET/ASP.NET] - 실전 ASP.NET Session [2] - 상태관리의 종류
[.NET/ASP.NET] - 실전 ASP.NET Session [3] - 다양한 세션 관리 방법
[.NET/ASP.NET] - 실전 ASP.NET Session [4] - 세션상태 마이그레이션

 

 

제목에는 세션상태 마이그레이션 이라고 했지만, 보다 구체적으로 언급하면 세션 공급자를 구현하는 단원입니다. 이전에 보았던 아래의 그림과 같이 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 시스템에 대한 큰 그림과 세부적인 구현방법은 최대한 자세히 기술할 예정이니, 관심 있는 분은 좋은 팁 배워간다 생각하시고 보시면 될겁니다.


댓글