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

时间:2017-05-04 06:11:25

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

WCF和Web API以及WCF REST和Web服务有什么区别? WCF真的如此复杂以至于应该使用webapi吗? WebApi能否完成所有工作并且不利用其他工作?

2 个答案:

答案 0 :(得分:94)

.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数据格式。

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

参考:http://www.dotnettricks.com
作者:Shailendra Chauhan

答案 1 :(得分:0)

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

WCF vs ASP.NET Web API

WCF Service vs ASP.NET Web Api