WindiwsAzure下使用Cache服务共享Session的方法
来源:互联网 发布:制作动画片的软件 编辑:程序博客网 时间:2024/05/29 05:56
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、缓存所有托管的对象,而且对于对象大小没有限制,没有本地缓存所需的序列化开销。
- WindiwsAzure下使用Cache服务共享Session的方法
- 多域名情况下使用memcache方式共享session数据的实现方法
- 集群下的session共享
- Cache的封装和使用,用Cache代替Session
- linux使用nfs、portmap服务共享远程磁盘的方法
- django 中ajax、session、cache的使用
- 使用.Net下的全局程序集共享缓存(Globe Assembly Cache GAC)详细攻略
- ASP.NET Web Api中使用Session、Cache和Application的几个方法
- Linux下Cache的使用
- .NET环境下使用Session、ViewState、Cache等
- 在Linux下使用samba来mount Windows文件共享服务共享的目录
- Linux 下tomcat的session共享
- 集群下session共享问题的解决方案.
- 多服务器共享session的方法
- 四种多服务器共享session的方法
- 多服务器共享session的方法
- 四种多服务器共享session的方法
- 多服务器共享session的方法
- 检测iphone是否有网络
- tapestry+spring+hibernate 用maven整合(一:maven篇)
- Oracle面试题
- #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER);
- 关系型数据库方面知识学习
- WindiwsAzure下使用Cache服务共享Session的方法
- Radio1 类向导没有ID
- 在AsyncTask中使用Dialog出现的问题
- 实习日记046(9月26日)
- 求n的下一个符合2的m次方的数
- 对于HDFS中元数据的一些疑问,欢迎大家讨论
- 推荐引擎文章介绍
- js控制行列宽度
- Gcc详解以及静态库、动态库生成