148

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

问题:就 MVC 而言,使用 asp.net WebApi 的优点和/或缺点是什么?

4

10 回答 10

50

WebApi 允许创建可以通过 HTTP 而不是通过 WCF 或 SOAP 等正式服务公开的服务。另一个不同之处在于 WebApi 如何使用 Http 协议并使其成为真正的 First class Http 公民。

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

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

在此处输入图像描述

于 2012-07-05T19:23:21.163 回答
24

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

  • 查询选项,如 $filter、$top、$orderby 等。
    • 使用传统的 MVC 控制器,您需要自己实现这些。
  • 格式标准化
    • 有一些 OData 客户端可以理解您的 RESTful API 的底层格式。
于 2012-07-05T19:20:32.027 回答
18

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 还负责根据请求中的 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 应用程序外,它还可以与智能手机应用程序一起使用。

原始来源在这里

于 2016-12-16T23:49:05.713 回答
14

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

于 2015-10-16T12:39:30.463 回答
14

相似之处

  1. 两者都继承自ihttphandler异步请求,因此基本上 apicontroller 或 mvc 控制器都是 web.http 的包装器

差异:

  1. MVC 控制器非常繁重,如果您可以查看它的定义,您可以看到它使用了多少接口和基本代码,Web API 是更轻的控制器,并通过其传递的参数来区分请求(是的,我们也可以更改它!)

  2. MVC 控制器有太多功能,例如返回视图、操作结果、javascript 结果等,但在 Web API 中具有 JSON 或 XML。

  3. API 用于实现 Restful(GET, POST, PUT, DELETE, OPTIONS) 服务,这些服务可以在任何地方独立托管而无需依赖视图,MVC 控制器无法支持它,因为它与视图紧密集成。

于 2016-01-06T11:07:30.060 回答
12

这张图片似乎显示了事情的不同之处和相似之处。我希望这对我有帮助。

在此处输入图像描述

于 2016-11-13T19:14:18.163 回答
7

ASP.NET MVC 和 ASP.NET Web api 它们都用于不同的目的

ASP.NET

ASP.NET 提供了三个用于创建 Web 应用程序的框架:Web 窗体、ASP.NET MVC 和 ASP.NET 网页。这三个框架都是稳定和成熟的,您可以使用其中任何一个来创建出色的 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

于 2016-08-25T11:00:45.490 回答
5

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

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

于 2017-04-27T10:17:29.197 回答
3

Asp.Net MVC 用于创建返回视图和数据的 Web 应用程序,但 Asp.Net Web API 用于以简单的方式创建完整的 HTTP 服务,只返回数据而不返回视图。

Web API 有助于在 .NET 框架上构建 REST-ful 服务,并且它还支持内容协商(它是关于确定客户端可以接受的最佳响应格式数据。它可以是 JSON、XML、自托管,但不是在 MVC 中。

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

于 2017-07-26T14:22:08.810 回答
1

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

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

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

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

于 2016-05-16T09:19:58.077 回答