WindiwsAzure下使用Cache服务共享Session的方法

 

WindiwsAzure下使用Cache服务共享Session的方法

    在WindowsAzure上发布多实例的WebRole(即:WebRole的InstanceCount大于1)后,由于Azure的负载平衡程序会循环调用多个实例,所以,一般的默认存储在内存中的Session将出现混乱而直接导致应用程序瘫痪。

    为了解决该问题,可以把Session存储在SQL Azure中,来达到多个实例共享Session的目的。但是,在此笔者提供另外一种存储Session的方式:使用AppFabric Cache服务存储Session。

    操作步骤如下:

1、开通AppFabric Cache服务。

    访问http://portal.appfabriclabs.com 这个CTP门户,在门户上选择“Cache”(缓存)选项,然后单击“New Namespace”(新命名空间)创建新的缓存。在弹出的对话框中设置唯一的服务命名空间和缓存大小,确定后即可开通。然后,会得到一个Service URL(服务URL)和Authentication Token(身份验证令牌)。服务 URL 是您的应用程序与 Caching 服务交互时要连接的 TCP 终结点。 身份验证令牌是要传递到 Access Control 的加密令牌,用于验证您的服务。

 

2、在Azure项目的WebRole中,添加AppFabric SDK提供的所有程序集。

这些程序集包括:

Microsoft.ApplicationService.Caching.Client

Microsoft.ApplicationService.Caching.Core

Microsoft.Web.DistributedCache

Microsoft.WindowsFabric.Common

Microsoft.WindowsFabric.Data.Common

 

3、修改Web.config文件使应用程序启用AppFabric Cache。

    使 <configuration> 元素之后紧跟 <configSections> 和 <dataCacheClient> 元素(如果紧跟的是别的元素,您将收到错误)。

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true"   allowDefinition="Everywhere"/>
  </configSections>
  <dataCacheClient>
    <hosts>
      <host name="YOURCACHE.cache.windows.net" cachePort="22233"/>
    </hosts>
    <securityProperties mode="Message">
      <messageSecurity authorizationInfo="YOURTOKEN" />
    </securityProperties>
  </dataCacheClient>


  
</configuration>


 

4、修改Web.config文件使应用程序的Session存储在Cache服务中。

<?xml version="1.0"?>
<configuration>


  <system.web>
  <sessionState mode="Custom" timeout="20" customProvider="AppFabricCacheSessionStoreProvider">
    <providers>
      <add name="AppFabricCacheSessionStoreProvider"
           type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
           cacheName="default"/>
    </providers>
  </sessionState>
  </system.web>
  
</configuration>

 

    到此,已经完成把Session存储在Cache服务所需要的所有设置步骤,现在再存储Session,Session的值就已经保存在Cache服务中,并可以在多个实例间共享了,读者可以自己创建例子测试,在此不再赘述。

    在Cache服务中,既然可以存储Session的值,当然可以存储应用程序所有想存储的值,比如:用户的登录名,计算的中间结果等等。具体的操作示例如下:

        static void Main(string[] args)
        {
            DataCacheFactory dataCacheFactory = new DataCacheFactory();
            DataCache dataCache = dataCacheFactory.GetDefaultCache();
            Console.Write("Enter a value: ");
            string value = Console.ReadLine();
            dataCache.Put("key", value);
            string response = (string)dataCache.Get("key");
            Console.WriteLine("Your value: " + response);
        }


 

最后,总结Caching 服务为开发人员提供的功能有:

1、针对会话状态和页面输出缓存的预置 ASP.NET 提供程序,使您无需修改应用程序代码即可加速 Web 应用程序。

2、缓存所有托管的对象,而且对于对象大小没有限制,没有本地缓存所需的序列化开销。

 


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值