WCF后续之旅(9) 通过WCF双向通信实现Session管理[Part II]2011-01-03 cnblogs artech5、Session Management Service的实现现在我们来看看Session Management真正的实现,和我以前的例子不同,我不是把所有的实现都写在WCF service上,而是定义了另一个class来实现所有的业务逻辑:SessionManager。我们分析一下具体的实现逻辑。namespace Artech.SessionManagement.Service{ public static class SessionManager { private static object _syncHelper = new object();
internal static TimeSpan Timeout { get; set; }
public static IDictionary<Guid, SessionInfo> CurrentSessionList { get; set; }
public static IDictionary<Guid, ISessionCallback> CurrentCallbackList { get; set; }
static SessionManager() { string sessionTimeout = ConfigurationManager.AppSettings["SessionTimeout"]; if (string.IsNullOrEmpty(sessionTimeout)) { throw new ConfigurationErrorsException("The session timeout application setting is missing"); }
double timeoutMinute; if (!double.TryParse(sessionTimeout, out timeoutMinute)) { throw new ConfigurationErrorsException("The session timeout application setting should be of doubdle type."); }
Timeout = new TimeSpan(0, 0, (int)(timeoutMinute * 60)); CurrentSessionList = new Dictionary<Guid, SessionInfo>(); CurrentCallbackList = new Dictionary<Guid, ISessionCallback>(); }