使用Azure AppFabric缓存服务时的最佳做法?

时间:2012-02-23 13:12:01

标签: caching azure azure-appfabric

我已经成功开始使用Azure AppFabric缓存服务,但我不确定创建DataCacheFactory对象的最佳实践方法是什么。现在我为每次调用缓存创建它,但显然这不是理想的做法...

一些建议要求单身人士。但我不确定我是否理解这将如何实现(不是实际的Singleton类,而是如何将它们组合在一起)。

今天我有一个使用Ninject为我创建的CacheProvider类,我可以在其中执行Get / Put / Remove操作。对于这些方法中的每一个,我创建DataCacheFactory对象,然后调用.GetDefaultCache()来获取DataCache对象,我分别调用Put / Get / Remove。我这样做的方法如下:

private T Cache<T>(Func<DataCache, T> cacheAction)
{
    using (DataCacheFactory dataCacheFactory = new DataCacheFactory())
    {
        DataCache dataCache = dataCacheFactory.GetDefaultCache();
        return cacheAction(dataCache);
    }
}

我现在非常确定这不是那么聪明的想法,我应该通过Singleton获取DataCache对象,其中DataCacheFactory对象只创建一次。但是这个对象如何在请求之间存活?那怎么用&gt; Azure上的1个实例?

希望这一切都有道理,而且比我更有经验的人(3小时)可以帮助我。

1 个答案:

答案 0 :(得分:6)

Singleton对象存在于应用程序范围内。只需在全局静态级别声明私有DataCache对象,提供属性Get,如果该对象为null,则实例化该对象;如果该对象不为null,则返回该对象。

这样,每次应用程序回收时,您只需支付一次仪表配置和连接缓存的费用。

每个实例都将实例化自己的DataCache对象,这没关系。

存储缓存的实际数据不会存储在本地计算机的内存中,而是存储在Azure的分布式和超快速的专用缓存服务器中。