Poor man's cache
Publié par Fabrice Michellonet sous le(s) label(s) .NET , Cache , Dependency Injection le 4 avril 2014Depuis 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 notre cache manager un peu partout :
public interface ICacheManager { T GetOrInsert<T>(string key, Func<T> callback) where T : class; }
et finalement voici une implémentation extra simple de notre cache manager
public class CacheManager : ICacheManager { public T GetOrInsert<T>(string key, Func<T> 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<Product> products = _cache.GetOrInsert("Ma_Clef_Unique_Cache", () => { return _productService.GetFrenchProducts(); } );
Simple non?
0 commentaires:
Enregistrer un commentaire