前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MVC和Webapi的区别

MVC和Webapi的区别

作者头像
小蜜蜂
发布2019-08-20 11:18:17
3.1K0
发布2019-08-20 11:18:17
举报
文章被收录于专栏:明丰随笔明丰随笔

从使用上区分

Mvc主要用于构建网站,在后端实现了一套完整的MVC开发框架,默认使用Razor视图引擎。

Webapi主要用于构建Restful服务,提供了较为完整的http语义支持,主要用来做开放API,更抽象,更不注重View的生成。

从自身实现上区分

两种框架主要是在Asp.Net的基础上进行改造,主要是对HttpModule和HttpHandler做了扩展,但是实现思路不一样。

Mvc像是在一层上建了第二层,引伸出更强大的路由机制,实现了诸如MvcHandler和ControllerFactory这种消息处理和后台控制器方法选择机制。

Webapi除了扩展了前者以外,另外写出了一套独立的,独立于Asp.Net的消息处理管道,就像是借鉴原来房子的模型,重新设计出了另外一套别墅。

因为实现上的差异,导致的结果就是MVC只能寄宿于IIS上(不考虑.net core),就像Webform的寄宿方式。

WebApi可以部署在IIS里,也可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式,这和WCF是相似的。

何况它们两者虽然都有Controller和Action,但是请求的处理和响应的回复机制也是不同的,比如说Web Api处理消息有两个核心类是HttpRequestMessage和HttpResponseMessage。

这两种框架最多只能说是模式上类似,实现上还是有很大差别的。

从部署角度区分

MVC只能寄宿于IIS上(不考虑.net core),就像Webform的寄宿方式。

WebApi可以部署在IIS里,也可以寄宿在不同的宿主上(寄宿的本质就是利用一个具体的应用程序为Web Api提供一个运行的环境,并解决请求的接收和响应的回复),如Web Host,Self Host方式,这和WCF是相似的。

从资源返回类型区分

WebAPI支持内容协商(根据客户端能接受的格式要求,返回相应的JSON,XML,ATOM等格式)。

MVC只能利用Json Result返回JSON数据类型。

从路由角度区分

Web API根据HTTP谓语动词来映射Action,但MVC只是映射Action名称。

从代码角度区分

mvc代码在System.Web.Mvc中,Controller继承System.Mvc.Controller

webapi代码在System.Web.Http程序集中,Controller继承的是System.web.http.ApiController

WebApi在提供数据方面,是比MVC更加轻量的架构。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 明丰随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档