Conservo le sessioni in SessionManager . Il gestore della sessione ha una dipendenza da ISessionPersister .
SessionManager
private readonly ISessionPersister sessionPersister;
public SessionManager(ISessionPersister sessionPersister)
{
this.sessionPersister = sessionPersister;
}
ISessionPersister
public interface ISessionPersister : IDisposable
{
void PersistSessions(Dictionary<string, ISession> sessions);
}
D: Se la mia applicazione chiude come / dove chiamo PersistSessions ? Chi è il responsabile?
Primo approccio: usa Dispose in SessionManager
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (this.sessionPersister != null && this.sessionMap != null && this.sessionMap.Count > 0)
{
this.sessionPersister.PersistSessions(this.sessionMap);
}
}
}
È la strada da percorrere o ci sono soluzioni migliori?