Asp.net web api wcf restful服务和WEB API之间的区别

Asp.net web api wcf restful服务和WEB API之间的区别,asp.net-web-api,wcf-rest,Asp.net Web Api,Wcf Rest,我已经问了很长时间了。我们到底在哪里需要使用WEB API,在哪里应该使用WCF restful服务。无论我们想在WEB API中实现什么,我们都可以在WCF Rest中实现。我试图挖掘答案,但我发现我们需要在wcf中做额外的设置,比如URI模板、契约、端点。但更多的是关于设置,但我想知道使用WCF Restful服务背后的真正原因。Web服务 它基于SOAP并以XML格式返回数据 它只支持HTTP协议 它不是开源的,但可以被任何理解XML的客户机使用 它只能托管在IIS上 WCF 它还

我已经问了很长时间了。我们到底在哪里需要使用WEB API,在哪里应该使用WCF restful服务。无论我们想在WEB API中实现什么,我们都可以在WCF Rest中实现。我试图挖掘答案,但我发现我们需要在wcf中做额外的设置,比如URI模板、契约、端点。但更多的是关于设置,但我想知道使用WCF Restful服务背后的真正原因。

Web服务

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

WCF

  • 它还基于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
    通过参数传递数据需要配置。必须指定
    UriTemplate
  • 它支持XML、JSON和ATOM数据格式

Web API

  • 这是一个新的框架,用于以简单易用的方式构建HTTP服务
  • WebAPI是开源的,是使用.NET框架构建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、请求/响应头、缓存、版本控制、各种内容格式)时,请选择WebAPI
  • 当您希望将您的服务公开给包括浏览器、手机、iPhone和平板电脑在内的广泛客户机时,请选择WebAPI

有关更多详细信息,您可以参考。

如果您想公开HTTP服务,请使用Web Api,否则请使用WCF可能的重复项,但我没有得到答案,我们仍然可以在WCF Rest中实现我们可以在Web Api中实现的所有功能。那么为什么微软有WEB API,WCF Rest over WebApi的主要缺点是什么?不包括WCF部件上的所有设置请参见abhijit如果您想向广泛的用户公开您的功能,比如在这个技术一夜之间发生变化的趋势世界中,那么WebApi当然是您拥有的重量轻和其他功能的最佳选择。