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

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

web service:

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

wcf:

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

wcf rest:

  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:

  1. 如果有如下特殊场景:单向消息、消息队列、双工通信等等,请使用wcf。
  2. 当传输通道不局限于http的时候,譬如更想支持tcp、udp等,推荐使用wcf。
  3. 当要创建面向资源的服务或者希望支持http的全部的特性的时候,推荐使用web api。
  4. 当需要支持多种客户端时,推荐使用web api。
上一篇:Unity multi_compile


下一篇:CAS与LDAP集成