09 Asp.Net WebAPI - REST
1. Asp.Net WebAPI发布
在Visual Studio 2012及.NET 4.5中,作为ASP.NET MVC 4的一部分,微软正式推出新的网络服务框架ASP.NET Web API。
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。这套Web API基于ASP.NET,又借用了很多ASP.NET MVC的概念,很容易被ASP.NET的开发者适应和熟悉。
ASP.NET Web API 一开始就是围绕HTTP协议及其消息语义构建起来的。与WCF REST相比,它不是对现有框架的增强,而是一个全新的平台。
基于REST风格,搭建在HTTP协议之上的,本质上是一种HTTP服务
前身为WCF WEB API,现在集成进ASP.NET, 正式更名为ASP.NET WEB API
直接借鉴了ASP.NET MVC的设计,所以两者有非常类似的编程模式
调用方式:因为Web API完全是基于Web的,所以针对它的调用本质上就是一个简单的HTTP请求和响应过程. 例如: 前端程序利用jQuery以Ajax的方式调用Web API.
2. Asp.Net WebAPI与WCF的关系
WCF最初为基于SOAP的服务而设计,后来自 3.5之后才添加了迎合REST的功能,虽然WCF也支持REST了,但实现起来比较麻烦,但是这种在"重量级"通信平台上实现的"轻量级" 消息通信给我们一种"牛刀杀鸡"之感。
后来微软新开发了WebAPI,一开始是归在WCF框架旗下的,名为WCF Web API,后来微软停止开发WCF Web API,取代它的是ASP.NET Web API,到ASP.NET MVC 4推出时就划归Asp.Net旗下了。
Announcement: WCF Web API is now ASP.NET Web API! ASP.NET Web API released with ASP.NET MVC 4 Beta.
3. Asp.Net WebAPI和Asp.Net MVC关系
1).新的Asp.Net WebAPI项目和典型的MVC项目一样,包含主要的Models、Controllers 、 Views等文件夹和Global.asax文件。
2).Models中的Model主要用于保存Service和Client交互的对象,这些对象默认情况下会被转换为Json格式的数据迚行传输。
3).Controllers中的Controller是最重要的,它用于提供数据服务。
4).Views对于WebAPI来说没有太大的用途。因为Asp.Net WebAPI适用于那些需要使用数据服务,而非HTML标签的场景。
5).和普通的MVC一样,Global.asax用于配置路由规则。
6).App_Start目录,用来声明路由规则。
4. Asp.Net WebAPI和MVC路由的区别
5.WCF,ASP.NET Web API 技术选型
选型一:如果想让服务支持特殊场景,如单向消息传递、消息队列、双向通信等等,最好选择WCF。
选型二:如果想让服务优先使用快速传输通道,如TCP、Named Pipes,甚至UDP(在WCF 4.5中),然后在所有其他传输都不可用的时候支持HTTP,那么最好选择WCF,并且把SOAP和WebHttp两种绑定都用上。
选型三:如果服务是建立在HTTP之上的面向资源的服务,需要发挥HTTP的全部功能,如传送图像、文档、HTML页面等多种类型的内容,在响应中用URI去实现某个任务,那么新的Web API是最好的选择。
选型四:如果服务是多目标环境的,既可作为面向资源的服务走HTTP通道,又可作为RPC风格的SOAP服务走TCP通道——那就再议吧!