我已阅读《Azure in Action》一书中的以下内容: “在 Windows Azure 中,状态服务器或进程外 session 状态提供程序, 不支持”
谁能告诉我为什么不支持这个。他们在书中没有解释。我本以为我可以运行状态服务器,并且所有 Web 角色都可以使用它来读取 session 数据。 谢谢各位的回复
最佳答案
Windows Azure 具有 AppFabric 缓存,非常适合 session 存储。该项目于大约两周前上线。您可以在我的 StackOverflow 答案 here 中查看详细信息和 here .
关于缺乏状态服务器,我无法给您一个绝对的答案,除了直到最近,Web 角色在托管 Web 核心而不是完整 IIS 下运行,这可能会对提供状态服务器产生影响。此外,由于所有 Web 角色实例都是等效的,因此您如何指定哪个是状态服务器?如果 Windows Azure 回收该实例会发生什么?我认为这会是一个很头疼的问题。
借助 AppFabric 缓存解决方案,这是缓存即服务,完全独立于您的角色实例,并为您进行管理。您只需获取一个端点,附加到缓存,然后对名称/值对执行 put 和 gets 即可。通过 Azure 门户,您单击一个“客户端配置”按钮,就会为您生成一个神奇的 xml block - 您将其放置在 web.config 中,现在您拥有一个自定义 session 状态提供程序,用于存储/检索 session 数据缓存。
编辑:关于使用 SQL Azure 进行 session 状态:SQL Azure 没有 SQL 代理,因此您不会有后台作业定期清除缓存。有一个MSDN blog post展示如何让 SQL Azure 作为 session 状态提供程序工作(并使用辅助角色后台进程来执行 session 清理)。不过,我仍然推荐 AppFabric 缓存解决方案。
关于Azure session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970396/