5

谁能给我一个详细的答案?

在 ASP.NET MVC 中使用无会话控制器有什么好处?

4

2 回答 2

12

一言以蔽之:可扩展性。如果您根本不使用会话,则意味着您的应用程序是无状态的,这很好。在网络农场场景中,您只需抛出另一台服务器,您就可以处理站点的新负载。您还可以使用进程外会话(如 SQLServer 或 StateServer),该会话将在场的所有节点之间共享,但随后此状态服务器将成为整个站点的明智单点故障。

会话还有另一个问题:因为会话不是线程安全的,如果同一会话(想想 AJAX 调用)对写入会话的控制器操作有两个并行请求,那么这两个请求将简单地排队并按顺序执行。

于 2011-03-29T06:48:08.507 回答
12

如果您有一个无会话控制器,那么您将能够为来自同一浏览器实例的同时请求提供服务。否则,ASP.NET 将在收到请求时将它们排队,以便为它们提供对 ASP.NET Session 对象的顺序访问,以避免死锁问题或其他竞争条件。

实际上,您可以同时向“Session-ful”控制器发出 1 个请求,并同时向“Session-less”控制器发出多个请求。这种模式在实现一个长时间运行的流程(通过“Session-ful”AsyncController 实现)时非常有用,该流程使用从客户端到“无会话”控制器的 AJAX 调用,该控制器为用户提供有关通过多远的更新服务器是长期运行的进程。

于 2011-03-29T06:52:41.207 回答