wcf restful 服务与 WEB API 的区别

Difference between wcf restful services and WEB API

我查询了好久now.Where到底要用WEBAPI哪里用WCFrestful服务。无论我们想在 WEB API 中实现什么,我们都能够在 WCF Rest 中实现。我试图深入研究答案,但我知道我们需要在 wcf 中进行额外设置,例如 URI 模板、合同、端点。但更多关于设置,但我想知道使用 WCF Restful 服务的真正原因。

网络服务

  • 它基于 SOAP 和 returns 格式的 XML 数据。
  • 仅支持HTTP协议
  • 它不是开源的,但任何理解 XML 的客户都可以使用。
  • 它只能在 IIS 上托管。


WCF

  • 它也是基于 SOAP 和 returns 格式的 XML 数据。
  • 它是 Web 服务 (ASMX) 的演变,支持各种协议,如 TCP、HTTP、HTTPS、命名管道、MSMQ。
  • WCF 的主要问题是其繁琐且广泛的配置。
  • 它不是开源的,但任何理解 XML 的客户都可以使用。
  • 它可以在应用程序或 IIS 上或使用 window 服务托管。


WCF REST

  • 要将 WCF 用作 WCF REST 服务,您必须启用 webHttpBindings
  • 它分别通过 [WebGet][WebInvoke] 属性支持 HTTP GET 和 POST 动词。
  • 要启用其他 HTTP 动词,您必须在 IIS 中进行一些配置以接受对 .svc 文件的特定动词请求。
  • 使用 WebGet 通过参数传递数据需要配置。必须指定 UriTemplate
  • 支持XML、JSON和ATOM数据格式


网页API

  • 这是用于构建 HTTP 服务的简单方法的新框架。
  • Web API 是开源的,是使用 .NET Framework 构建 RESTful 服务的理想平台。
  • 与 WCF REST 服务不同,它使用 HTTP 的全部功能(如 URI、request/response headers、缓存、版本控制、各种内容格式)。
  • 它还支持 MVC 功能,例如路由、控制器、操作结果、过滤器、模型绑定器、IOC 容器或依赖项注入、单元测试,使其更加简单和健壮。
  • 它可以托管在应用程序内或 IIS 上。
  • 它是一种轻量级架构,适合智能手机等带宽有限的设备。
  • 响应由 Web API 的 MediaTypeFormatter 格式化为 JSON、XML 或您想要添加为 MediaTypeFormatter 的任何格式。


在 WCF 或 Web 之间选择 API

  • 如果您想要创建支持特殊场景(例如单向消息传递、消息 queues、双工通信等)的服务,请选择 WCF。
  • 当您想要创建可以使用可用的快速传输通道的服务时,请选择 WCF,例如 TCP、命名管道,甚至可能是 UDP(在 WCF 4.5 中),并且您还希望在所有其他情况下都支持 HTTP传输通道不可用。
  • 如果您想通过 HTTP 创建 resource-oriented 服务,可以使用 HTTP 的全部功能(如 URI、request/response headers、缓存、版本控制、各种内容格式)。
  • 如果您希望向包括浏览器、手机、iPhone 和平板电脑在内的广泛客户端公开您的服务,请选择 Web API。

详情请参考http://www.c-sharpcorner.com/UploadFile/8a67c0/who-is-winner-web-api-or-wcf/