• ASP.NET MVC与ASP.NET Web API的区别


    https://www.cnblogs.com/codefly/articles/11045133.html

    WebApi和MVC的区别

    • MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据
    • Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式
    • Web API支持Self Host,MVC目前不支持
    • Web API通过不同的http verb表达不同的动作(CRUD),MVC则通过Action名字表达动作
    • Web API内建于ASP.NET System.Web.Http命名空间下,MVC位于System.Web.Mvc命名空间下,因此model binding/filter/routing等功能有所不同
    • Web API非常适合构建移动客户端服务

    https://www.zhihu.com/question/46369458/answer/144963042

    首先要重点说的是,Web API是一种无限接近于RESTful风格的轻型框架,且不是微软提出来的,微软在.NET上实现了这中框架—Asp.Net Web API,所以“微软包装”是一个极大的偏见。

    就应用市场时间而论,MVC普及市场的时间比Web API时间早。为什么MVC提出来了,且都被大家公认是一种经典的web站点实现架构,为什么还要搞Web API呢?

    这两年什么炒得最火热?互联网。在网络技术不断更新和替代的过程,网络不断普及。互联网产品只要你有技术,就可以做。但要说明的是,互联网产品的用户不再是一小部分人群,除了潜在用户,你需要面对的是庞大的上网人群和开发者。这时候你要考虑你的WEB服务器是否能够支持这么多的用户,节省一点点传输数据的带宽都能够让你的服务器轻松不少,除此之外,你还要考虑你的潜在用户变成你的真实用户的某刻时刻,你的服务器是否能够顺利支撑。

    面对用户,你要考虑你的产品是否能够让用户使用起来感觉很“爽”,你要把用户体验放在首位,那么你的产品首先功能上必须稳定,不然即使有再好的创意,再耐心的用户总会使用其它产品替代你的产品。

    面对开发者,你想要把某些功能开放,这时候你必须要开放某些接口。有人会说,我也可以使用MVC来开放这些接口,没错是可以,但是绕远道给你带来的是更大的代价。

    Web API 和 MVC可以说是两个不同的东西。Web API更倾向于基于HTTP协议的服务,直接返回用户的数据请求。MVC是建站的一种框架,倾向于返回用户的页面请求。

    我总结了以下 ASP.NET Web API 的特性,更能说明Web API是一种数据请求框架:

    1. ASP.NET Web API 可以根据请求报文来返回的相应数据格式。包括JSON和XML。
    2. ASP.NET Web API 单独做数据请求和MVC做页面请求可以让Web前端和后台更好的解耦,减少开发难度。
    3. Web API 可以更好地用在移动端网页、桌面端网页或者桌面程序。
    4. Web API 的宿主可以选择多样:WebHost,,ConsoleHost,甚至是windows Services。

    类似可以理解成ashx和webform的区别

     

    "WebApi和MVC有什么区别?"

    首先要重点说的是,Web API是一种无限接近于RESTful风格的轻型框架,且不是微软提出来的,微软在.NET上实现了这中框架—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是建站的一种框架,倾向于返回用户的页面请求。

     

    我总结了以下 ASP.NET Web API 的特性,更能说明Web API是一种数据请求框架:

    1. ASP.NET Web API 可以根据请求报文来返回的相应数据格式。包括JSON和XML。
    2. ASP.NET Web API 单独做数据请求和MVC做页面请求可以让Web前端和后台更好的解耦,减少开发难度。
    3. Web API 可以更好地用在移动端网页、桌面端网页或者桌面程序,调用方更加多样化。
    4. Web API 的宿主可以选择多样:WebHost,,ConsoleHost,甚至是windows Services。

    增增删删写了蛮多,后来发现可以用一张图和两段话来概括。而其他一些概念和功能上的异同(view还是json,xml,内容协商等)网上随便一搜也有,或者推荐看看蒋金楠的两本框架揭秘。

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

  • 相关阅读:
    通过实例来分析I2C基本通信协议
    POJ 1470 Closest Common Ancestors【近期公共祖先LCA】
    并发 错误 java.lang.IllegalMonitorStateException: current thread not owner 分析
    【Nginx】HTTP请求的11个处理阶段
    JavaScript获取当前值
    air游戏接入小米支付sdk
    [学习笔记]Pollard-Rho
    2018-2-13-win10-UWP-Markdown-含源代码
    2018-2-13-win10-UWP-Markdown-含源代码
    2018-2-13-win10-uwp-图标制作器
  • 原文地址:https://www.cnblogs.com/sunny3158/p/14552809.html
Copyright © 2020-2023  润新知