一、什么是API
API(Application Programming Interface)即应用程序编程接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而无需访问源代码,或者理解内部的工作机制的细节。
简而言之,API是拥有一组函数组成的某种接口,它允许程序员访问应用程序的特定的功能或数据,操作系统或其他服务。
二、Web API
Web API顾名思义就是一个可以使用HTTP协议访问的API。这是一个概念,不是技术。
我们可以使用不同的技术来构建Web API,如Java、.net等。
1、ASP.NET Web API
ASP.NET Web API是一个可扩展的框架,用于构建基于HTTP协议的服务,这种服务可以在不同平台上的不同应用程序中访问:例如web应用程序,winform应用程序、WPF应用程序、移动端应用程序等等。它和ASP.NET MVC有相同的工作方式,但Web API应用程序接收到请求后返回数据,而不是像MVC一样返回HTML视图。
ASP.NET Web API就像一个webservice或WCF服务,但是ASP.NET Web API只支持HTTP协议。
2、ASP.NET Web API特性
1)ASP.NET Web API是一个构建基于RESTful服务的理想平台。
2)ASP.NET Web API是基于ASP.NET的,支持ASP.NET请求/响应管道。
3)ASP.NET Web API有良好的路由机制。
4)ASP.NET Web API支持不同格式的响应数据,例如JSON等。
5)ASP.NET Web API部署非常方便。
6)ASP.NET Web API框架包括新的HttpClient。它可以与Web API服务器通信。HttpClient可以在ASP.NET MVC服务器端、Windows Form应用程序、控制台应用程序或其他应用程序中使用。
3、ASP.NET Web API版本
Web API版本 | 支持的.NET Framework框架 | 对应的MVC版本 | 支持的VS版本 |
Web API 1.0 | .NET Framework 4.0 | ASP.NET 4 | VS 2010 |
Web API 2.0 | .NET Framework 4.5 | ASP.NET 5 | VS 2012、VS2013、VS2015、VS2017 |
4、ASP.NET Web API vs ASP.NET MVC
1)MVC主要用来构建网站,既关心数据也关心页面展示,而Web API只关注数据。
2)Web API支持格式协商,客户端可以通过Accept header通知服务器期望的格式。
3)Web API支持Self Host,而MVC目前不支持。
4)Web API通过不同的http werb表达不同的动作(CRUD),而MVC则是通过Action名字来表达动作。
5)Web API位于 ASP.NET System.Web.Http命名空间下,而MVC位于System.Web.Mvc命名空间下。
6)Web API非常适合构建移动客户端服务。
5、ASP.NET Web API vs WCF
Web API | WCF |
开源,支持.NET Framework | 支持.NET Framework |
只支持HTTP协议 | 支持HTTP、TCP、UDP等协议 |
良好的路由机制来匹配URL与对应接口 | 基于特性(Attribute)来匹配 |
使用类似于ASP.NET MVC的路由规则和Controller模型 | 使用Service、契约等 |
不支持可靠的消息传递和事物。 | 支持可靠的消息传递和事物 |
可以使用HttpConfiguration来配置Web API,不一定需要web.config | 使用web.config和Attribute来配置一个服务 |
适合构建RESTful服务 | 支持构建RESTful服务但是有局限性。 |
6、如何选择使用WCF
1)如果你使用的是.NET Framework3.5,可以选择使用WCF,因为ASP.NET Web API不支持.NET Framework 3.5及更低版本。
2)如果需要支持多种协议,如HTTP、TCP、net.tcp等,可以选择WCF服务。
3)如果想建立满足WS标准的可靠的消息传递、交易的服务,可以选择WCF服务。
4)如果想要使用请求-应答,单向或者双向消息通信模式,可以选择WCF服务。
7、如何选择使用Web API
1)如果使用的是.NET Framework4.0或以上版本,可以选择Web API。
2)如果想建立一个仅支持HTTP协议的服务,可以选择Web API。
3)如果想构建基于RESTful的HTTP服务,可以选择Web API。
4)如果服务需要被各种客户端(特别是移动客户端)调用,现在Web API。