6

我已经使用 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 应用程序中同时使用它们?

4

4 回答 4

16

除了@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 请求和响应的优雅处理,以及对易于创建的控制器的支持似乎是创建这种新型服务的正确方法

于 2012-07-23T23:54:29.100 回答
6

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

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

MVC 所做的 Web API 不打算用于生成带有视图等的完整或部分 HTML 页面。

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

于 2012-07-23T22:57:31.883 回答
2

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

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

于 2012-07-23T23:59:55.727 回答
0

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

于 2016-04-20T05:16:04.240 回答