StateServer还是SQLServer?


存储ASP.NET会话变量的最佳解决方案是什么?
各自的优缺点是什么?
在任何特定情况下,一个比另一个好吗?

最佳答案

这是关于专业人士/专业人士的一些想法。
我还添加了Microsoft Velocity分布式缓存解决方案。
InProc的优点

最快的可选选项(全部在内存/内存中)
易于设置(.config文件中没有任何新要求。我认为这是默认行为)。
我相信大多数人都使用此功能。

InProc的缺点

如果网站(应用程序池)死亡,则所有会话信息都会丢失。
在WebFarm方案中不起作用->会话信息仅针对每个应用程序池。
不能包含非会话信息。

Pro for StateServer

在内存/内存中,它速度很快(但有一些网络延迟..在下面阅读),因此它可能不如Inproc快。
Web服务器场方案的默认配置。多个iis站点使用状态服务器来控制状态会话信息。

骗子的StateServer

需要将ASP.NET StateServer服务设置为运行。
StateServer需要进行一些配置调整,以接受“远程iis机器”请求。
如果iis请求需要在另一台联网计算机上获取/设置会话信息,则网络延迟会很小。
不能包含非会话信息。

Pro for SqlServer(作为状态服务器)

即使iis站点重新启动,状态也始终保留。

缺点的SqlServer(作为状态服务器)

最慢的解决方案->网络延迟和硬盘驱动器延迟(因为sql服务器将状态存储在硬盘上/从硬盘读取)。
最难设置/配置。
不能包含非会话信息

Pro for Velocity(或其他分布式缓存系统)

不仅可以处理会话信息->对象,应用程序设置,缓存等。(这是IMO非常好的东西!!)
只能是内存,也可以保留到数据库。
如果一个“节点”发生故障,则系统仍然可以工作。 (假设有2个以上的缓存节点)

速度的骗局(或其他分布式缓存系统)

一般费用$$$
最难设置(必须安装内容,调整配置,添加额外的特殊代码)。
具有网络延迟(通常没有任何延迟),但是如果服务保留数据(例如到Sql Server),则可能具有硬盘延迟。

09-11 01:24