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

时间:2011-03-29 06:28:06

标签: asp.net-mvc asp.net-mvc-3 controls session-less

有人可以给我一个详细的答案吗?

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

2 个答案:

答案 0 :(得分:12)

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

实际上,你可以向'Session-ful'控制器发出1个请求,同时向'Session-less'控制器发出多个请求。这个模式对我实现一个长期运行的过程(通过'Session-ful'AsyncController实现)非常有用,从客户端到'无会话'控制器的AJAX调用,它为用户提供了关于多远的更新服务器长期运行的过程。

答案 1 :(得分:11)

总之一句话:可扩展性。如果您根本不使用会话,则意味着您的应用程序是无状态的,这很棒。在Web场方案中,您只需抛出另一台服务器,即可开始处理新站点的负载。您还可以使用进程外会话(如SQLServer或StateServer),并且会话将在服务器场的所有节点之间共享,但此状态服务器将成为整个站点的明智的单点故障。

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