webform,web mvc和web api都是asp.net官方的三套框架,想对比下三者的关系,查了下资料,web api跟web mvc基本同属一脉,只是mvc多了一个视图渲染,网上有些博客介绍了webform和mvc底层源码实现的不同,但不够直观简洁,博客园有一篇博客,很简洁的说明的两者的关系,出于学习和记录的原因,进行了复制转载
http://www.cnblogs.com/chay1227/archive/2013/03/11/2953301.html
Asp.net Web开发方式,分为两种:
1. WebForm开发
2. Asp.Net MVC开发
MVC是微软对外公布的第一个开源的表示层框架,MVC目的不是取代WebForm开发,只是web开发的另一种选择。两者最本质区别是请求url不同,MVC是将请求交给控制器处理,而WebForm是将请求交给请求页的后台文件(.cs文件的Page_Load)处理。
MVC优点:
1. 很容易将复杂的应用分成M、V、C三个组件模型,通过model、view、controller有效的简化了复杂的架构,将处理后台逻辑代码与前台展示逻辑进行了很好的分离。
2. 因为没有使用server-based forms,所以程序员控制的会更加灵活,页面更加干净,没有viewstate。
3. 通过修改路由规则,可以控制生成自定义的url,因此控制生成seo友好的url将更加容易。
4. 强类型view实现,更安全,更高效。
WebForm优点:
1. 支持事件模型开发。有丰富的服务器端组件。
2. 控件丰富
WebForm缺点:
1. 封装太强,很多底层东西让初学者不是很明白,
2. 自定义控制不灵活,
3. ViewState处理。
作者:龙Ryze
链接:https://www.zhihu.com/question/46369458/answer/144963042
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
"WebApi和MVC有什么区别?"
首先要重点说的是,Web API是一种无限接近于RESTful风格的轻型框架,且不是微软提出来的,微软在.NET上实现了这中框架—http://Asp.Net Web API,所以“微软包装”是一个极大的偏见。
我在公司经历了从 MVC 转到 “Web API + 其他框架”的过程,为什么要这么做?
从需求的根本上来看,业务的布局和扩张导致是根本原因。我们要求,数据库数据不只能够对 Web 程序服务,对其他业务也行,甚至可以根据数据接口开放给第三方。例如,MVC 业务中,可以在前端用AJAX获取和更新数据,也可以在后台用 HttpClient, 调用的方式不限,数据格式完全由调用方决定(XML 和 JSON 也是足够了)。
为什么不用 MVC 来做?
MVC 框架负责的东西太多了,我们可以说它是一个重量级的框架,因为它负责了数据接口,逻辑运算和View层的显示,为了减少 Controller 层的代码量,我们甚至还在三层架构上加了 DAL 和 BLL 层。除此之外,MVC 只能运行在 IIS 和 新出来的 DotNetCore 中,宿主选择比较少。
Web API 和 MVC可以说是两个不同的东西。Web API更倾向于基于HTTP协议的服务,直接返回用户的数据请求。MVC是建站的一种框架,倾向于返回用户的页面请求。
我总结了以下 http://ASP.NET Web API 的特性,更能说明Web API是一种数据请求框架:
- http://ASP.NET Web API 可以根据请求报文来返回的相应数据格式。包括JSON和XML。
- http://ASP.NET Web API 单独做数据请求和MVC做页面请求可以让Web前端和后台更好的解耦,减少开发难度。
- Web API 可以更好地用在移动端网页、桌面端网页或者桌面程序,调用方更加多样化。
- Web API 的宿主可以选择多样:WebHost,,ConsoleHost,甚至是windows Services。
作者:潘成涛
链接:https://www.zhihu.com/question/46369458/answer/101099849
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
推荐看看蒋金楠的两本框架揭秘。
使用上区分,mvc主要用于建站,web api主要用于构建http服务,当然你非要用mvc来构建Uri式的Api也行,不过显然是没有这个必要的,一个不恰当的比喻就像是你也可以玩破解版的单机游戏,也可以通过平台进行联机,但是始终不如steam上来得爽是吧。
自身实现上区分的话,两种框架主要是在Asp .Net的基础上进行改造,主要是对HttpModule和HttpHandler做了扩展,实现方法是不一样的,比如说前者更像是在一层上建了第二层,引伸出更强大的路由机制,实现了诸如MvcHandler和ControllerFactory这种消息处理和后台控制器方法选择机制,Web Api除了扩展了前者以外,另外写出了一套独立的,独立于Asp .Net的消息处理管道,就像是借鉴原来房子的模型,重新设计出了另外一套别墅。这也很好地解释了为什么Web Api可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式,这和WCF是相似的。而MVC只能寄宿于IIS上(不考虑.net core),就像Webform的寄宿方式。何况它们两者虽然都有Controller和Action,但是请求的实现和响应的回复机制也是不同的,比如说Web Api处理消息有两个核心类是HttpRequestMessage和HttpResponseMessage。这两种框架最多只能说是模式上类似,实现上还是有很大差别的。不过两者都是Asp .Net的组成成员,图上表现得很清楚了。