Web api 

主要功能:

支持基于Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作

请求的回复格式支持 JSON,XML,并且可以扩展添加其他格式。

.请求的回复通过Http Status Code表达不同含义,并且客户端可以通过Accept header来与服务器协商格式,例如你希望服务器返回JSON格式还是XML格式

应用场景:

如果服务需要在http协议上,并且希望利用http协议的各种功能,

如果服务需要被各种客户端(特别是移动客户端)调用,选择Web API

WCF

主要功能:

分布式通信框架的集大成者

 应用场景:

1.SOAP Services:这是因为WCF服务是基于消息的通讯机制,而它的消息是被封装为一个SOAP Envelope(SOAP 信封的)

2.WebHttp Services:是在传统的SOAP Services基础上的一个增强,它仍然是基于操作(Operation)的,只不过这些Operation可以直接通过Uri访问到,而无需客户去编写一个特殊的客户端。(ps: 实质是webservice,用的最多的)

同时,WebHttp Services提供了两种不同的消息格式,第一种是XML,第二种是Json。这将更加有利于诸如Javascript这种客户端来访问服务。

要实现WebHttp,我们首先要添加一个引用

3.WCF Data Service:支持两种数据模型,一种是LINQ to SQL, 一种是ADO.NET Entity Frmawork。

4. Workflow Services:这是一个很有意思的服务。这是在.NET Framework 4.0中开始出现的,也就是随着Workflow Foundation升级到4.0之后,提供了一种全新的服务类型,简单地来说,它是可以直接与Workflow Foundation(工作流)想结合的一种服务。

5.RIA Services:RIA的意思是,Rich Internet Application。在微软平台上,Silverlight就是RIA战略中的核心产品,所以很显然,RIA Service主要就是为Silverlight服务的。这个是.NET Framework 4.0中才有的功能,并且还需要安装RIA Service Toolkit。

总结:

现在我们拥有了2个服务框架,一个基于RPC(远程过程调用(Remote Procedure Call) )机制的WCF和一个基于HTTP的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 解决安全问题。

参考:

http://www.cnblogs.com/developersupport/p/3305458.html

http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html http://www.cnblogs.com/chenxizhang/archive/2011/06/21/2085979.html

最新文章

  1. 使用github远程仓库
  2. Ubuntu 14.04开发环境初始化
  3. 【微信开发】—7200s限制,非数据库
  4. nmake geos
  5. 基于nodejs实现js后端化处理
  6. Java基础之在窗口中绘图——绘制圆弧和椭圆(Sketcher 3 drawing arcs and ellipses)
  7. EventBus的使用,初学EventBus传值
  8. Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
  9. 转 Oracle 12C 之 CDB/PDB用户的创建与对象管理
  10. 《你不知道的JavaScript》整理(六)——强制类型转换
  11. 【iOS】swift init构造器
  12. activiti源码编译
  13. 我人生做过的第一个信息化项目--TIPTOP 5.0 ERP项目
  14. 如果IDEA右上角的tomcat消失了,解决办法
  15. java.sql.SQLException: Prepared or callable statement has more than 2000 parameter markers及解决方案
  16. springboot(八)自定义Filter、自定义Property
  17. 【转】Python中的运算符
  18. Mysql遇到的坑
  19. 有关于《Linux C编程一站式学习》(备份)
  20. PHP获取指定函数定义在哪个文件中及行号

热门文章

  1. 实验12:Problem D: 判断两个圆之间的关系
  2. javamail 发送邮件demo
  3. English Training Material - 02
  4. Android PopupWindow使用之地区、学校选择二级联动
  5. UIlable 属性详用
  6. java调用python代码
  7. 快速与MySQL交互,使用XMAPP打开MySQL数据库,并用shell进行与MySQL交互<Window 10>
  8. MaxMin搜索
  9. MVC如何在单独的类库中添加区域
  10. PHP正则中的捕获组与非捕获组