3

我今天第一次接触 AppFabric - 缓存(又名 Ms Velocity)并查看了 msdn 虚拟实验室。

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

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

我们需要将缓存对象存储在 Session 状态中,并在每次需要使用它时检索该对象的相同实例。

这不是我过去在 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;
}
4

1 回答 1

1

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

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

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

于 2010-01-06T16:22:40.120 回答