我给你打一个比方。假设 webform 是冷兵器时代的巅峰的武功流派,那么时代进入了热兵器时代了,时代进步了社会也进步了,此时企业应用的“热兵器”就是富客户端编程的软件工程、几千行上万行 javascript(或者我们使用 typescript)的单页面应用项目的开发技术。而 asp.net mvc 在这方面并没有半点东西,它只是服务器端下载初始页面、解析url 路由的简单工具。
asp.net mvc 是微软在10年前学 java 的流行开源小框架而推出的。这本无可厚非,这可以吸引一些 jsp 程序员来使用 asp.net。问题是 asp.net mvc 根本没有现代的前端框架。你把 webform 中的 EnableViewState 开关禁用了,或者把页面上的 <form runat="server"> 删除掉,之后你的 asp.net webform 跟 asp.net mvc 就没有什么有很大价值的区别了。
10年前有点作用,放到今天看,不论是有丰富的控件和完善的 MVP 框架的 webform,还是比较简单的模板非常简单的 mvc,其实都不符合现代 web 富客户端应用的基本工程思路。不论是 Page 还是 View 都是顶多适合第一次下载页面时用一下(实际也并不需要,因为就算是 seo 也不应该这样来产生),页面并不一遍遍回发下载。
而 asp.net 程序员普遍缺乏 web 前端开发经验。一个合格的 web 开发人员,随便写上几千行 javascript 程序,开发一个独立的单页面系统,应该没有问题。但是 asp.net 程序员往往没有这方面的基本素质。
asp.net webform 技术还可以用来维护10年前开发的许多企业 OA 应用,就好像现在还是有很多的 COBLE 应用一样。
asp.net mvc 基本上没有企业应用开发控件,全靠 javascript 前端开发。因此可以说 asp.net mvc 的复杂度相当于 webform 的十分之一都不到。
如果你要现代的开发 web 企业应用,那么你可能需要非常熟悉 web 前端框架。者论是 asp.net webform 还是 asp.net mvc 都什么卵用,微软在10 年前往 asp.net mvc 里边扔了一个人家的 jQuery 以后就再也没有推出所见即所得的任何组件/控件/模板开发平台。从这个角度说,其实 asp.net mvc 跟 asp.net webform 一样,都没有多少作用。只不过 asp.net mvc 是蒙蔽了一些 asp.net 开发者、推迟了他们专注学习 web 前端框架的进程,掩盖了微软的 web 开发工具平台的彻底战略撤退。