发布 ASP.NET Web API 后,ASP.NET MVC 框架的未来是什么?

5
我已经使用了约1.5年的asp.net MVC,并享受着它的功能,部署了许多成功的Web应用程序,但我目前正在阅读有关asp.net Web API技术的内容。我发现以下几点:
  1. 我可以使用新的Web API以更轻量级的方式实现任何我曾经使用MVC实现的功能。
  2. 使用Web API比使用asp.net MVC更容易开发Web服务。
那么,asp.net Web API会在未来取代asp.net MVC吗?还是每种技术都有自己的发展领域?或者我们应该考虑在同一个Web应用程序中同时使用它们两个?
4个回答

16
除了@jmoerdyk的回答外,我想指出一些事情:
关键是要理解每种技术的目标:
  • Web API.

    这将是创建网络服务的新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和Entity Framework、WCF和Ado.Net数据服务等其他类似的例子)。因此,WCF团队和ASP.NET团队联合起来创建了一个针对REST / Hypermedia / HTTP服务的新框架,面向Web世界,因此出现了ASP.NET Web API。

  • MVC

    现在您知道Web API的目标,然后解释MVC包含额外功能以主要呈现视图应该更容易。

    您的关注点基于WEB API实际上基于MVC,但它们的目标不同

    另一方面,ASP.NET MVC基础设施通过其优雅地处理HTTP请求和响应以及支持易于创建的控制器的方式似乎是为创建这种新类型的服务而去的合适方式。


有趣的观点表明,这种分离可能是不合理的。原文链接:http://hadihariri.com/2012/04/06/with-http-your-application-is-your-api/ - driushkin
我觉得应该注意到SOAP是基于HTTP的,因此WebAPI增加了更多的功能而不会减少任何功能。 - MetaGuru

6
不,它们并不完全相同。
Web API主要用于生成JSON、XML或其他基于文本的响应,以实现REST API。MVC也可以做到这一点,但新的Web API似乎更容易实现,特别是自动内容类型协商方面。
而MVC所做的,Web API则不适用,它可以生成带有视图等完整或部分HTML页面。
因此,它们在ASP.Net框架中各有其用途,并不可能超越对方。

2

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

您可以在 MVC 中创建 restful 服务,但需要比在 WebAPI 中更多的工作。反之则不成立。您无法在 WebAPI 中创建网页。因此,您的问题基本上是混淆的。


4
实际上,相反的情况是正确的。您可以使用Web API创建Web页面(使用Razor,生成HTML等)。虽然这需要一些努力,并且不一定是Web API旨在完成的任务。但是由于Web API返回媒体类型,而text/html只是另一种媒体类型,因此您可能会认为这并不是滥用Web API。 - Filip W
你有使用Web API生成HTML并在浏览器中呈现的示例吗?似乎人们不太这样做。 - liang
这是一个例子:http://www.strathweb.com/2013/06/ihttpactionresult-new-way-of-creating-responses-in-asp-net-web-api-2/ - Fuzzy Analysis

0

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


你能否在回答中提供一些参考链接或网站作为事实依据? - Developer107
我从很多来源收集了这个信息,无法给你一个确切的链接,我读了很多。 - user4584103
在这个链接的结尾处:https://dev59.com/-XLYa4cB1Zd3GeqPSwvc - user4584103

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接