ASP.NET의 뷰 상태는 클라이언트 요청의 왕복 과정 동안 페이지 및 컨트롤 값을 유지하여 클라이언트 측 상태를 관리하는 내장 기능입니다. 이를 통해 HTTP와 같은 상태 비저장 프로토콜에서도 상태를 관리하는 프로그래밍 기능을 제공합니다.
이 상태는 클라이언트에게 전송되는 모든 응답의 일부로, 페이지의 숨겨진 필드에 Base64 문자열로 인코딩되어 저장됩니다. 클라이언트는 이 상태를 포스트백의 일부로 서버로 반환합니다.
<input id = "__VIEWSTATE"
type = "hidden"
name = "__VIEWSTATE"
value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
2...=="/>
ASP.NET 뷰 상태는 매우 유용하지만, 해결해야 할 몇 가지 문제가 있습니다. 이러한 문제들은 아래에서 설명합니다.
ASP.NET 뷰 상태 관련 문제를 해결하는 한 가지 방법은 실제 값을 저장하는 것입니다. ASP.NET 뷰 상태 웹 서버에서는 브라우저를 대신하여 고유 토큰(또는 ID)을 전송합니다. 그러면 브라우저는 다음에 웹 서버에 이 토큰을 다시 보낼 수 있습니다. 웹 서버는 이 토큰을 사용하여 저장소에서 올바른 ASP.NET 뷰 상태를 찾습니다. 아래는 토큰 사용 예시입니다.
<input type = "hidden"
name = "__VIEWSTATE"
id = "__VIEWSTATE"
value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />
ASP.NET 뷰 상태는 웹 서버에 저장할 수 있지만, 로드 밸런싱된 웹 팜 환경에서 ASP.NET 애플리케이션이 실행되는 경우 다음 HTTP 요청이 다른 웹 서버로 전송될 수 있으므로 이상적인 방법은 아닙니다. 따라서 모든 웹 서버에서 접근 가능한 공유 저장소에 ASP.NET 뷰 상태를 저장해야 합니다.
ASP.NET 뷰 상태를 서버에 저장하는 가장 좋은 위치는 다음과 같습니다. 분산 캐시. 이렇게 하면 모든 웹 서버에 대한 공통 저장소를 가질 수 있을 뿐만 아니라 빠르고 확장 가능한 인메모리 저장소 SQL Server 데이터베이스 또는 기타 스토리지 옵션과 비교하여
NCache .NET, Java, Python, Node.js를 위한 매우 빠르고 확장 가능한 분산 캐시입니다. 또한 다음을 저장할 수 있습니다. ASP.NET 뷰 상태 위에서 설명한 문제를 해결합니다.
ASP.NET 뷰 상태를 구성하려면 다음을 설치해야 합니다. AspNet.ViewState.NCache NuGet 패키지 전제 조건으로. 그런 다음 다음을 구성해야 합니다. 앱 브라우저 ~와 함께 파일 NCache 플러그 페이지 어댑터. 다음으로, web.config 파일 구성 구성에 대한 뷰 상태를 등록하고 이전에 등록된 구성 섹션에 대한 설정을 지정하려면 애플리케이션에서 다음을 참조하세요. NCache ASP.NET 뷰 상태 문서 단계별 구성을 위해.
뷰 상태 캐싱 및 기타 데이터에 동일한 캐시가 사용되는 경우 다음을 수행할 수 있습니다. 보기 상태 데이터 가져오기 다음과 같이 NC_ASP.net_viewstate_data 태그를 사용합니다.
Hashtable allViewStateData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_viewstate_data"));
ASP.NET 뷰 상태를 캐싱하면 다음과 같은 이점을 얻을 수 있습니다. NCache.
NCache ASP.NET 뷰 상태 캐싱 및 관리를 위한 풍부한 기능을 제공합니다. 아래는 그 목록입니다.
보시다시피 NCache 이 기능을 사용하면 ASP.NET 뷰 상태를 서버에 캐싱하여 ASP.NET 성능을 최적화할 수 있습니다. 또한 캐시에서 ASP.NET 뷰 상태를 보다 효율적으로 관리할 수 있는 다양한 기능을 제공합니다. 이를 통해 복잡한 애플리케이션을 개발하고 이러한 기능을 활용하여 다양한 시나리오를 처리할 수 있습니다.