Je développe une application Web utilisant asp.net mvc.Liste <T> sur le cache (opérations de sécurité)
J'ai une liste en cache (Liste de la classe de produit de mon modèle). Donc, je fais des opérations CRUD sur cette liste en cache. Je sais que HttpContext.Current.Cache est typeSafe mais la liste non. J'aimerais savoir, quelle est la meilleure façon de faire en sorte que mes opérations soient sûres pour éviter les conflits?
Mon code sont quelque chose comme ceci:
public static class ProjectCached {
const string key = "ProductList";
// my cached list
public static IList<Product> Products {
get {
if (HttpContext.Current.Cache[key] == null) {
HttpContext.Current.Cache.Insert(key, /* get data from database */, ...);
}
return (List<Product>)HttpContext.Current.Cache[key];
}
}
// my methods (operations on cached list)
public static void Increase(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
item.Prince += 1;
item.LastUpdate = DateTime.Now;
}
}
public static void Remove(long id) {
var item = Products.FirstOrDefault(x => x.Id == id);
if (item != null) {
Products.Remove(item);
}
}
// others methods
}
Je vais avoir beaucoup d'utilisateurs d'écriture sur cette liste mise en cache en même temps ...
Je sais que je peut utiliser le mot clé "lock" mais où dois-je mettre cela? Sur mon objet trouvé? sur ma liste?
merci
Pourquoi cachez-vous réellement ces objets en mémoire? Comment éviter toute perte de données lorsque l'AppDomain est déchargé (ou que votre ordinateur tombe en panne?). – Steven