1. 상태관리란?
- 다른 페이지에 대한 여러 요청 사이에서 생성되는 모든 형태 (페이지, 권한, 인증, 회원)의 정보를 관리하는 기능
2. 상태관리 유형
A. 클라이언트 기반 : View State, Control State, Hidden Field, Cookie, Query String
- 특징
1. 서버의 리소스가 불필요하므로 서버의 부하를 줄일 수 있다.
2. 클라이언트에 저장하기 때문에 보안에 취약하다.
3. 저장할 수 있는 정보의 양이 제한적이다.
B. 서버 기반 : Application State, Session State, Profile Property, Database
- 특징
1. 클라이언트 측 옵션에 비해 보안이 뛰어나다.
2. 많은 양의 데이터를 저장이 가능하다.
3. 서버 리소스를 사용하므로 서버에 부하를 줄 수 있다.
3. 상태관리 상세설명
A. View State
- 동일한 페이지에 대한 여러 요청 사이에 값을 유지하기 위한 방법으로, 페이지에서 라운드트립 사이에 페이지와 컨트롤 속성 값을 유지하기 위해 사용하는 기본 방법이다.
(Round Trip: 클라이언트와 서버간의 요청/응답)
B. Control State
- 컨트롤 관련 속성 정보를 유지하는 데 사용할 수 있으며 ViewState 속성처럼 해제할 수 있다. 서버에 대한 라운드트립 사이에 컨트롤에 대한 소량의 상태 정보를 저장해야 할 경우에 사용한다.
C. Hidden Field
- 브라우저에 보이지 않지만 표준 컨트롤과 마찬가지로 그 속성을 설정할 수 있다. 원래 위치에 게시되거나 다른 페이지에 게시될 보안이 중요하지 않은 소량의 정보를 저장하는 데에 사용한다.
D. Cookie
- 클라이언트 측의 텍스트 파일에 저장되거나 브라우저 세션의 메모리에 저장되는 소량의 데이터로 서버가 페이지 출력과 함께 클라이언트에 전송하는 사이트 관련 정보가 들어있다. 특정 만료시간을 지정해놓은 일시적이거나 영구적일 수 있다. 브라우저에서 페이지를 요청할 때 요청 정보와 함께 쿠키의 정보가 전달되고 서버에서 읽을 수 있다.
E. Query String
- 페이지 URL 끝부분에 물음표(‘?’) 이후로 추가한 문자열을 의미한다. 다른 페이지로 보안이 중요하지 않은 Page Number같은 소량의 정보를 넘기는 데에 사용한다.
F. Application State
- 웹 응용 프로그램의 모든 페이지에서 접근이 가능하고, 모든 세션이 공유하는 정보 저장 공간이다. 웹 서버의 메모리를 사용하므로 데이터베이스에서 저장하거나 가져오는 것보다 속도가 빠르다. 자주 사용되는 데이터 집합을 저장해두면 사이트의 성능 향상을 기대할 수 있다. 용량이 크면 성능이 저하될 수 있으므로 신중하게 구현해야 한다.
G. Session State
- 응용프로그램 상태와 같이 웹 응용 프로그램의 모든 페이지에서 접근이 가능하지만, 해당 세션만 접근할 수 있도록 할애된 정보 저장 공간이다. 서버 메모리에 저장하므로 서버가 종료되거나 웹 응용 프로그램이 다시 시작되는 경우 저장된 모든 세션정보는 사라지게 된다. 그래서 ASP.NET에서는 세션만 따로 관리하는 State Server를 두거나, SQL Server에 정보를 저장하기도 한다.
[저장하는 방식] Session[“key”] = Value;
[참조하는 방식] Value = Session[“key”];
H. Profile Property
- 사용자 관련 데이터를 저장할 수 있는 기능으로, 세션이 만료될 때 프로필 데이터가 손실되지 않는 점을 제외하면 세션과 비슷하다. 프로필 속성기능은 일정한 형식으로 저장되며 개별 사용자와 연관되어 있는 ASP.NET 프로필을 사용한다.
I. Database
- 일반적으로 쿠키나 세션 상태와 함께 사용되며, 응용 프로그램과 세션을 다시 시작하더라도 정보가 유지되어야 하는 경우에 사용한다. 데이터베이스를 사용할 경우 보안, 저장용량, 지속성 측면의 장점이 있다.
'프로그래밍 노트 > ASP.NET' 카테고리의 다른 글
리피터 순번 넣기 (0) | 2015.01.08 |
---|---|
웹 폼 이벤트 처리 순서 (0) | 2014.04.25 |
Cookie (쿠키) (0) | 2014.04.25 |
ViewState (뷰 스테이트) (0) | 2014.04.25 |
유효성 검사 컨트롤 (0) | 2014.03.13 |