2010-06-07 41 views
0

当构建一个高可用性目标的ASP.NET MVC应用程序时,如果没有可用的状态服务器,在SQL Server上保持会话状态是一种很好的做法吗?高可用性ASP.NET MVC

回答

0

这里的关键点是你有2-3个web服务器,就像你在Craigs评论中提到的那样。

一种方法是使用SQL-server sessionstate,它有自己的问题http://idunno.org/articles/277.aspx

如果你有这个SQL-Server,我会很小心,因为sessionstate的数据库会对它施加很大的负载。每个请求都会写入数据库。

我们使用2个Web服务器和一个具有粘性会话的Loadbalancer。如果您的第一个请求在服务器1中结束,那么您的所有请求都由服务器1处理。(它有点复杂,但您明白了。)

这可能不是最好的解决方案,但至少在我们的网站(其用户通常停留20-30分钟的商店)效果很好。我们只使用一点SessionState,并拥有ProfileSystem存储的大部分用户特定内容。但我猜如果请求到不同的服务器,ProfileSystem也会失败。

0

我建议AppFabric Caching(f.k.a.速度)来代替。

+0

我需要使用一个现有的平台2-3 Web服务器和一个SQL服务器。 – Jay 2010-06-07 19:44:52

+0

也许你应该更新你的问题来包含你的所有需求。 – 2010-06-07 20:49:54

+0

但是,顺便提一下,AppFabric Caching被设计为可以与多个Web服务器一起工作,并且它比SQL缓存和粘滞会话都快,所以我不确定我看到了您的反对意见。 – 2010-06-08 13:00:32