ASP.NET WebApi与MVC?[关闭]


141

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

问题:就MVC而言,使用asp.net WebApi有哪些优点和/或缺点?



11
对我而言,这些“ vs”问题的随机性如何立即被关闭或上升到这种向上投票的水平对我来说很有趣。
cbmeeks's

10
rr 我讨厌那些“太封闭了”的标语。如此多次,我发现了很多很棒的问题。而且通常情况下,他们也没有很好的答案。如果范围太广,该怎么办。专家就在这里,不在维基百科或其他论坛上。因此,让他们去做自己的事情并摆脱困境。
nharrer

Answers:


47

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

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

在此处输入图片说明


20
不同意其他帖子是相似的。另一篇文章实际上是关于WCF与WebAPI的。
Shane Courtrille 2014年

从技术上讲,它说的是WCF Web API,但是在第二行中提到,现在它已合并到Asp.net Web API中并支持自托管。无论如何,我已经用最新的链接更新了链接。希望会有所帮助。
Yusubov

更新了参考。
Yusubov

23

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

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

5
有点。我可以支持oData,但前提是您至少在RC方面使用“ queryable”属性装饰动作。
EBarr

14

Asp.Net Web API VS Asp.Net MVC 1。Asp.Net MVC用于创建同时返回视图和数据的Web应用程序,而Asp.Net Web API用于通过简单且仅返回数据而不返回视图的简单方式创建完整的HTTP服务。在此处输入图片说明

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

3。Web API还负责根据请求中的Accept报头返回特定格式的数据,如JSON,XML或任何其他格式,您不必担心。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应用程序外,它还可以与智能手机应用程序一起使用。

原始资料在这里


13

相似点

1)两者都继承自ihhtphandler的asyncrequest,因此基本上apicontroller或mvc控制器都是web.http的包装器。

区别:1)mvc控制器非常繁琐,如果您可以仔细查看其定义,则可以看到已使用了多少接口和基本代码,web api是较轻的控制器,并通过其传递的参数区分请求(是的,我们也可以更改它! )

2)MVC控制器具有太多功能,例如它返回视图,操作结果,javascript结果等,但是在Web api中具有JSON或XML

3)API用于实现Restful(获取,发布,放置,删除,选项)服务,该服务可以独立于任何地方托管,而无需依赖于视图,MVC控制器无法支持它,因为它与视图紧密集成。


1
值得注意的是,您仍然可以使用JSONResult等mvc操作结果来完成MVC的API行为。但是,正如您指出的,MVC控制器较重。与MVC相比,Web API控制器的实现方式也更有助于制作API。
Grizzly Peak Software


10

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


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


3

ASP.NET MVC致力于简化HTML的输出。ASP.NET Web API致力于简化原始数据的输出。

在WebForms世界中,ASP.NET MVC等效于.aspx页,ASP.NET Web API等效于.asmx


2

Asp.Net MVC用于创建同时返回视图和数据的Web应用程序,而Asp.Net Web API用于通过简单且仅返回数据而不返回视图的简单方法创建完整的HTTP服务。

Web API有助于在.NET Framework上构建基于REST的服务,并且还支持内容协商(这是决定客户端可以接受的最佳响应格式数据。它可以是JSON,XML,不能托管的自托管)在MVC中。

Web API还负责根据请求中的Accept报头返回特定格式的数据,如JSON,XML或任何其他格式,您不必担心。MVC仅使用JsonResult返回JSON格式的数据。


1

通常,WebAPI用于数据服务,其中MVC可以生成更多类型的输出。

WebAPI无疑简化了我们创建数据服务的方式。为此目的,它既干净又容易。MVC附带了更多工具。

MVC可以生成任何输出,WebAPI可以输出。从模板生成输出可以在MVC中轻松实现。我找不到在WebAPI中这样做的理由。PHP开发人员和旧的ASP程序员可能从过去就知道这种态度,您可以在其中构建与C#代码有关的HTML文件。

WebAPI-数据MVC-数据,UI / HTML,XHTML,文件,模板等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.