Asp.Net中WebForm与MVC,WebAPI模式对⽐
Asp 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处理。
"WebApi和MVC有什么区别?"
我在公司经历了从 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是建站的⼀种框架,倾向于返回⽤户的页⾯请求。
1. Web API 可以根据请求报⽂来返回的相应数据格式。包括JSON和XML。
2. Web API 单独做数据请求和MVC做页⾯请求可以让Web前端和后台更好的解耦,减少开发难度。
3. Web API 可以更好地⽤在移动端⽹页、桌⾯端⽹页或者桌⾯程序,调⽤⽅更加多样化。
webserver接口开发4. Web API 的宿主可以选择多样:WebHost,,ConsoleHost,甚⾄是windows Services。
推荐看看蒋⾦楠的两本框架揭秘。
使⽤上区分,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上(不考虑 core),就像Webform的寄宿⽅式。何况它们两者虽然都有Controller和Action,但是请求的实现和响应的回复机制也是不同的,⽐如说Web Api处理消息有两个核⼼类是HttpRequestMessage和HttpResponseMessage。这两种框架最多只能说是模式上类似,实现上还是有很⼤差别的。不过两者都是Asp .Net的组成成员,图上表现得很清楚了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。