ASP.NET MVC是无状态的吗?

时间:2011-12-15 20:06:55

标签: c# asp.net-mvc

我听说MVC .NET是无状态的。这有什么意义,为什么MVC是无国籍的。

5 个答案:

答案 0 :(得分:8)

状态通过several means在ASP.NET(MVC和WebForms)中进行管理:

  • 会话
  • 缓存
  • 表格帖子
  • 应用
  • 查询字符串
  • 高速缓存
  • 上下文

MVC消除了ViewState,这意味着每次回发页面时控件(文本框,复选框等)都会丢失它们的值。您需要手动或通过其他方式重新填充它们(例如,模型绑定)。

MVC并非真正的无状态,但它确实删除了一种在ASP.NET中持久化状态的最常用方法 - ViewState。

答案 1 :(得分:7)

MVC是无状态的,因为HTTP是。 HTTP中没有任何内容指示会话何时开始或结束。

每个Web框架都尝试使用cookie或请求/响应功能(如查询字符串或FORM post)来克服此问题。

答案 2 :(得分:5)

MVC不是(完全)无国籍的。没有Web框架。

我认为这是指MVC取消_VIEWSTATE字段的事实。

但请提供链接或更多信息。

答案 3 :(得分:5)

网络是无状态的,因此构建在http之上的任何内容都是无状态的。无状态我的意思是每个请求/响应都是一个原子单元,不知道以前的任何请求。

有一些带有http的机制允许你在Session和Application之类的请求之间保持某种形式的状态,但通常情况下,这些应该尽可能少地使用。

Webforms试图通过引入ViewState和Postback来创建状态错觉。但这并没有改变网络无国籍的事实。

答案 4 :(得分:2)

我想说除了SignalR之类的一些新技术之外,所有的网络通信都是无状态的 [Async signaling library for ASP.NET to help build real-time, multi-user interactive web applications]

您发出请求并获得响应,也就是说,您可能正在考虑的不是在webforms中使用ViewState。