我花了几个月时间试图掌握WCF背后的概念,最近我开发了我的第一个WCF服务应用程序。
我很难理解配置文件中的所有设置 我不相信环境,但似乎你可以用它做出惊人的东西。
前几天我发现微软推出了一款名为 ASP.NET Web API 的新功能。
我能读到的是一个 RESTful框架,非常易于使用和实现。
现在,我试图找出2个框架之间的主要区别,以及是否应该尝试使用新API转换旧 WCF服务应用程序。
请有人帮我理解每个人的差异和用法吗?
答案 0 :(得分:240)
对于我们来说,WCF用于REST的SOAP和Web API。我希望Web API也支持SOAP。我们没有使用WCF的高级功能。以下是MSDN的比较:
答案 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:
WEB API是用于开发RESTful / HTTP服务的框架。
有很多客户端不理解像浏览器,HTML5这样的SOAP,在这些情况下,WEB API是一个不错的选择。
HTTP服务标头指定如何保护服务,如何缓存信息,消息体的类型和HTTP正文可以指定任何类型的内容,如HTML而不仅仅是XML作为SOAP服务。
答案 4 :(得分:35)
答案 5 :(得分:33)
WCF将为您提供如此多的开箱即用,它甚至无法与任何东西相提并论。除非您想要自己实现(仅举几例)身份验证,授权,加密,排队,限制,可靠消息传递,日志记录,会话等。 WCF不是[仅] Web服务; WCF是SOA的开发平台。
答案 6 :(得分:11)
MSDN上有关于此的比较
对我来说,选择是关于客户是谁,他们在哪里?
在公司基于网络和.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。