2012-10-24 17 views
6

Basit bir tabloyu, tüm kullanıcıların paylaşacağı ASP.NET'teki sunucuda bellekte depolamanın basit bir yolu var mı? Örneğin basit bir sohbet programım var ve sadece son 100 kaydı hafızada tutmak istiyorum (bu gerçek bir uygulama değil, sadece bir örnek). Sadece 100 kayıt içeren bu sohbet tamponu olmaya adanmış SQL'de bir tablonun olmasını istemediğimi varsayalım. Bellek içi veri tablosu oluşturabilmem ve bağlı kullanıcılar arasında paylaşabileceğim bir yol var mı?Basit bir tabloyu ASP.NET'te bellekte saklar mı?

+0

neden bir tablo olması gerekiyor? Basit bir statik statik 'hakkında ne dersiniz? – paul

cevap

8

Kullanım Cache (MSDN)

Bir örnek uygulama alanı başına oluşturulur ve bunun sürece uygulama alanı açık kaldığı sürece geçerli kalır. Bu sınıfın bir örneği hakkında bilgi, HttpContext nesnesinin Cache özelliği veya Sayfa nesnesinin Cache özelliği aracılığıyla edinilebilir.

DataTable yourDataTable = new DataTable(); 
Cache["yourTable"] = yourDataTable; 

//to access it 
DataTable dt = Cache["yourTable"] as DataTable; 
2

Tüm kullanıcılar için bellek ve accesable şeyler saklamak için HttpApplicationState nesneyi kullanabilirsiniz: Burada

HttpContext.Current.Cache["MyTable"] = myTable; 

var a: (daha parçacığı güvenli olduğu)

HttpContext.Current.Application["MyTable"] = myTable; 

Ya Cache nesne Application and Cache hakkında iyi makale.

Önbellek ve Uygulama nesneleri oturum nesnesi daha geniş kapsamı sağlar ve veri ASP.NET uygulama içinde bütün sınıfları için kullanılabilir. Bu sınıfın

0

Evet, bu küresel önbellek olacaktır. Bunu yapmanın aşağı ve kirli yolu, değerleri depolamaktır Uygulama durumu. Temelde IIS çalıştıran sürece her zaman olduğu anahtar değer deposu.
Application["someKey"} = SomeObject;

bunu

var myObject = Application["someKey"];` 

çok daha şık çözümler vardır aynı şekilde `erişebilir, ancak bir miktar veri depolamak için gereken zaman, basit küresel şeyler için sizi alacak.

0

birçok seçenek, uygulama Önbellek tüm kullanıcılar arasında paylaşılıyor ve aynı ASP.NET uygulama havuzunun içindeki tüm oturumları, burada kontrol edin:

http://msdn.microsoft.com/en-us/library/6hbbsfk6(v=vs.100).aspx

başka seçenek bellekte bir kullanımı olabilir/gömülü veritabanı, gerçekten bir db gibi bir yaklaşım kullanmak istiyorsanız, SQL Server veya SQL Lite gibi bir şey.