ASP.Net MVC4中的“ Web API”到底是什么?


15

我知道Web API是什么。
我用多种语言(包括MVC3)编写了API。
我在ASP.Net中也很熟练。
我刚刚发现MVC4具有“ Web API”,并且没有浏览视频示例,我无法很好地解释其确切含义。
根据我过去的经验,Microsoft技术(尤其是ASP.Net)倾向于采用一个简单的概念,并将其包装在无用的开销中,这意味着使所有事情“更轻松”。
有人可以向我解释一下MVC4中的Web API到底是什么吗?我为什么需要它?为什么我不能只编写自己的API?


3
您在谈论新的Web API框架吗?这与MVC是分开的。如果这是您的意思,请查看Rick Strahl撰写的此博客文章
Oded 2012年

1
@Oded:您应该将此作为答案。
詹姆斯·P·赖特

关于Web API的最酷的事情(我没有在接受的答案或上面的链接中看到任何地方列出)是,如果您返回IQueryable <>,则您的Web方法将自动支持OData查询语法!-在一般的ASP.NET 4.5 Stack中,“ Web API”和“ SignalR”正在“替换” WCF(我不确定它们是否建立在WCF之上,但是WCF已从所有框图中删除并被替换了使用“ Web API”和“ SignalR”)。
BrainSlugs83 2013年

Why can't I just write my own API?仅使用常规的ASP.NET MVC?您可以。ASP.NET MVC Web API只是为您提供了额外的便利,使其变得更加简单。请看下面。
Jim G.

Answers:


16

ASP.NET Web API是一个“非规范化”框架,用于构建HTTP服务,而与REST或RPC无关。它是Microsoft最好的RFC 2616(HTTP规范)的实现。

当然,您可以构建自己的API,但可以使用ASP.NET Web API:

  • 基于Russian Doll模型构建,该模型允许将类似于lego的模块添加到HTTP管道中
  • 使HTTP成为第一等公民,因此所有公共标头都经过严格类型化(不仅仅是名称值),并有助于解析它们
  • 允许ASP.NET(IIS)托管或自托管
  • 支持内容协商,媒体类型,...
  • 从上到下都是异步的
  • 对具有HttpClient的客户端使用类似的方法

6

微软的新Web API顾名思义就是有关编写可通过Web访问的API以及REST的全部内容。

Rick Strahl最近在博客上对此进行了博客,并对何时使用MVC与Web API进行了很好的分析。

诸如内置内容协商,多种内置格式之类的功能。


6

简而言之: ASP.NET Web API使REST成为.NET中的一等公民,而WCF确实无法接受。您可能知道,ASP.NET Web APIfor building web APIs.NET Framework之上的框架。

作为Web开发人员,我们最大的挫败之一就是面对WCF的无尽配置。我的意思是,WCF很棒,但是自WCF Web API框架以来就没有采用REST 。有一个叫做REST Starter Kit的东西,但是最终死了。

但是,ASP.NET Web API是下一代框架,可以轻松构建可访问各种客户端(例如浏览器和移动设备)的HTTP服务。它是在.NET Framework上构建RESTful应用程序的理想平台。有关更多信息和出色的博客文章,请访问ASP.NET Web API博客页面。


1
如果您研究Web API的历史,它始于WCF。
SASS_Shooter

好吧,它是轻巧的替代品,具有重要的功能,可简化配置并简化应用程序开发。
Yusubov

@Yusobov:这不是真的-还有WCF数据服务,它们非常擅长构建与Odata兼容的REST api。我一直在生产环境中使用它,一旦设置好它就可以很好地工作。唯一的问题是,这比ASP.NET Web API的设置困难得多。
Adrian Grigore 2014年

1

ASP.NET Web API是一个框架,可轻松构建可连接到包括浏览器和移动设备在内的广泛客户端的HTTP服务。

ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。

http://www.asp.net/web-api


编辑:

具体来说,ASP.NET Web API包括:

  1. 如果您选择将服务托管在IIS中,则精简的ASP.NET管道可以减少开销。
  2. HttpClient,它使客户端更容易挂接到Web API。

我自己可以读那些东西。我的问题是什么?使用Web API和使用常规MVC,但使用JsonResults代替ViewResults有何不同?
詹姆斯·P·赖特

1.在MVC 4之前,您可以毫无问题地返回JSONResult。MVC 4只是保留了该功能,还包括一些其他帮助程序类以使其变得更容易,并且当您知道不需要返回ViewResults时,可以简化ASP.NET管道以减少开销。
Jim G.

1
另外,由于它实际上是WCF Web API的更新,因此您无需嫁给IIS。如果愿意,可以自托管ASP.NET Web API服务。wcf.codeplex.com/…–
吉姆·G

-2

如今,基于Web的应用程序还不足以吸引其客户。人们非常聪明,他们在日常生活中使用iPhone,手机,平板电脑等设备。这些设备还具有许多可简化生活的应用程序。实际上,我们正在从网络转向应用程序世界。因此,如果您希望以快速简便的方式将服务数据公开给浏览器以及所有这些现代设备应用程序,则应该有一个与浏览器和所有这些设备兼容的API。


这似乎并没有添加任何大幅超额提出的论点,而且在以往4个答案解释
蚊蚋
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.