wcf RESTful服务和WEB API的区别

Posted

技术标签:

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

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

【问题讨论】:

如果你想公开一个 HTTP 服务使用 Web Api 否则使用 WCF WCF vs ASP.NET Web API的可能重复 【参考方案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 是您拥有的最佳选择,因为它具有轻量级和其他功能。

以上是关于wcf RESTful服务和WEB API的区别的主要内容,如果未能解决你的问题,请参考以下文章

WCF、Web API、WCF REST 和 Web 服务之间的区别?

具有多个参数的 WCF Restful API

带有 Restful API 和循环引用问题的 WCF 服务

Rest API 和 Restful Web 服务之间的区别

webservice和restful的区别

WCF、RESTful Web 服务和自定义身份验证