【问题标题】:What is the future of ASP.NET MVC framework after releasing the asp.net Web APIASP.NET Web API 发布后 ASP.NET MVC 框架的未来是什么
【发布时间】:2012-07-22 05:18:33
【问题描述】:

我已经使用 asp.net MVC 大约 1.5 年了,我很喜欢它的功能,并且已经部署了许多成功的 Web 应用程序,但我目前正在阅读有关 asp.net Web API 技术的信息。而且,我发现以下内容:

  1. 我可以实现以前使用 MVC 实现的任何功能;使用新的 Web API 和更轻量级的方法。

  2. 与asp.net MVC相比,使用Web API开发Web服务更容易。

那么,asp.net Web API 会在未来接管 asp.net MVC,还是每种技术都有自己的发展领域,还是我们应该考虑在同一个 Web 应用程序中同时使用这两种技术?

【问题讨论】:

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


    【解决方案1】:

    不,他们并没有真正做同样的事情。

    Web API 实际上仅用于生成 JSON、XML 或其他基于文本的响应,以实现基于 REST 的 API。 MVC 也可以做到这一点,但新的 Web API 似乎更容易,尤其是自动内容类型协商。

    Web API 不适合 MVC 的用途是生成带有视图等的完整或部分 HTML 页面。

    所以每个人在 ASP.Net 框架中都有自己的目的,不太可能超越另一个。

    【讨论】:

      【解决方案2】:

      除了@jmoerdyk 的回答,我想指出一点:

      关键是要了解每种技术的目标:

      • 网络 API。

        这将是用于创建 Web 服务的新 API,它是传统 XML 服务和 WCF 服务的替代方案,因此值得首先指出 WEB API 与其他 Web 服务框架之间的主要区别。

        Web API 和 WCF/ASMX 服务之间的主要区别在于它不是基于 SOAP,而是基于 HTTP因此您可以利用所有 HTTP 功能,例如:

        • 它包含非常有意义且具有描述性的邮件标头 - 标头表明邮件正文的内容类型,标头说明如何缓存信息、如何保护信息等。
        • 使用动词来定义动作(POST、PUT、DELETE..)
        • 它包含一个可用于发送任何类型内容的正文
        • 它使用 URI 来识别信息路径(资源)和操作

        这就是 Web API(当时称为 WCF Web API)的主要目标:停止通过 WCF 的眼光看待 HTTP - 作为传递请求的传输协议。相反,它允许我们将其视为真正的应用程序级协议——一个丰富的、可互操作的、面向资源的协议。 Web API 的目的是正确使用 URI、HTTP 标头和正文为 Web 以及希望将 HTTP 作为其协议和终生朋友的其他所有人创建 HTTP 服务。

        查看这篇文章了解更多信息:http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

        所以基本上 Web API 实际上可以与 WCF 或 XML 服务进行比较

        如果您想知道 WCF 会发生什么?

        所以事实是我们有太多的选择,因此也有太多的困惑。我们该怎么办?我们合并团队! (有点让我们想起了 LINQ-to-SQL 和实体框架、WCF 和 Ado.Net 数据服务以及其他此类示例的时代)。因此,WCF 团队和 ASP.NET 团队联手创建了一个专注于 Web 世界的 REST/超媒体/HTTP 服务领域的新框架,从而产生了 ASP.NET Web API。

      • MVC

        既然您知道 Web API 的目标是什么,那么应该更容易为什么 MVC 包含主要呈现视图的附加功能。

        您的担心是基于WEB API实际上是基于MVC的,但他们的目标不同

        另一方面,ASP.NET MVC 基础架构及其对 HTTP 请求和响应的优雅处理以及对易于创建的控制器的支持似乎是创建这种新型服务的正确方法

      【讨论】:

      • hadihariri.com/2012/04/06/… - 有趣的观点表明这种分离可能不合理
      • 我觉得应该注意的是 SOAP 依赖于 HTTP,因此 WebAPI 增加了更多的功能而不会带走任何东西。
      【解决方案3】:

      WebAPI 和 MVC 是两个不同的东西,但它们都在同一个框架中工作。 WebAPI 用于 RESTful 服务。 MVC 用于网页。

      您可以在 MVC 中创建 restful 服务,这比在 WebAPI 中做的工作要多得多。反过来是不正确的。您不能在 WebAPI 中创建网页。因此,您的问题从根本上是混乱的。

      【讨论】:

      • 反之亦然。您可以使用 Web API 创建网页(使用 Razor、生成 html 等)。尽管这需要一些努力,而且不一定是 Web API 打算做的事情。尽管由于 Web API 返回媒体类型,而 text/html 只是另一种媒体类型,但您可能会争辩说这并没有滥用 Web API。
      • 你有使用web api生成html并在浏览器中渲染的例子吗?似乎人们倾向于不这样做。
      • 这是一个例子:strathweb.com/2013/06/…
      【解决方案4】:

      它们将被合并到新版本中,从技术上讲两者的工作方式相似,但 API 没有附加视图,因此提供了更好的性能

      【讨论】:

      • 您能否提供一些参考链接或网站作为事实以及您的答案。
      • 我从很多来源收集了它,不能给你一个确切的链接,我读了很多
      猜你喜欢
      • 1970-01-01
      • 2020-01-13
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2010-10-04
      • 2015-05-26
      • 2013-05-30
      相关资源
      最近更新 更多