在.NET Framework中,有不少种技术能够建立基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等。网上有不少的文章教咱们如何开发、使用这几种技术,可是没有说明他们之间的关系,通过一段时间的查阅资料,现将个人理解整理以下。web
web service:json
- 基于SOAP,仅仅支持http协议。
- 数据传输格式是xml。
- 只能部署在iis上面。
wcf:windows
- 基于soap,支持多种传输协议,如http,https,tcp,msmq和命名管道等等。
- 数据传输格式是xml。
- 服务配置比较繁琐。
- 能够host在应用程序、iis或者windows service中。
wcf rest:api
- 须要配置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:restful
- 若是有以下特殊场景:单向消息、消息队列、双工通讯等等,请使用wcf。
- 当传输通道不局限于http的时候,譬如更想支持tcp、udp等,推荐使用wcf。
- 当要建立面向资源的服务或者但愿支持http的所有的特性的时候,推荐使用web api。
- 当须要支持多种客户端时,推荐使用web api。