我们有一个多层次的Asp.NET Web Forms应用程序。数据层有一个名为的类,它实现了接口,并具有我们的Entity Framework对象上下文作为私有字段。该类有许多公共方法返回各种实体集合,并在被处理时处理其ObjectContext。
由于我们一直面临着许多问题,我们决定在服务器上保持ObjectContext(或一个的实例)更长时间会是一个很大的优势。建议将一个实例保存在此帖子中的HttpContext.Current.Items集合中以每个Http请求有一个实例。
我想知道的是:将ObjectContext的实例存储在对象中会出现什么问题/担忧/问题?
我们将使用AutoFac和ServiceProvider类来提供实例。当需要ObjectContext的实例时,它将由类似于此的代码返回:
欢呼。
由于我们一直面临着许多问题,我们决定在服务器上保持ObjectContext(或一个的实例)更长时间会是一个很大的优势。建议将一个实例保存在此帖子中的HttpContext.Current.Items集合中以每个Http请求有一个实例。
我想知道的是:将ObjectContext的实例存储在对象中会出现什么问题/担忧/问题?
- 我假设当用户会话过期时,会话对象将被终止并设置为垃圾回收,因此实例将被正确处置。
- 我假设大多数默认浏览器设置将允许我们的应用程序毫不犹豫地放置其SessionId cookie。
- ObjectContext将处理的数据量不是很大,对于我们的良好服务器硬件来说不会成为问题,关于随时间的缓存和相对较少的并发用户。
我们将使用AutoFac和ServiceProvider类来提供实例。当需要ObjectContext的实例时,它将由类似于此的代码返回:
private static Entities GetEntities(IContext context)
{
if (HttpContext.Current == null)
{
return new Entities();
}
if (HttpContext.Current.Session[entitiesKeyString] == null)
{
HttpContext.Current.Session[entitiesKeyString] = new Entities();
}
return (Entities)HttpContext.Current.Session[entitiesKeyString];
}
欢呼。