是否可以将一个web应用程序分离到具有不同用途的多台计算机,共享同一会话



我正在寻求建议、帮助,或者如果你能提供帮助,我会给出"你不能那样做"的答案。

我是一个.NET开发团队的成员,使用.NET 4.0并运行MVP中的web应用程序。现在,我们有一个由4个IIS盒子组成的web场,运行Win2K3和IIS 6(明年升级),F5 BigIP设备正在使用粘性会话来跨越所有四个盒子的流量。由于它的成功,我们的应用程序在规模和范围上都在扩大。我向你保证,这是一个很好的问题。然而,我们正在经历成长的痛苦。我们希望在当前使用的4台机器上保留事务性工作(通过各种web表单添加/编辑/删除),然后添加另外2台机器来处理报告/度量的工作负载。

以下是我们想要做的:

  1. 使用可用于此操作的Oracle.Web.dll对象类将会话状态放入我们的Oracle数据库中,并针对我们的Oracle 11g DB运行.SQL文件以正确设置会话。因此,如果一个盒子死了,会话数据就会持续存在。

  2. 设置我们的web.config,以便在所有4个当前框中使用会话提供程序的Oracle数据库。

到目前为止还不错。这是相当基本和可重复的。不用担心。以下是我陷入困境的地方:

  1. 我们想为这个应用程序提取报告ASPX文件,并将它们放在两个不同的(新的)IIS盒子上(现在总共有6个),F5 BigIP只在这两个盒子上进行负载平衡,以便使用粘性会话进行报告。剩下4个用于OLTP事务性工作,不进行报告。

  2. 不知怎的,在某种程度上,我们希望使用我们在上面创建的相同会话存储来附加到仅运行报告机制的2个IIS框,跟踪用户的会话,而不必重复登录/身份验证/授权,并用他们运行报告的用户权限填充安全类。报告是应用程序的一部分,但它只会处理报告部分,并且只有该代码会被放到2台新机器上。如果当前用户的会话仍然有效,并且我们可以访问它,它可以独立运行

这几乎就像我们想要一个分布式应用程序结构,其中不同的IIS服务器运行web应用程序的不同部分,但共享会话状态。

有人碰到这样的东西吗?这可能还是不可能?或者有更好的选择吗?感谢你所能提供的一切帮助。

你绝对可以做到这一点。您必须为每个应用程序提供相同的machineKey。从这里开始:http://support.microsoft.com/kb/2527105这里:简单的bing查询

最新更新