WCF与ASP.NET Web API

时间:2012-02-19 11:08:44

标签: c# wcf asp.net-web-api

我花了几个月时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。

我很难理解配置文件中的所有设置 我不相信环境,但似乎你可以用它做出惊人的东西。

前几天我发现微软推出了一款名为 ASP.NET Web API 的新功能。

我能读到的是一个 RESTful框架,非常易于使用和实现。

现在,我试图找出2个框架之间的主要区别,以及是否应该尝试使用新API转换 WCF服务应用程序。

请有人帮我理解每个人的差异和用法吗?

10 个答案:

答案 0 :(得分:240)

对于我们来说,WCF用于REST的SOAP和Web API。我希望Web API也支持SOAP。我们没有使用WCF的高级功能。以下是MSDN的比较:

enter image description here

答案 1 :(得分:174)

新的ASP.NET Web API是之前WCF Web API项目的延续(虽然有些concepts have changed)。

最初创建WCF是为了启用基于SOAP的服务。对于更简单的RESTful或RPCish服务(想想像jQuery这样的客户端),ASP.NET Web API应该是不错的选择。

答案 2 :(得分:79)

ASP.net Web API是基于HTTP和REST的GET,POST,PUT,DELETE,具有众所周知的ASP.net MVC编程风格和JSON可返回性; web API适用于所有轻量级进程和基于纯HTTP的组件。对于即使是简单或最简单的单一Web服务也可以继续使用WCF,它将带来所有额外的行李。对于ajax或动态调用的轻量级简单服务,WebApi总能满足需求。这与ASP.net MVC并行地完美补充或有所帮助。

查看Scott Hanselman的podcast : Hanselminutes Podcast 264 - This is not your father's WCF - All about the WebAPI with Glenn Block了解更多信息。

答案 3 :(得分:65)

在下面列出的场景中,您应该选择WCF:

  1. 如果您需要发送有关TCP,MSMQ或MIME等协议的数据
  2. 如果使用客户端只知道如何使用SOAP消息
  3. WEB API是用于开发RESTful / HTTP服务的框架。

    有很多客户端不理解像浏览器,HTML5这样的SOAP,在这些情况下,WEB API是一个不错的选择。

    HTTP服务标头指定如何保​​护服务,如何缓存信息,消息体的类型和HTTP正文可以指定任何类型的内容,如HTML而不仅仅是XML作为SOAP服务。

答案 4 :(得分:35)

自从使用到现在为止,我发现WCF和Web API之间存在很多差异。两种技术都适用于不同的场景。所以不可能说哪个更好,这取决于配置和场景。

See this image to understand more differnce

注意:数据不仅仅是我的观点,也是从其他官方网站收集的。

答案 5 :(得分:33)

WCF将为您提供如此多的开箱即用,它甚至无法与任何东西相提并论。除非您想要自己实现(仅举几例)身份验证,授权,加密,排队,限制,可靠消息传递,日志记录,会话等。 WCF不是[仅] Web服务; WCF是SOA的开发平台。

答案 6 :(得分:11)

MSDN上有关于此的比较

WCF and ASP.NET Web API

对我来说,选择是关于客户是谁,他们在哪里?

在公司基于网络和.NET的客户端中:使用带有TCP绑定的WCF(快速通信而不是HTTP)

在公司网络之外,并使用各种技术,如PHP,Python等:使用带有REST的Web API

答案 7 :(得分:9)

业务方面,WebApi缺乏WSDL,因此开发人员应手动记录所有文档。例如,如果WebApi操作返回一个对象列表,那么客户端应该手动创建对象,即WebAPI确实容易出现定义错误。

Webapi的专业版比WCF更轻量级。

答案 8 :(得分:7)

关于声明" WebApi缺乏WSDL"有几种方法可以生成Rest客户端。一种流行的方法是Swagger UI /(Swashbukkle Nuget)。这提供了丰富的界面来理解REST端点的输入和输出模式以及用于测试端点的在线工具。

JSON LD(Json Linked Documents)是另一个新兴标准,它将通过更好的语义暴露JSON模式来进一步改进基于JSON的REST开发人员体验。

答案 9 :(得分:1)

使用wcf,我们可以为多个端点配置和公开相同的服务支持,例如tcp,http。如果您希望您的服务仅基于http,那么最好使用Web API。与wcf相比,Web API的配置非常少,并且比wcf快一点。 Wcf还支持restful服务。如果您有.Net framework 3.5的限制,那么您的选项是wcf。