SORU
5 Aralık 2008, Cuma


Nasıl bir MVC uygulamada önbellek veri için

Sayfa önbelleğe alma ve kısmi sayfa MVC uygulaması önbelleğe alma hakkında bir sürü bilgi okudum. Ancak, veri önbelleği nasıl bilmek istiyorum.

Benim senaryoda Varlıklar bu SERİ (varlık çerçevesi) kullanarak olacaktır. GetNames (ya da yöntemi ne olursa olsun) ilk çağrı üzerine veritabanından veri kapmak istiyorum. Eğer varsa, önbelleğe alınmış sürümünü kullanmak için ikinci çağrı önbellek ve sonuçları kaydetmek istiyorum.

Herkes bu (model?) hayata geçirilmesi gereken bir iş, nasıl bir örnek gösterebilir ve eğer işe yarayıp yaramadığını.

Bu işi genellikle çok statik veri için geleneksel ASP.NET uygulamalar gördüm.

CEVAP
8 Aralık 2008, PAZARTESİ


Burada kullandığımız güzel ve basit önbellek yardımcı sınıfı/hizmet:

using System.Runtime.Caching;  

public class InMemoryCache: ICacheService
{
    public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
    {
        T item = MemoryCache.Default.Get(cacheKey) as T;
        if (item == null)
        {
            item = getItemCallback();
            MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
        }
        return item;
    }
}

interface ICacheService
{
    T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}

Kullanımı:

cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));

Önbellek sağlayıcı kontrol edecek birşey varsa, adı "cache ıd" önbellek ve eğer yoksa, o Ara bir temsilci yöntemi için veri getirme ve mağaza içinde önbellek.

Örnek:

var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Air_Fooj

    Air_Fooj

    24 NİSAN 2009
  • jat4011

    jat4011

    16 EKİM 2010
  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010