WCF 服务与 ASP.NET Web Api

Posted

技术标签:

【中文标题】WCF 服务与 ASP.NET Web Api【英文标题】:WCF Service vs ASP.NET Web Api 【发布时间】:2012-05-30 15:00:55 【问题描述】:

谁能分享 WCF Service 和 ASP.NET Web Api 之间的实际区别? 在哪种情况下我们必须使用 WCF 服务和 ASP.NET Web Api。

【问题讨论】:

可能重复:***.com/questions/9348639/wcf-vs-asp-net-web-api 【参考方案1】:

WCF Web API 是微软的下一代服务框架。

WCF 服务最初采用通道架构设计,允许自定义用于在系统之间进行通信的协议和传输。虽然这为架构师/开发人员构建可互操作的应用程序提供了极大的灵活性,但其代价是复杂性。配置 WCF 从未如此简单 (IMO)。

最流行的用例 (IMO) 是使用 WCF 服务通过来自浏览器的 ajax 请求为 Web 应用程序提供支持以获取更多数据。此外,自从最初引入 WCF 以来,应用程序使用 http 提供 API 已变得很普遍。

因此,新的 WCF Web API 试图简化服务基础结构并采用 http 传输协议。

如果您正在构建一个新的 Web 应用程序,我会使用新的 Web API。如果我需要使用其他 http 与另一个系统进行通信,我只会考虑使用 WCF 服务。


WCF 通道架构

http://msdn.microsoft.com/en-us/library/ms729840.aspx

WCF 网络 API

http://www.asp.net/web-api

【讨论】:

克雷格在这里几乎一针见血。 WebAPI = 与 POX/JSON 服务有关的任何事情。 WCF 完成其他所有工作,包括 IPC/NetTCP/SOAP/RPC。【参考方案2】:

来自http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspx,关于此问题的精彩帖子:“WCF 仍然是构建服务的框架,您关心传输灵活性。Web API 是构建服务的框架,您关心 HTTP。”

【讨论】:

【参考方案3】:

网络服务

它基于 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。 当您想要创建一个可以使用快速传输通道的服务时选择 WCF,例如 TCP、命名管道,甚至可能是 UDP(在 WCF 4.5 中),并且您还希望在所有其他传输通道不可用时支持 HTTP。 如果您想通过 HTTP 创建面向资源的服务,该服务可以使用 HTTP 的全部功能(如 URI、请求/响应标头、缓存、版本控制、各种内容格式),请选择 Web API。 如果您希望将服务公开给包括浏览器、手机、iphone 和平板电脑在内的各种客户端,请选择 Web API。

【讨论】:

你答案的最后一部分清楚了@Muhammad的概念

以上是关于WCF 服务与 ASP.NET Web Api的主要内容,如果未能解决你的问题,请参考以下文章

强大的自托管服务器的最佳选择:WCF 与 ASP.NET Web Api

WCF 与 ASP.NET Web API [关闭]

asp.net web 方法和 wcf 服务有啥区别?

WCF 和传统的 ASP.NET Web 有啥区别

ASP.NET Web 表单 - 如何异步调用 WCF 异步方法?

在 .NET 中开发新的 RESTful Web 服务——我应该从哪里开始? ASP.NET-MVC,WCF?