Я разрабатываю приложение для блога, которое предоставляет некоммерческие организации. Я хочу, чтобы каждая организация могла изменять свои собственные настройки блога. Я взял шаблон singleton (из BlogEngine.net) и изменил его. (Я понимаю, что это уже не одноэлементный шаблон.) Я протестировал этот подход и, похоже, отлично работает в среде разработки. Является ли эта модель хорошей практикой? Существуют ли проблемы, которые могут возникнуть, когда они помещаются в производственную среду?Является ли этот модифицированный C# singleton образцом хорошей практикой?
public class UserBlogSettings
{
private UserBlogSettings()
{
Load();
}
public static UserBlogSettings Instance
{
get
{
string cacheKey = "UserBlogSettings-" + HttpContext.Current.Session["userOrgName"].ToString();
object cacheItem = HttpRuntime.Cache[cacheKey] as UserBlogSettings;
if (cacheItem == null)
{
cacheItem = new UserBlogSettings();
HttpRuntime.Cache.Insert(cacheKey, cacheItem, null, DateTime.Now.AddMinutes(1),
Cache.NoSlidingExpiration);
}
return (UserBlogSettings) cacheItem;
}
}
}
(части кода были опущены для краткости.)
Спасибо за любую помощь, комментарии и т.д.
Это по организации пользователя (в отличие от пользователя) - так организация хуг может иметь много пользователей на сайте одновременно просматривать свой блог , –
@geri Это имеет смысл. Помимо отливки, это неплохо. Вы уверены, что хотите только его кешировать в течение минуты? Рассмотрим время жизни объекта при создании/вставке его в кеш. – Will
Спасибо за предложение кастинга - одноминутный кеш предназначен только для разработки. Как насчет статического экземпляра? Любые проблемы с этим? –