Обратите внимание, что «singleton» используется в немного необычном смысле - «объект, видимый как отдельный экземпляр, такой как HttpContext.Current», в отличие от обычного «объекта с одним общим экземпляром».1003 * класс для моих приложений asp.net MVC.Этот класс позволяет мне хранить пользовательские данные как строго типизированный объект сеанса.Я наткнулся на этот вопрос CodeReview и подумал, нужно ли беспокоиться о безопасности потоков в контексте этого приложения.
Вот упрощение моего кода:
public class UserContext
{
private UserContext()
{
}
public static UserContext Current
{
get
{
if (HttpContext.Current.Session["UserContext"] == null)
BuildUserContext();
return (UserContext)HttpContext.Current.Session["UserContext"];
}
}
private static void BuildUserContext()
{
if (!user.Identity.IsAuthenticated) return;
var uc = new UserContext { IsAuthenticated = true };
// ...snip...
// Set up user data
// Save it into the session
HttpContext.Current.Session["UserContext"] = uc;
}
#region Class members
public bool IsAuthenticated { get; internal set; }
public string Name { get; internal set; }
// ...snip...
// Other properties
public void Refresh()
{
BuildUserContext();
}
public void Flush()
{
HttpContext.Current.Session["UserContext"] = null;
}
#endregion
}
У меня пока не было проблем с блокировкой, но сейчас на сайте не очень высокий трафик.Должен ли я принять поточно-ориентированную модель Джона Скита или IIS справляется с этим для меня?