Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 为什么在使用AppFabric时缓存对象存储在会话中?_Caching_C# 4.0_Appfabric - Fatal编程技术网

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

Caching 为什么在使用AppFabric时缓存对象存储在会话中?,caching,c#-4.0,appfabric,Caching,C# 4.0,Appfabric,今天我第一次去AppFabric-caching(又名Ms Velocity)并查看了msdn虚拟实验室 其中有一个我没有得到的代码示例。它创建一个缓存对象并将其存储在会话状态。文件只是说: 我们需要将缓存对象存储在 会话状态,并检索相同的会话状态 每次我们看到那个对象的实例 我们需要使用它 这不是我在ASP.NET中使用缓存的方式。这种模式的原因是什么?我必须使用它吗 private DataCache GetCache() { DataCache dCache; if (S

今天我第一次去AppFabric-caching(又名Ms Velocity)并查看了msdn虚拟实验室

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

我们需要将缓存对象存储在 会话状态,并检索相同的会话状态 每次我们看到那个对象的实例 我们需要使用它

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

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

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


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

看起来DataCacheFactory是一个错误的命名概念。。