web service, wcf, wcf rest, web api之间的区别

在.NET Framework中,有不少种技术能够建立基于http协议的服务,譬如说web service, wcf,wcf rest和web api等等。网上有不少的文章教咱们如何开发、使用这几种技术,可是没有说明他们之间的关系,通过一段时间的查阅资料,现将个人理解整理以下。web

web service:json

  1. 基于SOAP,仅仅支持http协议。
  2. 数据传输格式是xml。
  3. 只能部署在iis上面。

wcf:windows

  1. 基于soap,支持多种传输协议,如http,https,tcp,msmq和命名管道等等。
  2. 数据传输格式是xml。
  3. 服务配置比较繁琐。
  4. 能够host在应用程序、iis或者windows service中。

wcf rest:api

  1. 须要配置webHttpBindings节点。
  2. 数据传输格式能够是xml、json、atom等。
  3. 默认支持http get和post操做,能够经过在iis中对可接受的request进行额外的配置来支持更多http操做,譬如说put、delete等等。
  4. 经过webGet方式来传参,则必须指定UriTemplate模版。

web api:浏览器

  1. 是一种轻量级的构建http服务的框架,是在.NET平台下构建restful web service的理想框架。
  2. 和wcf rest service相比,web api提供http的所有特性,如URIs、request/response headers、 caching、versioning、various content format。
  3. 同时支持mvc的特性。
  4. 能host在应用程序和iis中。
  5. 适用于各类不一样的客户端,譬如浏览器、手机app、pc端应用等等。
  6. response被序列化成json、xml或者其余种类的格式。

什么时候使用wcf或者web api:restful

  1. 若是有以下特殊场景:单向消息、消息队列、双工通讯等等,请使用wcf。
  2. 当传输通道不局限于http的时候,譬如更想支持tcp、udp等,推荐使用wcf。
  3. 当要建立面向资源的服务或者但愿支持http的所有的特性的时候,推荐使用web api。
  4. 当须要支持多种客户端时,推荐使用web api。
相关文章
相关标签/搜索