ASP.NET 상태 관리는 클라이언트 기반 상태 관리 옵션과 서버 기반 상태 관리 옵션으로구분할수 있습니다.
클라이언트 기반 상태 관리 옵션
1. 뷰 상태
2. 컨트롤 상태
3. 숨겨진 필드
4. 쿠키
5. 쿼리 문자열
서버 기반 상태 관리 옵션
1. 응용 프로그램 상태
2. 세션 상태
3. 프로필 속성
4. 데이터베이스 지원
뷰 상태
ViewState 속성은 동일한 페이지에 대한 여러 요청 사이에 값을 유지하기 위한 사전 개체를 제공합니다. 이것은 페이지에서 라운드트립 사이에 페이지와 컨트롤 속성 값을 유지하기 위해 사용하는 기본 방법입니다.
페이지가 처리되면 페이지와 컨트롤의 현재 상태가 문자열로 해시되어 하나의 숨겨진 필드로 페이지에 저장되거나, ViewState 속성에 저장된 데이터 양이 MaxPageStateFieldLength 속성에 지정된 값을 초과하는 경우에는 여러 개의 숨겨진 필드로 페이지에 저장됩니다. 페이지를 다시 서버에 게시하면 페이지를 초기화할 때 페이지에서 뷰 상태 문자열을 구문 분석하고 페이지의 속성 정보를 복원합니다.
원래 위치에 다시 게시될 페이지를 위해 소량의 정보를 저장해야 하는 경우에 사용합니다. ViewState 속성을 사용하면 기본 보안 기능이 제공됩니다.
뷰 상태를 사용할 때의 장점
1. 서버 리소스 불필요
2. 구현의 용이성
3. 향상된 보안 기능
뷰 상태를 사용할 때의 단점
1. 성능 고려 사항
2. 장치 제한 사항
3. 잠재적 보안 위험
컨트롤 상태
ControlState 속성은 컨트롤 관련 속성 정보를 유지하는 데 사용할 수 있으며 ViewState 속성처럼 해제할 수 없습니다.
서버에 대한 라운드트립 사이에 컨트롤에 대한 소량의 상태 정보를 저장해야 할 경우에 사용합니다.
컨트롤 상태를 사용할 때의 장점
1. 서버 리소스 불필요
2. 안정성
3. 다양성
컨트롤 상태를 사용할 때의 단점
1. 일부 프로그래밍 필요
숨겨진 필드
ASP.NET에서는 HiddenField 컨트롤에 정보를 저장하여 표준 HTML 숨겨진 필드로 렌더링할 수 있습니다. 숨겨진 필드는 브라우저에서 보이도록 렌더링되지 않지만 표준 컨트롤과 마찬가지로 그 속성을 설정할 수 있습니다. 페이지가 서버로 전송될 때는 숨겨진 필드의 내용이 다른 컨트롤의 값과 함께 HTTP Form 컬렉션에 전송됩니다. 숨겨진 필드는 페이지에 직접 저장하는 페이지 관련 정보를 위한 리포지토리 역할을 합니다.
원래 위치에 다시 게시되거나 다른 페이지에 게시될 페이지를 위한 소량의 정보를 저장해야 하며 보안이 중요하지 않은 경우에 사용합니다.
숨겨진 필드를 사용할 때의 장점
1. 서버 리소스 불필요
2. 폭넓은 지원
3. 구현의 용이성
숨겨진 필드를 사용할 때의 단점
1. 잠재적 보안 위험
2. 간단한 저장소 아키텍처
쿠키
쿠키는 클라이언트 파일 시스템의 텍스트 파일에 저장되거나 클라이언트 브라우저 세션의 메모리에 저장되는 소량의 데이터입니다. 쿠키에는 서버가 페이지 출력과 함께 클라이언트에 전송하는 사이트 관련 정보가 들어 있습니다. 쿠키는 일시적(특정 만료 시간과 날짜가 지정된)이거나 영구적일 수 있습니다.
쿠키를 사용하여 특정 클라이언트, 세션 또는 응용 프로그램에 대한 정보를 저장할 수 있습니다. 쿠키가 클라이언트 장치에 저장되면 브라우저에서 페이지를 요청할 때 요청 정보와 함께 쿠키의 정보가 전달됩니다. 서버에서 쿠키와 해당 값을 읽을 수 있습니다. 일반적으로는 사용자가 이미 응용 프로그램에서 인증되었음을 나타내는 토큰(대부분 암호화된)을 저장합니다.
클라이언트에 소량의 정보를 저장해야 하며 보안이 중요하지 않은 경우에 사용합니다.
쿠키를 사용할 때의 장점
1. 만료 시기 구성 규칙
2. 서버 리소스 불필요
3. 단순성
4. 데이터 지속성
쿠키를 사용할 때의 단점
1. 크기 제한
2. 잠재적 보안 위험
쿼리 문자열
쿼리 문자열은 페이지 URL 끝부분에 추가되는 정보입니다.
한 페이지에서 다른 페이지로 소량의 정보를 전송하고 보안이 중요하지 않은 경우에 사용합니다.
쿼리 문자열을 사용할 때의 장점
1. 서버 리소스 불필요
2. 폭넓은 지원
3. 구현의 용이성
쿼리 문자열을 사용할 때의 단점
1. 잠재적 보안 위험
2. 용량 제한 일부
응용 프로그램 상태
ASP.NET을 사용하면 HttpApplicationState 클래스의 인스턴스인 응용 프로그램 상태를 사용하여 각 활성 웹 응용 프로그램에 대한 값을 저장할 수 있습니다. 응용 프로그램 상태는 웹 응용 프로그램의 모든 페이지에서 액세스할 수 있는 전역 저장 메커니즘이므로 서버 라운드트립 간에, 그리고 페이지 요청 간에 유지되어야 하는 정보를 저장하는 데 유용합니다.
자주 변경되지 않고 많은 사용자가 이용하는 전역적인 정보를 저장해야 하며 보안이 중요하지 않은 경우에 사용합니다. 응용 프로그램 상태에는 많은 양의 정보를 저장하지 않는 것이 좋습니다.
응용 프로그램 상태를 사용할 때의 장점
1. 구현의 용이성
2. 응용 프로그램 범위
응용 프로그램 상태를 사용할 때의 단점
1. 응용 프로그램 범위
2. 제한된 데이터 영속성
세션 상태
ASP.NET을 사용하면 HttpSessionState 클래스의 인스턴스인 세션 상태를 사용하여 각 활성 웹 응용 프로그램 세션에 대한 값을 저장할 수 있습니다. 전체적인 개요를 보려면 세션 상태 개요를 참조하십시오.
세션 상태는 범위가 현재 브라우저 세션까지라는 점을 제외하면 응용 프로그램 상태와 비슷합니다. 서로 다른 사용자가 응용 프로그램을 사용하고 있는 경우 각 사용자 세션은 다른 세션 상태를 갖게 됩니다. 또한 같은 사용자가 응용 프로그램을 끝냈다가 나중에 다시 시작해도 두 번째 사용자 세션은 처음과 다른 세션 상태를 갖게 됩니다.
세션 상태는 서버 라운드트립 간에, 그리고 페이지 요청 간에 유지해야 하는 세션 관련 정보를 저장하기 위한 키/값 사전 구조입니다.
세션 상태를 사용하여 다음 작업을 수행할 수 있습니다.
브라우저 또는 클라이언트 장치 요청을 고유하게 식별하고 이 요청을 서버의 개별 세션 인스턴스로 매핑할 수 있습니다.
동일한 세션 내의 여러 브라우저 또는 클라이언트 장치 요청에 사용하기 위해 서버에 세션 관련 데이터를 저장할 수 있습니다.
적절한 세션 관리 이벤트를 발생시킬 수 있습니다. 또한 이들 이벤트를 활용하는 응용 프로그램 코드를 작성할 수도 있습니다.
개별 세션에 따라 달라지는 수명이 짧은 정보를 저장해야 하며 보안이 중요하지 않은 경우에 사용합니다. 세션 상태에는 많은 양의 정보를 저장하지 않는 것이 좋습니다. 세션 상태 개체가 만들어지고 응용 프로그램의 모든 세션이 존속하는 동안 유지됩니다. 많은 사용자에게 서비스를 제공하는 응용 프로그램의 경우에는 서버 리소스를 많이 사용하므로 확장성이 떨어질 수 있습니다.
세션 상태를 사용할 때의 장점
1. 구현의 용이성
2. 세션 고유의 이벤트
3. 데이터 지속성
4. 플랫폼 확장성
5. 쿠키가 없는 세션 지원
6. 확장성
세션 상태를 사용할 때의 단점
1. 성능 고려 사항
프로필 속성
ASP.NET은 사용자 관련 데이터를 저장할 수 있는 프로필 속성이라는 기능을 제공합니다. 이 기능은 사용자의 세션이 만료될 때 프로필 데이터가 손실되지 않는다는 점을 제외하면 세션 상태와 비슷합니다. 프로필 속성 기능은 일정한 형식으로 저장되며 개별 사용자와 연관되어 있는 ASP.NET 프로필을 사용합니다. ASP.NET 프로필을 사용하면 사용자가 고유한 데이터베이스를 만들어 유지 관리하지 않고도 사용자 정보를 쉽게 관리할 수 있습니다. 또한 프로필은 응용 프로그램의 모든 지점에서 액세스할 수 있는 강력한 형식의 API를 사용하여 사용자 정보를 사용할 수 있도록 합니다. 프로필에는 모든 형식의 개체를 저장할 수 있습니다. ASP.NET 프로필 기능은 안전한 형식으로 데이터를 사용할 수 있도록 하는 동시에 거의 모든 종류의 데이터를 정의하고 유지할 수 있는 일반 저장소 시스템을 제공합니다.
사용자 프로필을 사용하려면 프로필 공급자를 구성해야 합니다. ASP.NET에는 SQL 데이터베이스에 프로필 데이터를 저장할 수 있도록 하는 SqlProfileProvider 클래스가 포함되지만 프로필 데이터를 사용자 지정 형식, XML 파일 같은 사용자 지정 저장 메커니즘, 심지어는 웹 서비스로도 저장하는 프로필 공급자 클래스를 직접 만들 수도 있습니다.
프로필 속성에 저장되는 데이터는 응용 프로그램 메모리에 저장되지 않으므로 IIS(인터넷 정보 서비스) 다시 시작 및 작업자 프로세스 다시 시작 시에도 데이터가 손실되지 않고 유지됩니다. 또한 프로필 속성은 웹 팜이나 웹 가든에서처럼 여러 프로세스 간에도 유지할 수 있습니다.
사용자 세션이 종료된 다음 계속 유지해야 하고 응용 프로그램을 이후 방문할 때 다시 검색되어야 하는 사용자 특정 정보를 저장하는 경우에 사용합니다.
프로필 속성을 사용할 때의 장점
1. 데이터 지속성
2. 플랫폼 확장성
3. 확장성
프로필 속성을 사용할 때의 단점
1. 성능 고려 사항
2. 데이터 유지 관리
데이터베이스 지원
일반적으로 데이터베이스 지원은 쿠키나 세션 상태와 함께 사용됩니다.
1. 보안
2. 개별화
3, 일관성
4. 데이터 마이닝
거래를 관리하는 많은 양의 정보를 저장하는 경우 또는 응용 프로그램 및 세션을 다시 시작하더라도 정보가 유지되어야 하는 경우에 사용합니다. 데이터 마이닝이 중요하며 보안이 중요하지 않은 경우
데이터베이스를 사용하여 상태를 유지할 때의 장점
1. 보안
2. 저장소 용량
3. 데이터 지속성
4. 강력함 및 데이터 무결성
5. 액세스 가능성
6. 폭넓은 지원
데이터베이스를 사용하여 상태를 유지할 때의 단점
1. 복잡성
2. 성능 고려 사항
'ASP.NET' 카테고리의 다른 글
DateTime 사용법 (0) | 2008.06.25 |
---|---|
VS 2008 웹 개발툴 핫픽스 롤업 (0) | 2008.04.07 |
Speed Up Your Site with the Improved View State in ASP.NET 2.0 (0) | 2008.04.05 |
multipart/form-data 타입을 이용한 파일 전송지원 클래스 작성 (0) | 2008.02.12 |
세션 하이재킹 시도를 저지 (0) | 2008.02.07 |