状态服务器还是SQL服务器?
- 存储 ASP.NET 会话变量的最佳解决方案是什么?
- 各自的优点和缺点是什么?
- 在任何特定情况下,一个比另一个更好吗?
以下是一些关于优点/缺点的想法。
我还添加了 Microsoft Velocity 分布式缓存解决方案。
InProc 的优点
- 最快的可用选项(全部位于内存/RAM 中)
- 易于设置(.config 文件中不需要任何新内容..我认为这是默认行为)。
- 我相信大多数人都使用这个。
InProc 的缺点
- 如果网站(应用程序池)挂掉,那么所有会话信息都会丢失。
- 在 WebFarm 场景中不起作用 -> 会话信息仅适用于每个应用程序池。
- 不能包含非会话信息。
StateServer 的专业版
- 在内存/RAM 中,所以它很快(但有一些网络延迟..请阅读下文),因此它可能不如 Inproc 快。
- Web 场场景的默认配置。多个 iis 站点使用状态服务器来控制状态会话信息。
StateServer 的缺点
- 需要将 ASP.NET StateServer 服务设置为运行。
- StateServer 需要一些配置调整才能接受“远程 iis 机器”请求。
- 如果 iis 请求需要在另一台联网计算机上获取/设置会话信息,则会出现一些微小的网络延迟。
- 不能包含非会话信息。
Sql Server 的优点(作为状态服务器)
Sql Server(作为状态服务器)的缺点
- 最慢的解决方案 -> 网络延迟和硬盘延迟(因为 SQL Server 将状态存储在硬盘上/从硬盘读取)。
- 最难设置/配置。
- 不能包含非会话信息
Velocity(或其他分布式缓存系统)的专业版
- 可以处理的不仅仅是会话信息 -> 对象、应用程序设置、缓存等(在我看来,这是一件非常好的事情!!)
- 可以仅是内存或持久保存到数据库。
- 如果一个“节点”发生故障,系统仍然可以工作。 (假设有2个以上缓存节点)
Velocity(或其他分布式缓存系统)的缺点
- 一般花费$$$
- 最难设置(必须安装东西,调整配置,添加额外的特殊代码)。
- 有网络延迟(通常没什么),但如果服务正在保存数据(例如保存到 Sql Server),则可能有硬盘延迟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)