【问题标题】:Difference between wcf restful services and WEB APIwcf RESTful服务和WEB API的区别
【发布时间】:2016-07-26 07:26:10
【问题描述】:

我问了很久。到底哪里需要使用WEB API,哪里需要使用WCF restful services。我们想在 WEB API 中实现什么,我们都可以在 WCF Rest 中实现。我试图深入研究答案,但我知道我们需要在 wcf 中进行额外的设置,例如 URI 模板、合同、端点。但更多的是关于设置,但我想知道使用 WCF Restful Services 背后的真正原因。

【问题讨论】:

标签: asp.net-web-api wcf-rest


【解决方案1】:

网络服务

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


WCF

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


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、请求/响应标头、缓存、版本控制、各种内容格式)。
  • 它还支持 MVC 功能,例如路由、控制器、动作结果、过滤器、模型绑定器、IOC 容器或依赖注入、单元测试,使其更加简单和健壮。
  • 它可以托管在应用程序中或 IIS 上。
  • 它是一种轻量级架构,适用于智能手机等带宽有限的设备。
  • 响应由 Web API 的 MediaTypeFormatter 格式化为 JSON、XML 或您想要添加为 MediaTypeFormatter 的任何格式。


在 WCF 或 Web API 之间进行选择

  • 当您想要创建一个应该支持特殊场景(例如单向消息传递、消息队列、双工通信等)的服务时,请选择 WCF。
  • 如果您想创建一个可以使用快速传输通道(如 TCP、命名管道,甚至可能是 UDP(在 WCF 4.5 中))的服务,并且您还希望在所有其他传输通道时支持 HTTP,请选择 WCF不可用。
  • 如果您想通过 HTTP 创建面向资源的服务,可以使用 HTTP 的全部功能(如 URI、请求/响应标头、缓存、版本控制、各种内容格式),请选择 Web API。
  • 如果您希望将服务公开给各种客户端,包括浏览器、手机、iPhone 和平板电脑,请选择 Web API。

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

【讨论】:

  • 我仍然没有得到答案,我们仍然可以在 WCF Rest 中实现我们可以在 WEB API 中完成的所有事情。那么为什么微软有WEB API,WCF Rest over WebApi的主要缺点是什么?排除WCF部分的所有设置
  • 如果您想向广泛的用户展示您的功能,例如在这个技术在一夜之间发生变化的趋势世界中,那么当然 webApi 是您拥有的最佳选择,因为它具有轻量级和其他功能。
猜你喜欢
  • 2017-10-02
  • 2013-09-24
  • 1970-01-01
  • 2011-08-14
  • 2012-03-16
  • 2014-10-22
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
相关资源
最近更新 更多