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、缓存所有托管的对象,而且对于对象大小没有限制,没有本地缓存所需的序列化开销。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值