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

Posted

技术标签:

【中文标题】WCF、Web API、WCF REST 和 Web 服务之间的区别?【英文标题】:Difference between WCF, Web API, WCF REST and Web Service? 【发布时间】:2017-10-02 04:13:01 【问题描述】:

WCF 和 Web API 和 WCF REST 和 Web 服务有什么区别? WCF真的这么复杂,应该用webapi吗? WebApi是否能包揽一切工作,不占别人便宜?

【问题讨论】:

WCF vs ASP.NET Web API的可能重复 【参考方案1】:

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可能会描述您应该向谁使用。现在,您有很多选择可以在 .NET 框架上构建 HTTP 服务。 在这里你可以阅读更多:

WCF vs ASP.NET Web API

WCF Service vs ASP.NET Web Api

【讨论】:

请不要回答重复的问题。相反,请投票关闭它们。【参考方案2】:

.Net 框架有许多技术允许您创建 HTTP 服务,例如 Web 服务、WCF 和现在的 Web API。互联网上有很多文章可能会描述您应该向谁使用。

网络服务

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

WCF

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

WCF 休息

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

网络 API

这是用于以简单的方式构建 HTTP 服务的新框架。 Web API 是开源的,是在 .NET Framework 上构建 REST-ful 服务的理想平台。 与 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.dotnettricks.com 作者 : Shailendra Chauhan

【讨论】:

很好的解释,谢谢 您能多谈谈“在应用程序中托管”而不是在 IIS 上。在高层次上,我们如何实现这一目标? 很棒的帖子。为了对可能的解决方案有一个广泛的看法,我还建议 OP 审查例如 ServiceStack,它提供了 WebAPI 和 WCF 都缺少的一些连接功能。 解释得很好,谢谢。 很好的解释

以上是关于WCF、Web API、WCF REST 和 Web 服务之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

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

Web Service vs WCF vs WCF REST vs Web API

Web Service vs WCF vs WCF REST vs Web API

ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?

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

何时使用 WCF REST 和 WEB API