使用上区分,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的组成成员,图上表现得很清楚了。

首先,两者的主要解决的问题不同!
MVC的主要使用场景在于Web站点的开发,他在后端实现了一套完整的MVC开发框架,能提供方便的页面开发,默认使用Razor视图引擎,提供了后端html构造,用户可以方便地开发出带页面的站点。
而WebAPI主演提供了一套RestfulAPI的开发框架,提供了较为完整的http语义支持,主要用来做开放API,更抽象,更不注重View的生成。
从实现的角度看,虽然他俩捆绑在一起,但是两者处理管线还是不同的。
如果你对http有较为深入理解后,你就会发现,其实他俩的界限没那么明显,那么你也许会觉得mvc做的事webAPI都能做,因为他更抽象,有时候你又不想把两者的界限搞得那么清晰

WebApi和MVC的区别相关推荐

  1. WebApi与Mvc的区别

    ASP.NET Mvc是基于ASP.NET管道设计的框架,但是Mvc应用程序只能在iis中运行,而WebApi框架既可以寄宿在IIs上也可以在Self-Host上进行处理. Mvc和webapi都有相 ...

  2. WebService、WCF、WebAPI、MVC的区别

    Web Service 1.它是基于SOAP协议的,数据格式是XML 2.只支持HTTP协议 3.它不是开源的,但可以被任意一个了解XML的人使用 4.它只能部署在IIS上 WCF 1.这个也是基于S ...

  3. MVT和MVC的区别

    1.mvt和mvc的区别 M:model V:views C:controller T:templa 在MVC中 model是  主要是封装对数据库层的访问,对数据库中的数据进行增删改查操作 view ...

  4. JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别

    1.三层架构 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.在JavaEE开发中,几乎全都是基于B/S架构的开发.那么在B/S架构 ...

  5. Spring 和 Spring MVC的区别

    Spring 和 Spring MVC的区别   学习Spring MVC也有几天时间了,那么Spring和Spring MVC的区别到底在哪里,二者是什么关系呢?认为二者是一个东西那肯定是不对的,而 ...

  6. mvvm模式和mvc的区别_mvvm 和 mvc 区别?

    首先我们先理解他们的概念啊. 1.MVVM 是 Model-View-ViewModel 的缩写,MVC是Model-View-Controller的缩写 View层是界面,Model层是业务逻辑,C ...

  7. mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM

    预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...

  8. Struts的MVC和Spring的MVC的区别

    最近才发现spring也能实现MVC,于是在网上找了找相关介绍: 当初选框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢 不用不知道一用就发现开发效率 ...

  9. 三层架构与MVC的区别

    我们平时总是将混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设 ...

最新文章

  1. Android逆向之调试smali代码基础
  2. 为了让16岁的儿子从轮椅上站起来,这位机器人工程师父亲打造了一套外骨骼装置...
  3. 石墨烯新新新应用,MIT大规模生产细胞大小机器人,有感知能存储
  4. JavaScript 精粹 基础 进阶(4)对象
  5. 疫情退票引爆的潘多拉盒子,境外旅游商家濒临倒闭
  6. 常用正则表达式 验证电子邮件网址邮政编码等
  7. SpringCloud和SprigBoot之间的依赖关系怎么看
  8. 2019牛客多校第一场
  9. 浅析如何让Spring 来管理Action的配置方法
  10. 实际运用中DataSet、DataTable、DataRow点滴
  11. Python中图像标题生成的注意机制实战教程
  12. abp 应用层异常处理(自动控制器中)
  13. 2020年下半年信息安全工程师下午真题及答案解析
  14. 南通大学计算机专业校区,南通大学计算机科学与技术专业
  15. 计算机老师任课教师寄语,任课老师新学期寄语
  16. Monjes Budistas - Live Mantra(2008)[古典红底红花边]
  17. 采用bitly压缩url
  18. Springboot内嵌tomcat
  19. 一些RJS资源和演示入门教程
  20. 从新手村出来,我在 Apache APISIX 社区发出了第一个 PR

热门文章

  1. 静态链接库LIB和动态链接库DLL的区别 创建和示例
  2. IC设计常见设计思想
  3. 【tensorflow】——创建tensor的方法
  4. 有限元笔记04:二维实体单元
  5. 有限元课堂笔记03:钢架(Frame)
  6. 二分查找法的循环与递归实现及时间复杂度分析
  7. 导出oracle sequences,利用数据泵只导出序列
  8. python多个main方法_Python,main方法未运行(同一文件中有多个类)
  9. Mercurial(Hg)基本操作
  10. C语言中__attribute__ ((at())绝对定位的应用