您的位置:首页 > 编程语言 > ASP

ASP.NET Web API系列——选择Web API还是WCF

2016-07-14 11:04 525 查看
http://www.nmtree.net/2014/10/19/asp-net-web-api-series-choosing-asp-net-web-api-or-wcf.html

WCF是.NET平台服务开发的一站式框架,那么为什么还要有ASP.NET Web API呢?简单来说,ASP.NET Web API的设计和构建只考虑了一件事情,那就是HTTP,而WCF的设计主要是考虑SOAP和WS-*。

WCF已经出现好多年了,相对来说ASP.NET Web API还是个小孩子,但是不意味着ASP.NET Web API要代替WCF,在不同的场合,它们各有长处。ASP.NET Web API非常轻量,在功能和灵活性上都不能和WCF相比。如果你的服务是基于TCP的,或者支持更多的传输机制,那么WCF是最好的选择。然而,不是所有的平台都支持SOAP和WS-*,当客户端不支持这些协议的时候,ASP.NET Web API就更胜一筹了。

让我们通过一个例子看一下两种编程模型的不同:一个根据雇员ID获取公司雇员的服务。WCF代码如1-1,ASP.NET Web API代码如1-2

1-1 WCF方式获取雇员信息

1-2 ASP.NET Web API方式获取雇员信息

这里值得注意的是:ASP.NET Web API和MVC非常像,除了它继承自ApiController。MVC的一些特性如:绑定和可测试性等对ASP.NET Web API都是可用的。

适合ASP.NET Web API使用的场景:
富客户端web应用程序:ASP.NET Web API适合大量使用AJAX调用的富客户端应用程序,如Silverlight应用程序,基于Adobe Flash的应用程序或单页应用程序(SPA)等。
本地移动和非移动程序:移动设备不支持SOAP,然而ASP.NET Web API可以作为运行在移动设备上的本地程序的后端。
物联网平台(IOT):使用以太网控制器或GSM猫的IOT设备可以通过HTTP和ASP.NET Web API服务会话。不仅仅是IOT设备,其他支持HTTP的设备,例如RFID读写器都可以和ASP.NET Web API通信。

在我们的开发实践中如何进行选择呢? 可以参照知名互联网企业,无论是google,facebook,baidu,新浪还是腾讯。他们对外开放的接口都是基于Http的Web API,在服务内部框架都是基于SOA架构设计的,通讯机制都是采用RPC机制的,例如Google Protocol Buffers ,Facebook thift。 我们完全也可以这样搭配,在内部通讯采用WCF + Protobuf-NET,参看《WCF服务上应用protobuf》,对外的服务采用ASP.NET WEB API。WCF的 TCP、Named Pipes,甚至UDP(在WCF 4.5中)绑定的性能要比HTTP强很多倍,这里有一个几年前的微软的测试报告《WCF 性能基准报告》,对外提供的服务采用Web API同时也是一个业界标准问题,用WebAPI就很容易的跨越ios,android,wp等移动终端平台,同时有很成熟的OAuth 解决安全问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: