WebApi和MVC的区别
使用上区分,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的区别相关推荐
- WebApi与Mvc的区别
ASP.NET Mvc是基于ASP.NET管道设计的框架,但是Mvc应用程序只能在iis中运行,而WebApi框架既可以寄宿在IIs上也可以在Self-Host上进行处理. Mvc和webapi都有相 ...
- WebService、WCF、WebAPI、MVC的区别
Web Service 1.它是基于SOAP协议的,数据格式是XML 2.只支持HTTP协议 3.它不是开源的,但可以被任意一个了解XML的人使用 4.它只能部署在IIS上 WCF 1.这个也是基于S ...
- MVT和MVC的区别
1.mvt和mvc的区别 M:model V:views C:controller T:templa 在MVC中 model是 主要是封装对数据库层的访问,对数据库中的数据进行增删改查操作 view ...
- JavaWeb三层架构的理解/三层架构的优缺点/三层架构与MVC的区别
1.三层架构 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器服务器.在JavaEE开发中,几乎全都是基于B/S架构的开发.那么在B/S架构 ...
- Spring 和 Spring MVC的区别
Spring 和 Spring MVC的区别 学习Spring MVC也有几天时间了,那么Spring和Spring MVC的区别到底在哪里,二者是什么关系呢?认为二者是一个东西那肯定是不对的,而 ...
- mvvm模式和mvc的区别_mvvm 和 mvc 区别?
首先我们先理解他们的概念啊. 1.MVVM 是 Model-View-ViewModel 的缩写,MVC是Model-View-Controller的缩写 View层是界面,Model层是业务逻辑,C ...
- mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM
预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...
- Struts的MVC和Spring的MVC的区别
最近才发现spring也能实现MVC,于是在网上找了找相关介绍: 当初选框架的时候目的比较单纯---springmvc支持rest,小生对restful url由衷的喜欢 不用不知道一用就发现开发效率 ...
- 三层架构与MVC的区别
我们平时总是将混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设 ...
最新文章
- Android逆向之调试smali代码基础
- 为了让16岁的儿子从轮椅上站起来,这位机器人工程师父亲打造了一套外骨骼装置...
- 石墨烯新新新应用,MIT大规模生产细胞大小机器人,有感知能存储
- JavaScript 精粹 基础 进阶(4)对象
- 疫情退票引爆的潘多拉盒子,境外旅游商家濒临倒闭
- 常用正则表达式 验证电子邮件网址邮政编码等
- SpringCloud和SprigBoot之间的依赖关系怎么看
- 2019牛客多校第一场
- 浅析如何让Spring 来管理Action的配置方法
- 实际运用中DataSet、DataTable、DataRow点滴
- Python中图像标题生成的注意机制实战教程
- abp 应用层异常处理(自动控制器中)
- 2020年下半年信息安全工程师下午真题及答案解析
- 南通大学计算机专业校区,南通大学计算机科学与技术专业
- 计算机老师任课教师寄语,任课老师新学期寄语
- Monjes Budistas - Live Mantra(2008)[古典红底红花边]
- 采用bitly压缩url
- Springboot内嵌tomcat
- 一些RJS资源和演示入门教程
- 从新手村出来,我在 Apache APISIX 社区发出了第一个 PR
热门文章
- 静态链接库LIB和动态链接库DLL的区别 创建和示例
- IC设计常见设计思想
- 【tensorflow】——创建tensor的方法
- 有限元笔记04:二维实体单元
- 有限元课堂笔记03:钢架(Frame)
- 二分查找法的循环与递归实现及时间复杂度分析
- 导出oracle sequences,利用数据泵只导出序列
- python多个main方法_Python,main方法未运行(同一文件中有多个类)
- Mercurial(Hg)基本操作
- C语言中__attribute__ ((at())绝对定位的应用