Ism*_*ilS 41 asp.net asp.net-mvc
它没有明确地写在某处,但在阅读了几篇关于ASP.NET MVC的博客之后,我感觉如此.只是好奇并想到这里问它.
更新:
我不是在询问服务器上的内存/存储/ RAM问题.对于他们来说,存在一个解决方案来存储会话进程.我知道.我很好奇,有没有我们不得不在WebForms中使用Session的情况,但我们现在可以在MVC中避免使用MVC提供的漂亮的结构化方式吗?
Pau*_*ner 42
在ASP.NET Web窗体中,如果不使用会话,在不同页面之间传递信息从未如此简单.由于以回发为中心的模型,服务器上的信息作为事件的一部分可用,但通常在错误的页面中显示结果,在必要的页面之间传递信息.
这往往导致过度使用会话,在会话中填充"当前"变量,旨在指示当前与之交互的对象是什么.这种过度使用反过来使应用程序非常依赖于状态,并且更难以确定预期的行为("这个变量是否已填充?""我是否还有当前的订单ID?").
MVC的构思围绕着您的网站是一个信息逻辑模型的视图.它鼓励通过使用简单的控制器来响应无状态操作,这些控制器响应具有作为HTTP请求的一部分传递的密钥信息的动作.
由于这些属性,不再需要会话来执行MVC中的基本任务,并且在以前它似乎是完全有效的选择之前变得不合适.
从根本上说,会话污染了HTTP.它使请求(通常包含它们自己的状态)取决于接收服务器的内部状态.这就是为什么它被视为邪恶的东西(虽然通常是一个实际和必要的).
Pao*_*lla 15
甚至在MVC之前就避免了会话,因为对于连接到您的应用程序的每个用户而言,它在服务器上持久保存的信息(与缓存不同)在不使用时不会自动擦除.
另外,为了帮助您避免使用会话,ASP.NET具有viewstate,这实际上是您的webforms中一个巨大的隐藏字段,在每次回发时都会发布POST.由于各种原因,这也太笨拙了,而且随着MVC而被淘汰.
因此,即使在MVC之前,会话实际上并不是非常推荐的.原因主要是可扩展性.您坚持的状态越少,您的网站就越具有可扩展性.如果您不关心可伸缩性(我知道您可能正在为200个用户开发内部网应用程序),或者如果您通过各种方式持有的信息很少,请使用会话.在其他情况下,使用会话是完全合适的:使用会话状态的典型场景是电子商务网站中的购物车(信息本身就是每个用户每个会话,并且实际上只有一部分用户已填充).
至于替代方案,没有直接的替代会话.根据您尝试的操作,您可以使用缓存或Cookie.在这方面,MVC没有带来任何特别新的东西,AFAIK.
避免为您使用会话状态意味着什么?您是否需要在请求中方便地存储少量用户数据?如果是这样,你会怎么做呢?
我不确定会话状态的替代方案是什么.使用会话状态,开箱即用,在ASP.NET中更适合滚动自己的替代方案,尤其是从安全角度来看.
归档时间: |
|
查看次数: |
33200 次 |
最近记录: |