为本地开发设置azure缓存客户端

时间:2012-11-27 22:13:04

标签: .net caching azure

我的网站在我的web.config中设置了这样的设置:

<dataCacheClients>
    <dataCacheClient name="default">
      <hosts>
        <host name="mysite.cache.windows.net" cachePort="22233" />
      </hosts>

      <securityProperties mode="Message">
        <messageSecurity
          authorizationInfo="{key}">
        </messageSecurity>
      </securityProperties>
    </dataCacheClient>
  </dataCacheClients>

我想编辑这个,所以当我在我的笔记本电脑上进行开发时,我没有点击生产缓存,而是在我的笔记本电脑上使用缓存。

对谷歌来说这是一个难题(至少对我而言),因为“azure cache local”会在网络角色上进行缓存。

2 个答案:

答案 0 :(得分:4)

看起来您正在使用Windows Azure共享缓存,并且您希望在开发时使用一些本地缓存。

在系统中使用抽象缓存层可能更好,这样您就可以在云和本地之间切换缓存,而不是更改配置。例如,要使用ICacheGetItem等方法来创建SetItem之类的接口。然后,您可以在内存缓存中使用此接口实现一些类以进行本地开发,和Azure Cache用于生产。

在GitHub上有一个名为ServiceStack的项目包含了一些你可以参考的缓存实现https://github.com/ServiceStack/ServiceStack.Contrib/tree/master/src

或者,您可以使用新的云服务缓存,它仅为您的云服务(Web角色和工作人员角色)提供共置/专用缓存群集。它具有完整的本地仿真器支持,这意味着您无需在本地开发(使用本地缓存仿真器)和生产之间更改任何代码和任何配置。

有关此Cloud Service缓存的详细信息,请参阅https://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

答案 1 :(得分:2)

一种选择是使用Web.config Transformations更改每个部署的配置文件。我不是那方面的专家,但你可以用谷歌来解决这个问题。

另一种选择是在代码中配置缓存。然后,您可以轻松更改每个环境的.cscfg文件中的设置。以下是代码中的基本配置示例:

DataCacheFactoryConfiguration cacheConfig = new DataCacheFactoryConfiguration();

//Insert the Authentication Token as shown below
cacheConfig.SecurityProperties = new DataCacheSecurity(config.AuthToken, config.UseSSL);

int cachePort = (cacheUseSSL ? 22243 : 22233);
cacheConfig.Servers = new DataCacheServerEndpoint[] { new DataCacheServerEndpoint(cacheHostName, cachePort) };
cacheConfig.RequestTimeout = TimeSpan.FromSeconds(1);
cacheConfig.ChannelOpenTimeout = TimeSpan.FromSeconds(45);
cacheConfig.MaxConnectionsToServer = config.MaxConnections;
cacheConfig.TransportProperties.ReceiveTimeout = TimeSpan.FromSeconds(30);
cacheConfig.TransportProperties.ChannelInitializationTimeout = TimeSpan.FromSeconds(10);

var cacheFactory = new DataCacheFactory(cacheConfig);