ASP.NET WebApi与MVC?

Hug*_*ata 135 asp.net-mvc asp.net-web-api

使用ASP.NET MVC控制器,您可以以不同的格式公开数据.AspNetWebAPI是专门为创建API而设计的,但我可以轻松地使用MVC控制器,我不清楚在什么情况下它会比传统的MVC控制器更好.我对WebApi的好处是显而易见的情况感兴趣,并且值得为我的应用程序添加另一个复杂性层.

问题:在MVC中使用asp.net WebApi有哪些优点和/或缺点?

EL *_*bov 43

WebApi允许创建可以通过HTTP公开的服务,而不是通过正式服务(如WCF或SOAP).另一个区别在于WebApi如何使用Http协议并使其成为真正的一流Http公民.

更新: ASP.NET Core,Web API已集成到MVC项目类型中.本ApiController类合并到Controller类.更多内容:https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

比较,讨论和教程的相关链接:

在此输入图像描述

  • 不同意另一篇文章是相似的.另一篇文章实际上是关于WCF vs WebAPI. (20认同)

Pao*_*ndo 21

WebAPI吐出OData,因此您可以获得使用OData的所有优势.例如,使用WebAPI,您将获得:

  • 查询选项,如$ filter,$ top,$ orderby等.
    • 使用传统的MVC控制器,您需要自己实现这些控制器.
  • 标准化的格式
    • OData客户端将了解RESTful API的基础格式.

  • 有点.我可以支持oData,但前提是你用'queryable'属性装饰动作,至少从RC开始. (5认同)

小智 13

相似

1)两者都继承自ihhtphandler for asyncrequest所以基本上apicontroller或mvc控制器都是web.http的包装器.

差异:1)mvc控制器非常重,如果你可以通过它的定义你可以看到它使用了多少接口和基本代码,web api是更轻的控制器并通过其传递的参数来区分请求(是的,我们也可以改变它! )

2)MVC控制器有太多的功能,如返回视图,动作结果,javascript结果等,但在web api中有JSON或XML

3)API用于实现Restful(get,post,put,delete,options)服务,这些服务可以独立托管任何不依赖于视图的地方,MVC控制器无法支持,因为它与视图紧密集成.

  • 值得注意的是,您仍然可以使用 MVC 使用 JSONResult 等 mvc 操作结果来完成类似 API 的行为。但是,正如您所指出的,MVC 控制器更重。此外,Web API 控制器的实现方式比 MVC 更有利于制作 API。 (2认同)

cur*_*Boy 12

Asp.Net Web API VS Asp.Net MVC 在此输入图像描述 1.Asp.Net MVC用于创建返回视图和数据的Web应用程序,但Asp.Net Web API用于创建完整的HTTP服务,只需返回数据而不是视图.

2.Web API有助于在.NET Framework上构建REST-ful服务,它还支持内容协商(它是关于决定客户端可接受的最佳响应格式数据.它可以是JSON,XML,ATOM或其他格式化数据),自托管不在MVC中.

3.Web API还负责以特定格式返回数据,如JSON,XML或基于请求中的Accept标头的任何其他格式,您不必担心这一点.MVC仅使用JsonResult以JSON格式返回数据.

4.在Web API中,请求被映射到基于HTTP谓词的操作,但在MVC中,它被映射到操作名称.

5.Asp.Net Web API是新的框架,是核心ASP.NET框架的一部分.Web API中存在的模型绑定,过滤器,路由和其他MVC功能与MVC不同,并且存在于新的System.Web.Http程序集中.在MVC中,这些特性存在于System.Web.Mvc中.因此,Web API也可以与Asp.Net一起使用,也可以作为独立的服务层使用.

6.您可以在单个项目中混合使用Web API和MVC控制器来处理高级AJAX请求,这些请求可能以JSON,XML或任何其他格式返回数据并构建完整的HTTP服务.通常,这将被称为Web API自托管.

7.当你有混合的MVC和Web API控制器而你想要实现授权时,你必须为MVC创建两个过滤器,为Web API创建另一个过滤器,因为两者都不同.

8.此外,Web API是轻量级架构,除Web应用程序外,它还可以与智能手机应用程序一起使用.

原始来源在这里


Wha*_*Bob 10

在某些时候,您可能想要一起忘记ASP.NET MVC.如果您是.NET开发人员但想要构建单页应用程序(例如使用Angular),那么您将需要RESTful服务(WebAPI)的好处,而不需要ASP.NET MVC带来的所有不必要的膨胀.


Beh*_*lem 10

这个图像似乎显示了事物的方式的差异和相似之处.我希望帮助对我来说很有意思.

在此输入图像描述


小智 6

ASP.NET MVC 专注于使 HTML 输出变得简单。ASP.NET Web API 致力于简化原始数据的输出。

在 WebForms 世界中,ASP.NET MVC 相当于 .aspx 页面,ASP.NET Web API 相当于 .asmx


Cod*_*der 5

ASP.NET MVC和ASP.NET Web API两者都用于不同目的

ASP.NET

ASP.NET提供了三种用于创建Web应用程序的框架:Web窗体,ASP.NET MVC和ASP.NET Web页。这三个框架都很稳定和成熟,您可以使用其中任何一个来创建出色的Web应用程序。无论选择哪种框架,都可以在任何地方获得ASP.NET的所有好处和功能。

每个框架针对不同的开发风格。选择哪种类型取决于您的编程资产(知识,技能和开发经验),正在创建的应用程序类型以及您喜欢的开发方法的组合。这三个框架将在ASP.NET的将来版本中得到支持,更新和改进。

MVC

ASP.NET MVC为您提供了一种强大的,基于模式的方式来构建动态网站,该方式可以使关注点清晰分离,并可以完全控制标记,从而实现令人愉悦的敏捷开发。ASP.NET MVC包含许多功能,这些功能可实现对TDD友好的快速开发,以创建使用最新Web标准的复杂应用程序。

网络API

ASP.NET Web API是一个框架,可轻松构建可访问包括浏览器和移动设备在内的广泛客户端的HTTP服务。ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。

您可以在此处阅读更多表格 http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html