这里有所有优秀的答案,但我也会投入 2 美分。
当您使用 绑定控件时if (!IsPostBack)
,您正在将加密的视图状态字段写入 Web 表单页面。在下一个请求期间,所有这些状态都被发送到您的服务器并被解密/反序列化。如果您在页面上有一个 GridView,它的所有行都将处于视图状态,因此您无需再次发出 db 请求来再次对其进行数据绑定。
从这个意义上说,它可以使您的服务器上的性能更好。但是,正如这里的其他人所说,您将所有视图状态发送到服务器会受到网络冲击。此外,您需要将状态向下推。听起来您故意保持视图状态轻,以克服潜在的视图状态滥用并使 Web 表单性能更好。这绝对是一个好习惯,因为视图状态经常被滥用甚至被忽略。
考虑将分页的 GridView 下推到客户端的示例。如果您的 GV 包含 15 行,您可能会通过将其全部推送到客户端、在返回的途中反序列化它并且在第一次加载后不访问数据库来获得更好的性能。但是,当您的 GV 包含 1500 行时,如果您不在视图状态下发送它,最终用户可能会看到更好的性能,而是在每个分页请求期间点击数据库。(但是,一旦他们从 GV 链接到详细信息页面,然后单击“返回”按钮,他们就会被要求重新发布他们的数据——这总是很烦人,不管有多少行)。
最终,当您在提供和使用 Web 表单页面的机器上进行开发时,性能可能看起来更好。但是根据您的视图状态的大小,通过网络访问内容的人可能看不到您的速度。这完全取决于您的视图状态有多胖。
我认为很多 MVC 爱好者喜欢它的原因之一是因为他们只需要向服务器发送执行特定操作所需的最小请求。我们可以拆分表单并仅将部分或块发送到不同的操作,而不是反序列化整个表单,而不是使用 1 个单一的表单来提交页面上所有 Web 控件的所有数据和状态。
As others have said here, the short answer to your question is NO, MVC will not always be faster or perform better than webforms. There is no black and white. In many cases it can and does, but again as others have said, some apps are better suited for webforms. Also, is performance your only concern? MVC does have black & white advantages over webforms in other areas, even if performance may always "depend".