wcf restful服务和WEB API之间的区别

时间:2016-04-06 04:58:54

标签: asp.net-web-api wcf-rest

我现在很长时间都在查询。我们究竟需要使用WEB API,我们应该在哪里使用WCF restful服务。我们想要在WEB API中实现什么,我们能够在WCF Rest中实现。我试图深入研究答案,但我得到了我们需要在wcf中做额外的设置,比如URI模板,合同,端点。但它更多的是设置,但我想知道使用WCF Restful Services背后的真正原因。

1 个答案:

答案 0 :(得分:21)

网络服务

  • 它基于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数据格式。


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中)),请选择WCF,并且还希望在所有其他传输通道时支持HTTP不可用。
  • 如果要通过HTTP创建面向资源的服务,可以使用HTTP的全部功能(如URI,请求/响应标头,缓存,版本控制,各种内容格式),请选择Web API。
  • 如果您希望将服务公开给广泛的客户,包括浏览器,手机,iPhone和平板电脑,请选择Web API。

有关详细信息,请参阅http://www.c-sharpcorner.com/UploadFile/8a67c0/who-is-winner-web-api-or-wcf/