WCF、Web API、WCF REST和Web服务的区别是什么?

58

WCF、Web API、WCF REST 和 Web Service 之间有什么区别? WCF真的如此复杂,需要使用Web API吗? 是否Web API 可以完成所有工作而不利用其他技术?


4
可能是WCF vs ASP.NET Web API的重复内容。 - Alexandru Marculescu
2个回答

142

.Net框架拥有多种技术,可用于创建HTTP服务,如Web Service、WCF和Web API。网络上有很多文章可以描述应该使用哪种。

Web Service

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

WCF

  • 它也是基于SOAP,并以XML形式返回数据。
  • 它是Web Service (ASMX) 的演进版本,并支持各种协议,如TCP、HTTP、HTTPS、Named Pipes、MSMQ。
  • WCF的主要问题在于它需要冗长而广泛的配置。
  • 它不是开源的,但可以被任何了解xml的客户端所使用。
  • 它可以在应用程序内部或IIS上或使用Windows服务进行托管。

WCF Rest

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

Web 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.dotnettricks.com
作者: Shailendra Chauhan


1
很好的解释,谢谢。 - Varinder Singh Baidwan
1
你能详细谈谈“在应用程序中托管”而不是在IIS上的情况吗?从高层次来看,我们如何实现这一点? - rakemen
很棒的文章。为了拥有更广泛的解决方案视野,我还建议OP去查看ServiceStack,它提供了一些WebAPI和WCF都缺少的连接功能。 - AFract
讲解得非常清晰,谢谢。 - Farhan Anwar
好的解释 - Dulaj Kulathunga

1
".Net框架有许多技术可以创建HTTP服务,如Web Service、WCF和现在的Web API。互联网上有很多文章可能描述应该使用哪个技术。现在,你有很多选择在.NET框架上构建HTTP服务。 这里可以阅读更多内容: WCF vs ASP.NET Web API WCF Service vs ASP.NET Web Api"

2
请不要回答重复的问题,而是投票关闭它们。 - tom redfern

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