当前位置: 首页 > 编程语言 > C#

为什么MVC是无状态的——如何解释?分享

时间:2023-04-10 20:52:53 C#

为什么MVC是无状态的——怎么解释呢?还要向我的学生解释ASP.NETMVC的概念MVC是无状态的。它建立在另一个无状态协议——HTTP和HTTPS之上,但是一个学生打断了他,你告诉他MVC是无状态的,无状态协议从不关心响应是否从服务器返回。但是,在ASP.NETMVC框架中,您发出请求并等待响应。由于您正在等待响应,因此它应该被称为有状态服务。你怎么称它为无状态服务?我真的被困住了,想知道这个问题的答案。有任何想法吗?MVC不是无状态的,HTTP是。HTTP无状态并不意味着它是一劳永逸的。客户端确实等待响应。它是无状态的,因为两个连续的请求没有任何关系。可以使用会话来模拟状态,例如使用cookie。问题中的断言,其他学生声称是错误的。像HTTP这样的无状态协议确实关心它是否得到(或从未得到)响应![Statelessprotocol]将每个请求视为与任何先前请求无关的独立事务,因此通信由独立的请求和响应对组成。当然,MVC甚至不是协议……但可以扩展相同的概念。它是“无状态的”,因为所有信息在请求和响应中都被编码为“对”。实际上,大多数用法并不是真正的无状态。MVC不是一种协议,而是一种软件架构模式。另一方面,HTTP是一种协议。如今,MVC模式在许多Web框架中非常流行。这些Web框架和其他框架用于开发Web应用程序。在Web应用程序的上下文中,HTTP是一种应用程序协议,用于从浏览器到托管Web应用程序的服务器进行通信。事实上,HTTP本质上是无状态的。HTTP中没有状态的概念。为此,在许多Web框架中,我们尝试以多种方式实现状态的概念。例如,在ASP.NETWebForms中,ViewState就是为此而开发的。也就是说,MVC与HTTP的无状态性质无关。请记住,模型-视图-控制器架构的概念有许多不同的实现。没有“正确的”MVC。ASP.NETMVC不可能不是模型-视图-控制器模式的“完美”实现!否则考虑有状态/无状态MVC。MVC可以通过职责的思考来理解:不允许View直接改变模型的状态——只能通过Controller。视图仍然可以直接访问模型,但仅用于查看(或通过非官方模型的副本)。模型应该存在于它们自己的宇宙中,而不是对控制器或视图的任何引用。控制器控制状态和对模型的访问。它们如何交互,可以用非常不同的方式实现(例如基于平台)...以上是C#学习教程:为什么MVC是无状态的——怎么解释呢?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: