连接到新的Azure缓存(DataCache,DataCacheFactory和连接池)

Sem*_*Zen 7 azure azure-caching

Windows Azure的缓存文件说:

如果可能,存储并重用相同的DataCacheFactory对象以节省内存并优化性能."

有没有人看到任何指标或任何量化这是多么昂贵?

一个论点是

"MaxConnectionsToServer设置...确定打开到缓存集群的每个DataCacheFactory的chennel数量."

因此,如果MaxConnectionsToServer = 1且DataCacheFactory是您应用中的单例,那么您已经有效地将所有请求同步到您的Web服务器!

然而, 一个 很多迹象表明DataCacheFactory应该是一个单身(即放在Application_OnStart)的.

这很关键,我无法相信它不在Microsoft文档中.DataFacheFactory在AppFabric,Azure共享缓存和Azure缓存中的处理方式是否相同?我很难相信微软以一种需要单件工厂对象的方式设计缓存.这就像要求任何使用SqlConnection的人在其应用程序中拥有单个SqlConnectionFactory对象一样.

因此,考虑到相对平均的Web应用程序(例如,每小时1,000个请求,缓存中约100个对象,平均请求访问5个缓存对象):

  1. 默认情况下(和推荐)一次应该有多少个Factory对象?
  2. 创建DataCacheFactory引用需要多长时间?
  3. 创建DataCache引用需要多长时间?
  4. 它们应该是每个应用程序只有1个DataCacheFactory对象,每个请求只有1个DataCache引用吗?

编辑(答案正在进行中):

(1/2).让Azure连接池处理Factory对象

(3).还在测试.​​.....

(4).仍然试图弄清楚我是否应该重新使用DataCache引用

Sem*_*Zen 11

那怎么样,微软确实记录了最佳实践,它确实涉及连接池!虽然不容易找到(至少对我而言).

似乎答案只是在实现较新的Azure缓存时不使用DataCacheFactory对象,而只是直接访问DataCache对象

"DataCache构造函数也有新的重载,使创建缓存客户端变得更简单.过去,始终需要创建一个返回目标缓存的DataCacheFactory对象.现在可以使用DataCache创建缓存直接构造函数.以下示例从配置文件的默认部分创建一个客户端到默认缓存."

DataCache cache = new DataCache();
Run Code Online (Sandbox Code Playgroud)

并使用连接池.

"使用最新的Windows Azure SDK,在应用程序或Web配置文件中定义缓存设置时,默认情况下会启用连接池.由于此默认行为,正确设置连接池的大小非常重要.连接池size使用dataCacheClient元素上的maxConnectionsToServer属性进行配置."

我希望Microsoft就如何正确配置maxConnectionsToServer提供一些指导,但这可以通过测试来确定.使用新的Azure缓存自动连接池非常酷:)