Web Service 、WCF 、WCF REST 和 Web API 的区别

Difference between Web Service and WCF and WCF REST and Web API

.net framework

Web Service

  1. 基于 SOAP 并且以 XML 的形式返回数据。
  2. 支持只 HTTP 协议。
  3. 不开源,但可以被任何可以解析 xml 的客户端调用。
  4. 只能在 IIS 上承载。

WCF

  1. 也基于 SOAP 并且以 XML` 的形式返回数据。
  2. web service(ASMX) 的演变而且支持各种协议,如 TCPHTTPHTTPS命名管道MSMQ
  3. WCF 的主要问题是,其繁琐和广泛的配置。
  4. 不开源,但可以被任何可以解析 xml 的客户端调用。
  5. 可以用在应用程序、IIS 或Windows服务上承载。

WCF Rest

  1. 使用 WCF 作为 WCF Rest 的服务,必须启用 webHttpBindings
  2. 分别由 [WebGet] 和 [WebInvoke] 属性支持 HTTP GET 和 POST 动词。
  3. 若要启用其他 HTTP 动词,必须要在IIS中做一些配置让那个特定动词接受.svc 文件的请求。
  4. 使用 WebGet 通过参数形式传递数据需要配置。必须指定 UriTemplate
  5. 支持 XMLJSON 和原子数据格式。

Web API

  1. 一种以更加简易的方式构建 HTTP 服务的新框架。
  2. 开源,是在 .NET 框架中构建 REST-ful 服务的理想平台
    WCF Rest 服务不同,它使用 HTTP (像 Uri,请求/响应标头,缓存,版本控制,各种内容格式) 的全部特点。
  3. 还支持使它变得更简单粗暴MVC 特性,例如:路由、 控制器、 操作结果、 筛选器、 模型绑定,IOC 容器或依赖项注入、 单元测试。
  4. 可以在应用程序或 IIS 上承载。
  5. 拥有轻量级的结构并且对带宽有限的智能手机也支持良好。
  6. 响应结果可以被 Web APIMediaTypeFormatter 格式化为 JSONXML 或任意你需要的格式。

WCF 或 WEB API 该如何选择使用场景?

  1. 创建一个支持特别方案(例如等单向消息传递,消息队列,双工通信等)的服务选择 WCF
  2. 可以使用快速传输通道(如 TCP,命名管道,或甚至是 UDP (WCF 4.5)),并且要支持 HTTP的服务,但所有其他传输通道不可用时,请选择 WCF
  3. 使用 HTTP (像 Uri,请求/响应标头,缓存,版本控制,各种内容格式) 的全部功能创建一个面向资源的服务时,请选择 Web API
  4. 公开您的服务给范围广泛的客户包括浏览器、 手机、 iphone 和平板电脑时,请选择 Web API
分享到