【问题标题】:What are the major differences between Web API and ASP MVCWeb API 和 ASP MVC 之间的主要区别是什么
【发布时间】:2013-05-07 14:24:15
【问题描述】:

标题确实总结了我的问题。我使用了这两种技术,但我不确定其中一种技术与另一种技术有什么本质不同。本质上:

在设计 RESTful Web 应用程序时选择 ASP MVC 或 Web API 时应考虑哪些标准和/或指导?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 rest asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    目的

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

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

    虽然没有什么是不可能的

    虽然可以使 Web API 输出 HTML 和 MVC 输出原始数据,但您需要做一些额外的工作。例如,在 Web API 的内容协商过程中创建额外的类来处理 text/html,或者在 MVC 中添加逻辑来处理 OData 查询。

    假设

    MVC 和 Web API 的默认假设也不同。默认情况下,MVC 假定用户提交的数据可以来自多个来源,无论是在查询字符串中还是在表单中。

    Web API 默认假定原始类型来自查询字符串,而非原始类型来自表单。它还假设您只想读取一次表单主体,而不需要缓存,以降低内存使用率并提高性能。

    违反默认设置需要额外的工作,这对我来说根本没有意义。

    编辑:

    另外,GET AJAX 请求默认被 MVC 的 JsonResult 阻止以防止 CSRF,而 Web API 默认允许 GET AJAX 请求。

    MVC 6 更新

    MVC 6 统一了 MVC 和 Web API 并允许您像在 MVC 中一样返回 ViewResult 或像在 Web API 中一样返回对象,并且框架将负责内容协商,为您创建 HTML、JSON 或 XML。通过使用其自定义管道而不是 System.Web 提供的管道,MVC 中的内存使用量也会降低。

    因此,在未来,MVC 和 Web API 之间没有区别。

    【讨论】:

    • 如果我理解正确,您是说两者的主要区别在于 ASP MVC 旨在输出 HTML,而 Web API 旨在输出其他所有内容。这是唯一应该考虑的因素吗?
    • 据我所知,是的。我将 MVC 用于我的网站,而 Web API 用于提供我的移动应用程序所需的数据。它们都可以驻留在同一个项目中。
    • @JeowLiHuan 从 Web Api 中剥离现成的默认值并使用您自己的一组默认值非常容易。通过这种方式,它可以成为您自己自以为是的 Web api 框架的基础。
    猜你喜欢
    • 2010-09-13
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2015-08-06
    • 2011-03-06
    相关资源
    最近更新 更多