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

  • Kassem G

    Kassem G

    25 EKİM 2006
  • kndx

    kndx

    11 Mart 2006