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

为了理解配置文件中的所有设置,我花了不少功夫。 我不相信环境,但似乎你可以用它做惊人的事情。

前几天我发现微软推出了一个叫ASP的新东西。NET Web API。

据我所知,这是一个RESTful框架,非常容易使用和实现。

现在,我试图弄清楚这两个框架之间的主要区别是什么,如果我应该尝试用新的API转换我的旧WCF服务应用程序。

有人能帮我了解一下这两种语言的区别和用法吗?


当前回答

新的ASP。NET Web API是之前WCF Web API项目的延续(尽管一些概念已经改变)。

最初创建WCF是为了启用基于soap的服务。对于更简单的RESTful或rpish服务(考虑jQuery这样的客户端)。NET Web API应该是一个很好的选择。

其他回答

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

从业务角度讲,WebApi缺少WSDL,因此开发人员应该手动编写文档。如果,例如,WebApi操作返回一个对象列表,那么客户端应该手动创建对象,也就是说,WebApi确实容易出现定义错误。

Webapi的优点是它比WCF更轻量级。

使用wcf,我们可以为多个端点(如tcp、http)配置和公开相同的服务支持。如果你想让你的服务只基于http,那么最好使用web API。与wcf相比,Web API的配置非常少,比wcf快一点。Wcf还支持restful服务。如果你有。net framework 3.5的限制,那么你可以选择wcf。

关于“WebApi缺少WSDL”这句话,有几种方法来生成Rest客户端。一个流行的方法是Swagger UI / (swashbuckkle Nuget)。这提供了一个丰富的接口来理解REST端点的输入和输出模式,以及用于测试端点的在线工具。

JSON LD (JSON链接文档)是另一个新兴的标准,它将通过更好的语义公开JSON模式来进一步改善基于JSON的REST开发体验。

在MSDN上有一个比较

WCF和ASP。NET Web API

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

在公司内部网络和基于。net的客户端:使用WCF和TCP绑定(比HTTP通信更快)

在公司网络之外,使用不同的技术,如PHP, Python等:使用Web API和REST