Я пытаюсь использовать шаблон синглтона для хранения объектов сеанса для моего веб-приложения. Мне нужно посоветовать, если это самый эффективный способ сделать это.
Мое решение основано на исследовании, которое я провел над работой Джона Скита по этой теме.
private const string SESSION_SINGLETON = "SINGLETON";
private static readonly Lazy<SessionManager> lazy = new Lazy<SessionManager>(() => new SessionManager());
public static SessionManager Instance
{
get
{
SessionManager instance;
if (null == HttpContext.Current.Session[SESSION_SINGLETON])
{
instance = lazy.Value;
HttpContext.Current.Session[SESSION_SINGLETON] = instance;
}
else
{
instance = (SessionManager)HttpContext.Current.Session[SESSION_SINGLETON];
}
return instance;
}
}
private SessionManager()
{
}
public string UserId { get; set; }
public string OrganisationId { get; set; }
public void Dispose()
{
HttpContext.Current.Session.Remove(SESSION_SINGLETON);
}
}