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

WCF、Web API、WCF REST和Web服务之间的区别?,rest,web-services,wcf,asp.net-web-api,wcf-web-api,Rest,Web Services,Wcf,Asp.net Web Api,Wcf Web Api,WCF和Web API以及WCF REST和Web服务之间的区别是什么? WCF真的如此复杂以至于应该使用webapi吗? WebApi是否可以完成所有工作而不利用其他功能?Net framework有许多技术,允许您创建HTTP服务,例如Web服务、WCF和现在的Web API。互联网上有很多文章可以描述你应该使用谁。现在,在.NETFramework上构建HTTP服务有很多选择。 在这里,您可以阅读更多内容: Net framework有许多技术,允许您创建HTTP服务,如Web服务、WC

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

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


Net framework有许多技术,允许您创建HTTP服务,如Web服务、WCF和现在的Web API。互联网上有很多文章可以描述你应该使用谁

网络服务
  • 它基于SOAP并以XML形式返回数据
  • 它只支持HTTP协议
  • 它不是开源的,但可以被任何理解xml的客户机使用
  • 它只能托管在IIS上
周转基金
  • 它还基于SOAP并以XML形式返回数据
  • 它是web服务(ASMX)的发展,支持各种协议,如TCP、HTTP、HTTPS、命名管道、MSMQ
  • WCF的主要问题是其冗长而广泛的配置
  • 它不是开源的,但可以被任何理解xml的客户机使用
  • 它可以托管在应用程序中、IIS上或使用Windows服务
WCF休息
  • 要将WCF用作WCF Rest服务,必须启用webHttpBindings
  • 它分别通过[WebGet]和[WebInvoke]属性支持HTTP GET和POST谓词
  • 要启用其他HTTP谓词,您必须在IIS中进行一些配置,以在.svc文件上接受该特定谓词的请求
  • 使用WebGet通过参数传递数据需要配置。必须指定该模板
  • 它支持XML、JSON和ATOM数据格式
Web API
  • 这是一个新的框架,用于以简单易用的方式构建HTTP服务
  • WebAPI是开源的,是在.NET框架上构建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、请求/响应头、缓存、版本控制、各种内容格式)时,请选择WebAPI
  • 当您希望将您的服务公开给包括浏览器、手机、iphone和平板电脑在内的广泛客户机时,请选择WebAPI
参考资料:

作者:Shailendra Chauhan

可能重复的请不要回答重复的问题。相反,投票关闭它们。很好的解释,谢谢你多说一点“在应用程序中使用托管”而不是IIS。在高层次上,我们如何做到这一点?很棒的帖子。为了对可能的解决方案有一个更广泛的看法,我还建议OP查看ServiceStack,例如,它提供了WebAPI和WCF中缺少的一些连接功能。非常好的解释,谢谢。很好的解释