2010-05-11 2 views
4

내 전역 변수와 데이터의 경우 HttpApplicationState 또는 Static 변수 중 어떤 것을 사용할지에 대한 딜레마에 빠져 있습니다. 무엇이 최선의 방법입니까?ASP.Net 응용 프로그램에서 전역 변수를 사용하는 가장 좋은 방법은 무엇입니까?

이 문서는 하나 httpapplicationstate을 통해 정적 변수를 사용해야 상태 : http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607

그러나 한 가지 내가 HttpApplicationState (및 System.Web.Caching.Cache)에 대해 좋아, 하나는 쉽게 항목을 열거 할 수 있다는 것입니다 제거 할 항목을 선택하십시오 (이 목적을 위해 전역 CacheManager.axd를 작성했습니다). 반면 정적 변수는 쉽게 사용할 수있는 방법이 없다고 생각합니다 (그리고 심지어는 다시 초기화 할 필요가 없습니다).), 응용 프로그램 풀을 재활용하지 않고.

글로벌 개체를 다루고 관리하기위한 깔끔한 범용 방법에 대한 제안 사항은 무엇입니까?

감사합니다.

답변

1

본능이 맞습니다. System.Web.Caching을 사용하십시오. 내장 된 캐시 관리 기능은 메모리 할당 및 부실하거나 우선 순위가 낮은 객체 만료와 관련하여 모든 과중한 작업을 처리합니다.

캐시 키의 이름 지정 규칙을 반드시 준수해야합니다. 캐싱에 크게 의존하기 시작하면 이름별로 여러 캐시 키를 대상으로 필터링하거나 필터링 할 수 있어야합니다.

0

일반적으로 가능하면 웹 응용 프로그램의 전역 상태를 피하는 것이 좋습니다. ASP.NET은 여러 요청이 동시에 처리 될 수있는 다중 스레드 환경입니다. 전역 상태가 변경 불가능한 경우 (읽기 전용) 공유 가변 상태를 관리하는 문제를 처리해야합니다.

공유 상태가 불변이고이고 열거 할 필요가 없다면 정적 변수에는 아무런 문제가 없습니다.

공유 상태/휘발성 변경할 경우,은 그때는 아마 일관성과 준수가 공유 상태의 액세스 및 수정을 보장하기 위해 데이터를 저장할 선택 underlyig 중 메커니즘의 상단에 추상화를 만들 그것을 소비하는 코드의 기대치. 아마도 캐싱 서비스에 내장 된 만료 및 종속성 기능을 활용할 수 있도록 시스템 디자인과 같은 시스템 캐시를 사용해야 할 것입니다.

관련 문제