【发布时间】:2011-07-25 00:49:37
【问题描述】:
谁能给我一个详细的答案?
在 ASP.NET MVC 中使用无会话控制器有什么好处?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 controls session-less
谁能给我一个详细的答案?
在 ASP.NET MVC 中使用无会话控制器有什么好处?
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 controls session-less
如果您有一个无会话控制器,那么您将能够为来自同一浏览器实例的同时请求提供服务。否则,ASP.NET 将在收到请求时将它们排队,以便让它们按顺序访问 ASP.NET Session 对象,以避免死锁问题或其他竞争条件。
实际上,您可以同时向“Session-ful”控制器发出 1 个请求,并同时向“Session-less”控制器发出多个请求。这种模式在实现一个长时间运行的流程(通过“Session-ful”AsyncController 实现)时非常有用,该流程使用从客户端到“无会话”控制器的 AJAX 调用,该控制器为用户提供有关通过多远的更新服务器是长期运行的进程。
【讨论】:
一句话:可扩展性。如果您根本不使用会话,则意味着您的应用程序是无状态的,这很好。在网络农场场景中,您只需抛出另一台服务器,就可以准备处理站点的新负载。您还可以使用进程外会话(如 SQLServer 或 StateServer),并且该会话将在场的所有节点之间共享,但随后此状态服务器会成为整个站点的明智单点故障。
还有另一个关于会话的问题:因为会话不是线程安全的,如果有两个对同一会话的并行请求(想想 AJAX 调用)到写入会话的控制器操作,那么这两个请求将简单地排队并按顺序执行.
【讨论】: