web service, wcf, wcf rest, web api之间的区别
2016-03-30 21:07
337 查看
在.NET Framework中,有很多种技术可以创建基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等。网上有很多的文章教我们如何开发、使用这几种技术,但是没有说明他们之间的关系,经过一段时间的查阅资料,现将我的理解整理如下。
web service:
基于SOAP,仅仅支持http协议。
数据传输格式是xml。
只能部署在iis上面。
wcf:
基于soap,支持多种传输协议,如http,https,tcp,msmq和命名管道等等。
数据传输格式是xml。
服务配置比较繁琐。
可以host在应用程序、iis或者windows service中。
wcf rest:
需要配置webHttpBindings节点。
数据传输格式可以是xml、json、atom等。
默认支持http get和post操作,可以通过在iis中对可接受的request进行额外的配置来支持更多http操作,譬如说put、delete等等。
通过webGet方式来传参,则必须指定UriTemplate模版。
web api:
是一种轻量级的构建http服务的框架,是在.NET平台下构建restful web service的理想框架。
和wcf rest service相比,web api提供http的全部特性,如URIs、request/response headers、 caching、versioning、various content format。
同时支持mvc的特性。
能host在应用程序和iis中。
适用于各种不同的客户端,譬如浏览器、手机app、pc端应用等等。
response被序列化成json、xml或者其他种类的格式。
何时使用wcf或者web api:
如果有如下特殊场景:单向消息、消息队列、双工通信等等,请使用wcf。
当传输通道不局限于http的时候,譬如更想支持tcp、udp等,推荐使用wcf。
当要创建面向资源的服务或者希望支持http的全部的特性的时候,推荐使用web api。
当需要支持多种客户端时,推荐使用web api。
web service:
基于SOAP,仅仅支持http协议。
数据传输格式是xml。
只能部署在iis上面。
wcf:
基于soap,支持多种传输协议,如http,https,tcp,msmq和命名管道等等。
数据传输格式是xml。
服务配置比较繁琐。
可以host在应用程序、iis或者windows service中。
wcf rest:
需要配置webHttpBindings节点。
数据传输格式可以是xml、json、atom等。
默认支持http get和post操作,可以通过在iis中对可接受的request进行额外的配置来支持更多http操作,譬如说put、delete等等。
通过webGet方式来传参,则必须指定UriTemplate模版。
web api:
是一种轻量级的构建http服务的框架,是在.NET平台下构建restful web service的理想框架。
和wcf rest service相比,web api提供http的全部特性,如URIs、request/response headers、 caching、versioning、various content format。
同时支持mvc的特性。
能host在应用程序和iis中。
适用于各种不同的客户端,譬如浏览器、手机app、pc端应用等等。
response被序列化成json、xml或者其他种类的格式。
何时使用wcf或者web api:
如果有如下特殊场景:单向消息、消息队列、双工通信等等,请使用wcf。
当传输通道不局限于http的时候,譬如更想支持tcp、udp等,推荐使用wcf。
当要创建面向资源的服务或者希望支持http的全部的特性的时候,推荐使用web api。
当需要支持多种客户端时,推荐使用web api。
相关文章推荐
- XML
- codeforces 482B Interesting Array
- 关键帧的边缘检测
- iOS图形处理和性能
- AOJ 2249 Road Construction 最短路
- PageBean
- 线段树为什么要开4倍空间
- 关于大型网站技术演进的思考(十五)--网站静态化处理—前后端分离—中(7)
- THashMD5,THashSHA1,THashBobJenkins,TIdHashMessageDigest5的用法
- 前缀、中缀、后缀表达式
- iOS学习之UI初级————UIView的概念属性以及相关方法
- 挖掘DBLP作者合作关系,FP-Growth算法实践(4):挖掘每个会议的核心研究者
- 括号匹配的检验
- codeforces581f(树形dp)
- 码农小汪-剑指Offer之19-栈的压入、弹出序列
- I/O模型(1)
- Oracle 11gR2 rac one node配置后info
- 使用VS软件打开网站在浏览器浏览的方法
- oj 75 贪心算法
- 【C++】《C++标准程序库》小结第十二章-数值