它并没有明确地写在某个地方,但在读了几篇关于ASP的博客后,我感觉如此.NET MVC.只是有点好奇,想在这里问一下.

UPDATE:
I'm not asking about memory/storage/RAM concerns on server. For them, there is a solution to store session out of process. I know that. I'm curious that, are there any scenarios where we had to use Session in WebForms but we can avoid it now in MVC taking benefit of the nice structured way offered by MVC?

推荐答案

在ASP.NET Web表单,如果不使用会话,在不同页面之间传递信息从来都不是特别容易.由于以回发为中心的模式,信息作为事件的一部分在服务器上可用,但通常在错误的页面中显示结果,因此需要在页面之间传递信息.

这往往会导致会话的过度使用,在会话中填充"当前"变量,以指示与之交互的当前对象是什么.这种过度使用反过来又使应用程序非常依赖于状态,更难确定预期行为("这个变量是否已填充?""我有当前订单ID吗?").

MVC是围绕这样的理念构建的,即您的网站是进入信息逻辑模型的视图.它鼓励使用简单的控制器来响应操作,并将关键信息作为HTTP请求的一部分进行传递,从而鼓励有stateless个操作.

由于这些特性,会话不再需要在MVC中执行基本任务,并且在以前似乎是一个完全有效的 Select 的地方变得不适合.


基本上是session pollutes HTTP.它使请求(通常包含它们自己的状态)依赖于接收服务器的内部状态.这就是为什么它被视为一种邪恶(尽管通常是一种实际和必要的邪恶).

Asp.net相关问答推荐

AJAX返回未定义、失败

IISExpress未在ARM64 Mac/.NET 4.8上启动

带有模型的 mvc 上传文件 - 第二个参数发布的文件为空

如何将 JQuery 与母版页一起使用?

某些黑客能否从用户那里窃取 Web 浏览器 cookie 并在网站上使用该名称登录?

如何为发布模式设置调试错误

ASP.NET Response.Redirect 使用 302 而不是 301

ASP.NET MVC4 jquery/javascript 包的使用

如何在 ASP.NET Web 窗体中使用依赖注入

HttpModules 的执行顺序是如何确定的?

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

嵌套剃刀模板中的@RenderSection

ASP.NET 中的 <%# Bind("") %> 和 <%# Eval("") %> 有什么区别?

在 aspnetcore (netcoreapp1.0) 中替代 System.Web.Security.Membership.GeneratePassword

如何在不预编译的情况下使用命令行msbuild部署VS2012网站项目?

如何删除asp.net中的特定会话?

Windows Azure PaaS(网络角色)的真正替代品?

asp.net 网站上的第一页加载缓慢

有没有办法在没有异常类的情况下抛出自定义异常

Unity 中的单例每个调用上下文(Web 请求)