2012-05-25 13 views
5

Uygulamamdaki bir şeyi önbelleğe almam gerektiğinde, Web.Caching.Cache'yi seçtim. Ama bunun yerine HttpApplicationState kullanan eski bir kodla karşılaştım.Web.Caching.Cache yerine HttpApplicationState kullanıldığında?

Web.Caching.Cache daha güçlü ve esnek olduğundan (ÇOK fazla görünüyor), HttpApplicationState kullanmak daha iyi bir durum var mı? Eğer

+0

Hiçbir zaman ApplicationState kullanamıyorum. Sanırım eski kod günlerinde (eski ASP günlerinde) – TGH

+0

@TGH http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx hala 4.0 adam – rhapsodyn

+0

Evet, sanırım hala orada, ama kullanmayı düşündüğüm bir zamanı hatırlayamıyorum. Ben düşünebildiğim tek avantajı asla sona ermez sanırım .... – TGH

cevap

13

:-) bana bazı örnekler gösterebiliriz eğer

Çok takdir edilecek Hem HttpApplicationState ve Web.Caching.Cache bir ASP.Net uygulama boyunca global erişim olabilir bilgileri saklamak için kullanılabilir. Ancak, çok farklı kullanım alanları var.

HttpApplicationState, genellikle değişmeyen uygulama verilerini depolamak için kullanılır. Uygulama başlatıldığında, genel olarak global.asax'ta Application_Start uygulamasında kullanılır. Ben şahsen fazla kullanmadım, ama genel olarak bir uygulamanın tüm kullanıcılarına genel olarak küçük uygulama yapılandırmalarını depolamak için kullanılan ve çok seyrek olmayan ya da değişmeyen bir şekilde değiştirdiğine inanıyorum. Uygulama durumu geri çevrilinceye kadar Uygulama durumuna getirilen bir şey süresiz olarak orada kalacaktır. Ancak, geri dönüştürüldüğünde ve yeniden başlatıldığında, Application_State yeniden çalışır ve yeniden doldurur.

Uygulama Durumu'nun bir tekil olduğunu ve iş parçacığı güvenli olmadığını unutmayın. Bu nedenle, değişiklik yaptığınızda, Application nesnesini Application.Lock() ve Application.UnLock() çağrıları aracılığıyla kilitlemeniz ve kilidini açmanız gerekir.

ASP.Net içeriğini önbelleğe almanın üç farklı yolu vardır: Sayfa düzeyi, kısmi sayfa ve veriler. Veri önbelleği hakkında konuşacağım, çünkü bunun sizin için en alakalı olduğunu düşünüyorum. ASP.Net önbellek, her istek için bir veri deposundan almak için pahalı olacak çok sayıda uygulama verisini depolamak için kullanılır. ApplicationState ve Cache arasındaki temel farklar şunlardır: 1) Önbellek verileri, bellekten çıkıp giderilmek üzere tasarlanmıştır. çeşitli tetikleyiciler veya koşullar tarafından (zaman, diğer önbellek bağımlılıkları, vb), uygulama geri dönene kadar ApplicationState sonsuza kadar orada olacak ve 2) Bir sunucu ciddi bellek basıncı yaşıyorsa, önbellek verileri bellekten temizlenebilir ve böylece Asla orada olmalarına güvenemeyebilir ve her zaman var olup olmadığını görmek için test etmeli, ApplicationState her zaman orada olacaktır.

Önbellek, her istekte bir veritabanından çekilmesi gerekmeyen uygulamaya daha yakın veri depolamak için kullanılır. Önbellek çok büyük miktarda veriyi depolamak için tasarlanmıştır ve akıllı bir önbellek mimarisi performans üzerinde muazzam bir pozitif etkiye sahip olabilir.

+0

Şimdi HttpApplicationState yerine Cache kullanabileceğime oldukça eminim, teşekkür ederim dostum – rhapsodyn

+5

.NET 4.0 veya üstünü kullanıyorsanız bir ASP.NET veya bir .NET projesinde System.Runtime.Caching.MemoryCache kullanın. http://msdn.microsoft.com/en-us/library/dd997357.aspx – bounav

İlgili konular