【问题标题】:ASP.NET WebApi vs MVC? [closed]ASP.NET WebApi 与 MVC? [关闭]
【发布时间】:2012-07-06 05:49:18
【问题描述】:

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

问题:相对于 MVC,使用 asp.net WebApi 有哪些优点和/或缺点?

【问题讨论】:

  • 对我来说很有趣的是,这些“vs”问题是多么随机,要么立即关闭,要么攀升到这个投票水平。
  • Grrr。我讨厌那些“封闭得过于宽泛”的横幅。很多时候我发现像这样的好问题。更常见的是,他们也有很好的答案。那么如果它太宽泛了怎么办。专家就在这里,而不是在维基百科或其他论坛上。所以让他们做他们的事,让开。

标签: asp.net-mvc asp.net-web-api


【解决方案1】:

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

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

【讨论】:

  • 有点。我可以支持 oData,但前提是您使用“可查询”属性装饰操作,至少从 RC 开始。
【解决方案2】:

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

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

【讨论】:

  • 不同意其他帖子类似。另一篇文章实际上是关于 WCF 与 WebAPI 的。
  • 从技术上讲它说的是 WCF Web API,但是在第二行的帖子中提到它现在已合并到 Asp.net Web api 并支持自托管。无论如何,我已经用更新的链接更新了链接。希望这会有所帮助。
  • 更新了参考资料。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    相似之处

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

    区别:

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

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

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

    【讨论】:

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

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

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

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

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

    【讨论】:

      【解决方案6】:

      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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          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 只返回 JSON 格式的数据 使用 JsonResult。

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

          5。 Asp.Net Web API 是新框架,是 ASP.NET 核心的一部分 框架。模型绑定、过滤器、路由等MVC Web API 中存在的功能与 MVC 不同,存在于 新的 System.Web.Http 程序集。在 MVC 中,这些特性存在于 系统.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 应用程序,它也可以与智能手机应用程序一起使用。

          原文是here

          【讨论】:

            【解决方案9】:

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

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

            【讨论】:

              【解决方案10】:

              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 格式返回数据。

              【讨论】:

                猜你喜欢
                • 2014-05-29
                • 1970-01-01
                • 2011-02-04
                • 2012-10-28
                • 2013-01-22
                • 2017-06-26
                • 2014-02-15
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多