it-swarm.dev

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

WCF和Web API以及WCF REST和Web Service有什么区别? WCF真的这么复杂,应该使用webapi吗? WebApi是否可以完成所有工作并且不利用其他服务?

41
Aiyoub Amini

.Net框架具有多种技术,可让您创建HTTP服务,例如Web Service,WCF和现在的Web API。互联网上有很多文章可以描述您应该使用谁。

网络服务

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

世界足球联合会

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

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

103
Aiyoub Amini

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

WCF与ASP.NET Web API

WCF服务与ASP.NET Web Api

1
Mohammad