Poor man's cache
- 1 min read
Depuis la version 4 du framework .NET, la gestion d’un cache est profondement encrée dans l’adn de notre framework.
Il devient alors extrêmement facile de stocker en mémoire à peu près n’importe quoi.
Je vous livre dans ce court billet, une implémentation extrêmement simple que j’utilise souvent dans mes projets.
Commençons par définir une interface, qui nous permettra [d’injecter](http://blog.ploeh.dk/tags.html#Dependency Injection-ref) notre cache manager un peu partout :
public interface ICacheManager
{
T GetOrInsert(string key, Func callback) where T : class;
}
et finalement voici une implémentation extra simple de notre cache manager
public class CacheManager : ICacheManager
{
public T GetOrInsert(string key, Func callback) where T : class
{
ObjectCache cache = MemoryCache.Default;
if (cache.Contains(key))
return cache[key] as T;
T elmnt = callback();
cache.Add(new CacheItem(key, elmnt), new CacheItemPolicy());
return elmnt;
}
}
Voici un exemple d’utilisation.
IEnumerable
products = _cache.GetOrInsert("Ma_Clef_Unique_Cache",
() => { return _productService.GetFrenchProducts(); } );
Simple non?