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

noo*_*yte 4 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这一切都有意义,而且比我更有经验的人(3个小时)可以帮助我.

Igo*_*rek 6

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

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

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

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