原文地址:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and-WCF-REST-and-Web-Service.html
WCF
1.基于Soap协议,以XML形式返回。
2.是Web Service的进化 支持多种协议:TCP,HTTP,HTTPS,命名管道,消息队列。
3.缺点:冗长的大量配置。
4.不开源,但是可以被懂xml的定制。
5.可以部署在应用、IIS或windows 服务。
Web API
1.创建http服务的一个简单快捷的框架。
2.开源。
3.WCF不同的:使用了整个HTTP特性。
4.支持MVC特性包括:routing, controllers, action results, filter, model binders, IOC container or dependency injection, unit testing
5.部署在应用或IIS上。
6.轻量级的,适合对带宽有要求的像智能手机等设备。
7.Responses 格式是多样的,例如json,xml等任何可以转化为MediaTypeFormatter 的。
WCF Rest
1.使用WCF Rest 需要webHttpBindings;
2.支持HTTP Get 和HTTP Post
3.支持其他http verbs 需要对IIS进行设置。
4.使用webGet 参数传递数据需要设置。
5.支持XML、json和ATOM数据
WEB Service
1.基于SOAP 返回数据为xml类型
2.仅支持http 协议
3.不开源,但是可以被懂xml的定制。
4.仅能在IIS上发布。
选择WCF还是Web API
1.在特定的情景下,如单向传递,消息队列,双端通信等选择WCF。
2.需要快速可靠的传输通道TCP 命名管道 UDP 同事需要在传输信道不可靠时支持http。
3.需要创建资源导向的基于http的服务(用到HTTP所有特性)时 使用Web API
4.向多种客户例如浏览器,移动端等同时提供服务的选择Web API