Zarówno HttpApplicationState i Web.Caching.Cache może być używany do przechowywania informacji, które mogą być globalnie dostęp do całej aplikacji ASP.NET. Mają jednak bardzo różne zastosowania.
HttpApplicationState służy do przechowywania danych aplikacji, które zwykle się nie zmieniają. Zwykle jest zapełniany w Application_Start w global.asax, gdy aplikacja się uruchamia. Osobiście nie używałem go zbyt wiele, ale uważam, że zazwyczaj jest używany do przechowywania małych elementów konfiguracji aplikacji, które są globalne dla wszystkich użytkowników aplikacji i które nie zmieniają się ani nie zmieniają się bardzo rzadko. Coś wprowadzone w stan aplikacji pozostanie tam przez czas nieokreślony, aż aplikacja odzyska. Ale gdy ponownie uruchomi się i ponownie uruchomi, Application_State wykona ponownie i ponownie zapełni.
Należy zauważyć, że stan aplikacji jest jednolity i nie jest bezpieczny dla wątków. Dlatego po wprowadzeniu w nim zmian należy zablokować i odblokować obiekt aplikacji za pomocą wywołań Application.Lock() i Application.UnLock().
Istnieją trzy różne sposoby buforowania treści ASP.Net: poziom strony, częściowa strona i dane. Mam zamiar mówić o buforowaniu danych, ponieważ uważam, że jest to najbardziej istotne dla ciebie pytanie. Pamięć podręczna ASP.Net jest używana do przechowywania dużych ilości danych aplikacji, które byłyby kosztowne do pobrania z magazynu danych dla każdego żądania. Kluczowe różnice między ApplicationState i Cache to 1) Dane pamięci podręcznej mają wygasnąć i zostać usunięte z pamięci przez różne wyzwalacze lub warunki (czas, inne zależności z pamięcią podręczną, itp.), podczas gdy ApplicationState będzie tam na zawsze, aż aplikacja odzyska i 2) Dane pamięci podręcznej mogą być usunięte z pamięci, jeśli serwer doświadcza silnego nacisku pamięci, a zatem nigdy nie może liczyć na to, że on tam jest i musi zawsze sprawdzać, czy jest obecny, podczas gdy ApplicationState zawsze tam będzie.
Buforowanie służy do przechowywania danych w pobliżu aplikacji, które nie muszą być pobierane z bazy danych przy każdym żądaniu. Buforowanie jest przeznaczone do przechowywania bardzo dużych ilości danych, a inteligentna architektura buforowania może mieć ogromny pozytywny wpływ na wydajność.
Nigdy nie używam ApplicationState. Myślę, że jest to bardziej dla starego kodu (stare ASP dni) – TGH
@TGH http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx nadal w 4.0 człowiek – rhapsodyn
Tak, myślę, że nadal tam jest, ale nie pamiętam czasu, w którym rozważałem jego użycie. Sądzę, że jedyną korzyścią, o której mogę myśleć, jest to, że nigdy nie wygasa .... – TGH