这两个东西是两个维度上的玩意儿,所以不能直接比较。
目前的http://ASP.NET经过几十年的发展分成了逻辑层和表现层两套独立的演进,不算http://ASP.NET Core和WebAPI的话,大体上是两套表现层模式,两套逻辑层模式,两两组合有四种实践。
两套表现层是WebForm和WebPages。
两套逻辑层是基于模块的模式MVC和基于页面的模式。
最流行的是MVC+WebPages(也就是Razor)。但是也有基于页面+WebForm(也就是最原始的WebForm模式),基于页面+WebPages和MVC+WebForm(传统MVC模式)
其实表现层没啥好说的WebPages更接近PHP的风格,即内容杂凑式(数据绑定逻辑、代码逻辑和HTML杂凑在一起)。WebForm更接近WinForm也就是控件风格,尽量用控件来隔离HTML。其实从理论上来说控件模式更干净,更先进。包括前端框架也是会自造控件来简化问题。但是微软的问题就是封闭,有些东西完全可以开放出来偏不。结果就是互联网的失利也直接拖死了WebForm(因为没有掌握HTML标准话语权,过于沉浸于自己的控件规范和标准,完全不把这些和HTML规范结合和推动)。想想看为什么前端控件框架不愿意做成WebForm自定义控件?
最后我们来看看基于模块的MVC模式和基于页面的模式到底有什么区别?
MVC模式的思想是,一个功能模块是由多个页面,多种UI协同实现的,这个里面,Model是核心。基于页面的模式基本思想是,业务逻辑是基于交互页面来设计的,这个里面,页面是核心。这两种思维,一个适用于面向互联网用户的多样化交互设计。一个适用于面向企业管理用户的标准表单交互设计。应用场景不同并无优劣之分……
当然,尽管四种组合都可以使用,但实际应用中,因为历史和设计原因,MVC+WebForm和基于页面+WebPages两种模式都会在功能上有一定的受限。
当然了,这十几年间发生了很多事情,IE死了,前端从IE的大一统时代,经过了混战时代,最后进入了Google主导的WHATWG标准的新的大一统时代。前端框架和脚本也摆脱了JavaApplet和SilverLight以及Flash的阴影,成为了可以独当一面的存在,前后端分离已成事实标准。
但未来会怎样,我们不得而知。我预计WebServer的服务器技术在未来将并入前端技术栈,后端将彻底从数据绑定中脱离出来,彻底放飞自我,解决新的问题……