我已成功开始使用 Azure AppFabric 缓存服务,但我不确定创建 DataCacheFactory 对象的最佳实践方法是什么。现在我正在为每次调用缓存创建它,但显然这不是理想的方法......
有些人建议使用 Singleton。但我不确定我是否理解这是如何实现的(不是实际的 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 对象仅创建一次。但是该对象如何在请求之间生存? Azure 上有 > 1 个实例时,这如何工作?
希望这一切都是有道理的,并且比我更有经验的人(3小时)可以帮助我。
单例对象存在于应用程序范围内。只需在全局静态级别声明您的私有 DataCache 对象,提供一个属性 Get,如果该对象为 null,则实例化该对象;如果该对象不为 null,则返回该对象。
这样,您只需在每次应用程序回收时支付一次检测配置和缓存连接的成本。
每个实例都会实例化自己的DataCache对象就可以了。
存储缓存的实际数据并不存储在本地计算机的内存中,而是存储在分布式且速度超快的 Azure 专用缓存服务器中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)