使用AppFabric时,为什么缓存对象存储在会话中?

时间:2010-01-03 21:26:04

标签: caching c#-4.0 appfabric

我今天第一次去了AppFabric - 缓存(又名Velocity女士)并检查了msdn虚拟实验室。

https://cmg.vlabcenter.com/default.aspx?moduleid=4d352091-dd7d-4f6c-815c-db2eafe608c7

我有这个代码示例,我没有。它创建一个缓存对象并将其存储在会话状态中。文档只是说:

  

我们需要存储缓存对象   会话状态和检索相同   每次我们的那个对象的实例   需要使用它。

这不是我以前在ASP.NET中使用缓存的方式。这种模式的原因是什么,我必须使用它吗?

private DataCache GetCache()
{
    DataCache dCache;
    if (Session["dCache"] != null)
    {
        dCache = (DataCache)Session["dCache"];

        if (dCache == null)
            throw new InvalidOperationException("Unable to get or create distributed cache");
    }
    else
    {
        var factory = new DataCacheFactory();
        dCache = factory.GetCache("default");
        Session["dCache"] = dCache;
    }

    return dCache;
}

1 个答案:

答案 0 :(得分:1)

这是因为DataCacheFactory是一个很难创建的对象 - 您不希望每次要访问缓存时都创建它的实例。

他们在实验室中向您展示的是如何创建DataCacheFactory 一次的实例以获取DataCache实例,然后存储该DataCache实例在会话状态中,因此您可以在每次访问缓存时返回到该状态。

当然,这仍然意味着你要为每个用户创建一个DataCacheFactory 实例,我认为将它存储在Application状态会是一个更好的设计。