WCF服务与ASP.NET Web Api的区别

10

有人能分享一下WCF Service和ASP.NET Web Api之间的实际区别吗? 在哪种情况下我们需要使用WCF Service和ASP.NET Web Api。


2
可能是重复的问题:https://dev59.com/3Wox5IYBdhLWcg3wOxxi - Filippo Pensalfini
3个回答

14

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

最初设计WCF服务时采用了通道体系结构,允许自定义协议和传输方式来实现系统之间的通信。虽然这给架构师和开发人员在构建可互操作的应用程序方面带来了极大的灵活性,但代价是复杂性。在我看来,配置WCF从来不是简单的事情。

最普遍的用例(在我看来)是使用WCF服务通过浏览器发送ajax请求从而为Web应用程序提供支持以获取其他数据。此外,自WCF最初推出以来,使用http提供API的应用程序已经很常见了。

因此,新的WCF Web API试图简化服务基础设施并假定http传输协议。

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


WCF通道体系结构

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

WCF Web API

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


1
Craig在这里基本上说得很对。WebAPI = 与POX/JSON服务有关的任何事情。WCF则包括IPC/NetTCP/SOAP/RPC等所有其他内容。 - leon.io

11

1

Web Service

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

WCF

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

WCF Rest

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

Web API

这是一种新的框架,可以轻松简便地构建HTTP服务。Web API是一个开源平台,用于构建.NET Framework上的REST风格服务。与WCF Rest服务不同,它使用HTTP的全部功能(如URI、请求/响应头、缓存、版本控制、各种内容格式)。它还支持MVC特性,例如路由、控制器、操作结果、过滤器、模型绑定器、IOC容器或依赖注入、单元测试等,使其更加简单和强大。它可以在应用程序内部或IIS上托管。它是轻量级的架构,适用于带有有限带宽的设备,如智能手机。Web API的MediaTypeFormatter将响应格式化为JSON、XML或您想要添加的任何格式的MediaTypeFormatter。 对于选择WCF还是Web API的人 选择WCF,当您想要创建支持特殊场景(如单向消息、消息队列、双工通信等)的服务时。 选择WCF,当您想要创建一个可以使用快速传输通道(如TCP、命名管道,甚至是UDP(在WCF 4.5中))的服务,并且在所有其他传输通道不可用时也要支持HTTP。 选择Web API,当您想要创建基于HTTP的面向资源的服务,可以使用HTTP的全部功能(如URI、请求/响应头、缓存、版本控制、各种内容格式)。 选择Web API,当您想要将服务暴露给广泛的客户端,包括浏览器、手机、iPhone和平板电脑。

你的回答的最后一部分阐明了概念,@Muhammad。 - Ibrahim Inam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接